summaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-09-19 23:18:09 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-09-19 23:18:09 +0000
commit6ed4ec3e0b1340f96b7c043ef51d1b33bbe85fde (patch)
treedc4d20fe6064752c0bd323187252c77e0a89144b /config
parent9868dae7fc0655bd7ce4a6887d4e6d487690eeed (diff)
downloadgitlab-ce-6ed4ec3e0b1340f96b7c043ef51d1b33bbe85fde.tar.gz
Add latest changes from gitlab-org/gitlab@15-4-stable-eev15.4.0-rc42
Diffstat (limited to 'config')
-rw-r--r--config/application.rb3
-rw-r--r--config/audit_events/types/type_schema.json74
-rw-r--r--config/dependency_decisions.yml6
-rw-r--r--config/environments/development.rb4
-rw-r--r--config/environments/test.rb2
-rw-r--r--config/events/1662373051_Projects__GoogleCloud__ConfigurationController_error_invalid_user.yml26
-rw-r--r--config/events/1662373057_Projects__GoogleCloud__ConfigurationController_error_google_oauth2_not_enabled.yml26
-rw-r--r--config/events/1662373062_Projects__GoogleCloud__ConfigurationController_error_feature_flag_not_enabled.yml26
-rw-r--r--config/events/1662373069_Projects__GoogleCloud__ConfigurationController_render_page.yml26
-rw-r--r--config/events/1662373075_Projects__GoogleCloud__ServiceAccountsController_error_invalid_user.yml26
-rw-r--r--config/events/1662373081_Projects__GoogleCloud__ServiceAccountsController_error_google_oauth2_not_enabled.yml26
-rw-r--r--config/events/1662373087_Projects__GoogleCloud__ServiceAccountsController_error_feature_flag_not_enabled.yml26
-rw-r--r--config/events/1662373092_Projects__GoogleCloud__ServiceAccountsController_render_form.yml26
-rw-r--r--config/events/1662373098_Projects__GoogleCloud__ServiceAccountsController_error_no_gcp_projects.yml26
-rw-r--r--config/events/1662373103_Projects__GoogleCloud__ServiceAccountsController_create_service_account.yml26
-rw-r--r--config/events/1662373109_Projects__GoogleCloud__ServiceAccountsController_error_google_api.yml26
-rw-r--r--config/events/1662373114_Projects__GoogleCloud__GcpRegionsController_error_invalid_user.yml26
-rw-r--r--config/events/1662373120_Projects__GoogleCloud__GcpRegionsController_error_google_oauth2_not_enabled.yml26
-rw-r--r--config/events/1662373125_Projects__GoogleCloud__GcpRegionsController_error_feature_flag_not_enabled.yml26
-rw-r--r--config/events/1662373131_Projects__GoogleCloud__GcpRegionsController_render_form.yml26
-rw-r--r--config/events/1662373136_Projects__GoogleCloud__GcpRegionsController_configure_region.yml26
-rw-r--r--config/events/1662373142_Projects__GoogleCloud__GcpRegionsController_error_create.yml26
-rw-r--r--config/events/1662373147_Projects__GoogleCloud__RevokeOauthController_error_invalid_user.yml26
-rw-r--r--config/events/1662373153_Projects__GoogleCloud__RevokeOauthController_error_google_oauth2_not_enabled.yml26
-rw-r--r--config/events/1662373158_Projects__GoogleCloud__RevokeOauthController_error_feature_flag_not_enabled.yml26
-rw-r--r--config/events/1662373164_Projects__GoogleCloud__RevokeOauthController_revoke_oauth.yml26
-rw-r--r--config/events/1662373170_Projects__GoogleCloud__DeploymentsController_error_invalid_user.yml26
-rw-r--r--config/events/1662373175_Projects__GoogleCloud__DeploymentsController_error_google_oauth2_not_enabled.yml26
-rw-r--r--config/events/1662373181_Projects__GoogleCloud__DeploymentsController_error_feature_flag_not_enabled.yml26
-rw-r--r--config/events/1662373187_Projects__GoogleCloud__DeploymentsController_render_page.yml26
-rw-r--r--config/events/1662373192_Projects__GoogleCloud__DeploymentsController_generate_cloudrun_pipeline.yml26
-rw-r--r--config/events/1662373198_Projects__GoogleCloud__DeploymentsController_error_enable_cloudrun_services.yml26
-rw-r--r--config/events/1662373204_Projects__GoogleCloud__DeploymentsController_error_generate_cloudrun_pipeline.yml26
-rw-r--r--config/events/1662373209_Projects__GoogleCloud__DeploymentsController_error_google_api.yml26
-rw-r--r--config/events/1662373215_Projects__GoogleCloud__DatabasesController_error_invalid_user.yml26
-rw-r--r--config/events/1662373220_Projects__GoogleCloud__DatabasesController_error_google_oauth2_not_enabled.yml26
-rw-r--r--config/events/1662373226_Projects__GoogleCloud__DatabasesController_error_feature_flag_not_enabled.yml26
-rw-r--r--config/events/1662373232_Projects__GoogleCloud__DatabasesController_render_page.yml26
-rw-r--r--config/events/1662373237_Projects__GoogleCloud__DatabasesController_render_cloudsql_form.yml26
-rw-r--r--config/events/1662373243_Projects__GoogleCloud__DatabasesController_create_cloudsql_instance.yml26
-rw-r--r--config/events/1662373249_Projects__GoogleCloud__DatabasesController_error_enable_cloudsql_services.yml26
-rw-r--r--config/events/1662373254_Projects__GoogleCloud__DatabasesController_error_create_cloudsql_instance.yml26
-rw-r--r--config/feature_categories.yml3
-rw-r--r--config/feature_flags/development/add_timing_to_certain_cache_actions.yml8
-rw-r--r--config/feature_flags/development/always_async_project_authorizations_refresh.yml2
-rw-r--r--config/feature_flags/development/arkose_labs_signup_challenge.yml (renamed from config/feature_flags/development/auto_ban_user_on_excessive_projects_download.yml)8
-rw-r--r--config/feature_flags/development/block_emails_with_failures.yml8
-rw-r--r--config/feature_flags/development/block_weak_passwords.yml8
-rw-r--r--config/feature_flags/development/bypass_batch_pop_queueing_for_merge_trains.yml8
-rw-r--r--config/feature_flags/development/cache_issue_sums.yml (renamed from config/feature_flags/development/seat_count_alerts.yml)10
-rw-r--r--config/feature_flags/development/ci_limit_active_jobs_early.yml (renamed from config/feature_flags/development/ci_new_public_oss_cost_factor.yml)8
-rw-r--r--config/feature_flags/development/ci_limit_complete_hierarchy_size.yml8
-rw-r--r--config/feature_flags/development/ci_project_pipeline_config_refactoring.yml (renamed from config/feature_flags/development/ci_variable_for_group_gitlab_deploy_token.yml)10
-rw-r--r--config/feature_flags/development/ci_requeue_with_dag_object_hierarchy.yml8
-rw-r--r--config/feature_flags/development/ci_stop_expanding_file_vars_for_runners.yml2
-rw-r--r--config/feature_flags/development/ci_update_unlocked_pipeline_artifacts.yml8
-rw-r--r--config/feature_flags/development/ci_variables_refactoring_to_variable.yml8
-rw-r--r--config/feature_flags/development/container_registry_legacy_authentication_for_deploy_tokens.yml8
-rw-r--r--config/feature_flags/development/contribution_analytics_optimized_base_query.yml2
-rw-r--r--config/feature_flags/development/convert_diff_to_utf8_with_replacement_symbol.yml8
-rw-r--r--config/feature_flags/development/cube_api_proxy.yml (renamed from config/feature_flags/development/track_agent_users_using_ci_tunnel.yml)8
-rw-r--r--config/feature_flags/development/dora_configuration.yml8
-rw-r--r--config/feature_flags/development/draft_quick_action_non_toggle.yml (renamed from config/feature_flags/development/improved_mergeability_checks.yml)8
-rw-r--r--config/feature_flags/development/epic_widget_edit_confirmation.yml8
-rw-r--r--config/feature_flags/development/error_tracking_sentry_limit.yml8
-rw-r--r--config/feature_flags/development/escape_gitaly_refs.yml (renamed from config/feature_flags/development/tag_list_keyset_pagination.yml)8
-rw-r--r--config/feature_flags/development/extract_mr_diff_deletions.yml (renamed from config/feature_flags/development/group_ip_restrictions_allow_global.yml)8
-rw-r--r--config/feature_flags/development/gitlab_shell_jwt_token.yml (renamed from config/feature_flags/development/api_caching_branches.yml)8
-rw-r--r--config/feature_flags/development/global_search_custom_slis.yml8
-rw-r--r--config/feature_flags/development/global_search_error_rate_sli.yml8
-rw-r--r--config/feature_flags/development/graphql_job_app.yml (renamed from config/feature_flags/development/ci_docker_image_pull_policy.yml)10
-rw-r--r--config/feature_flags/development/graphql_keyset_pagination_without_next_page_query.yml8
-rw-r--r--config/feature_flags/development/group_level_protected_environment_settings_permission.yml8
-rw-r--r--config/feature_flags/development/group_overview_tabs_vue.yml8
-rw-r--r--config/feature_flags/development/hash_oauth_secrets.yml8
-rw-r--r--config/feature_flags/development/highlight_diffs_renewable_expiration.yml8
-rw-r--r--config/feature_flags/development/highlight_diffs_short_renewable_expiration.yml8
-rw-r--r--config/feature_flags/development/include_groups_from_group_shares_in_group_transfer_locations.yml (renamed from config/feature_flags/development/include_groups_from_group_shares_in_project_transfer_locations.yml)8
-rw-r--r--config/feature_flags/development/incubation_5mp_google_cloud.yml2
-rw-r--r--config/feature_flags/development/invitation_flow_enforcement_setting.yml8
-rw-r--r--config/feature_flags/development/markdown_dollar_math.yml (renamed from config/feature_flags/development/rebalance_issues.yml)10
-rw-r--r--config/feature_flags/development/maven_central_request_forwarding.yml8
-rw-r--r--config/feature_flags/development/mergeability_checks_logger.yml (renamed from config/feature_flags/development/async_after_approval.yml)8
-rw-r--r--config/feature_flags/development/ml_experiment_tracking.yml8
-rw-r--r--config/feature_flags/development/new_navbar_layout.yml (renamed from config/feature_flags/development/s3_omit_multipart_urls.yml)10
-rw-r--r--config/feature_flags/development/observability_group_tab.yml8
-rw-r--r--config/feature_flags/development/order_builds_for_group_runner.yml8
-rw-r--r--config/feature_flags/development/prevent_outdated_deployment_jobs.yml8
-rw-r--r--config/feature_flags/development/process_issue_closure_in_background.yml8
-rw-r--r--config/feature_flags/development/product_intelligence_database_event_tracking.yml1
-rw-r--r--config/feature_flags/development/read_package_policy_rule.yml (renamed from config/feature_flags/development/shimo_integration.yml)10
-rw-r--r--config/feature_flags/development/rely_on_protected_branches_cache.yml8
-rw-r--r--config/feature_flags/development/remove_extra_primary_submenu_options.yml (renamed from config/feature_flags/development/datadog_integration_logs_collection.yml)10
-rw-r--r--config/feature_flags/development/remove_user_attributes_groups.yml (renamed from config/feature_flags/development/mr_attention_requests.yml)8
-rw-r--r--config/feature_flags/development/remove_user_attributes_projects.yml (renamed from config/feature_flags/development/etag_merge_request_diff_batches.yml)8
-rw-r--r--config/feature_flags/development/report_artifact_build_completed_metrics_on_build_completion.yml8
-rw-r--r--config/feature_flags/development/restyle_login_page.yml2
-rw-r--r--config/feature_flags/development/rpm_packages.yml8
-rw-r--r--config/feature_flags/development/run_pipeline_graphql.yml (renamed from config/feature_flags/development/execute_build_hooks_inline.yml)10
-rw-r--r--config/feature_flags/development/skip_checking_namespace_in_query.yml8
-rw-r--r--config/feature_flags/development/track_work_items_activity.yml2
-rw-r--r--config/feature_flags/development/ultimate_feature_removal_banner.yml8
-rw-r--r--config/feature_flags/development/usage_data_ci_i_testing_test_report_uploaded.yml8
-rw-r--r--config/feature_flags/development/usage_data_i_code_review_user_gitlab_cli_api_request.yml8
-rw-r--r--config/feature_flags/development/usage_data_i_code_review_user_jetbrains_api_request.yml8
-rw-r--r--config/feature_flags/development/usage_quotas_for_all_editions.yml8
-rw-r--r--config/feature_flags/development/use_gitaly_pagination_for_refs.yml8
-rw-r--r--config/feature_flags/development/use_pipeline_wizard_for_pages.yml4
-rw-r--r--config/feature_flags/development/use_vsa_aggregated_tables.yml8
-rw-r--r--config/feature_flags/development/user_destroy_with_limited_execution_time_worker.yml (renamed from config/feature_flags/development/auto_ban_user_on_namespace_excessive_projects_download.yml)10
-rw-r--r--config/feature_flags/development/vscode_web_ide.yml (renamed from config/feature_flags/development/traversal_ids_btree.yml)10
-rw-r--r--config/feature_flags/development/webui_members_inherited_users.yml (renamed from config/feature_flags/development/inactive_projects_deletion.yml)10
-rw-r--r--config/feature_flags/development/wiki_find_page_with_normal_repository_rpcs.yml8
-rw-r--r--config/feature_flags/experiment/combined_registration.yml8
-rw-r--r--config/feature_flags/ops/ci_partitioning_analyze_queries.yml (renamed from config/feature_flags/ops/database_async_index_destruction.yml)10
-rw-r--r--config/feature_flags/ops/detect_cross_database_modification.yml (renamed from config/feature_flags/development/detect_cross_database_modification.yml)3
-rw-r--r--config/feature_flags/ops/github_importer_attachments_import.yml8
-rw-r--r--config/feature_flags/ops/increase_branch_cache_expiry.yml8
-rw-r--r--config/feature_flags/ops/query_analyzer_gitlab_schema_metrics.yml (renamed from config/feature_flags/development/query_analyzer_gitlab_schema_metrics.yml)3
-rw-r--r--config/feature_flags/undefined/gitaly_simplify_find_local_branches_response.yml8
-rw-r--r--config/gitlab.yml.example16
-rw-r--r--config/helpers/evaluate_module_from_source.js37
-rw-r--r--config/initializers/01_secret_token.rb7
-rw-r--r--config/initializers/1_settings.rb49
-rw-r--r--config/initializers/7_redis.rb15
-rw-r--r--config/initializers/active_record_keyset_pagination.rb26
-rw-r--r--config/initializers/doorkeeper.rb4
-rw-r--r--config/initializers/excon.rb8
-rw-r--r--config/initializers/gitlab_experiment.rb2
-rw-r--r--config/initializers/load_balancing.rb12
-rw-r--r--config/initializers/lookbook.rb14
-rw-r--r--config/initializers/microsoft_graph_mailer.rb14
-rw-r--r--config/initializers/omniauth.rb11
-rw-r--r--config/initializers/postgres_partitioning.rb67
-rw-r--r--config/initializers/sidekiq.rb1
-rw-r--r--config/initializers/sidekiq_cluster.rb29
-rw-r--r--config/initializers/wikicloth_redos_patch.rb41
-rw-r--r--config/initializers/wikicloth_ruby_3_patch.rb272
-rw-r--r--config/initializers/zz_metrics.rb4
-rw-r--r--config/initializers_before_autoloader/000_inflections.rb1
-rw-r--r--config/initializers_before_autoloader/002_sidekiq.rb2
-rw-r--r--config/metrics/aggregates/code_review.yml16
-rw-r--r--config/metrics/counts_28d/20210216174910_analytics_unique_visits_for_any_target_monthly.yml1
-rw-r--r--config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml148
-rwxr-xr-xconfig/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml9
-rw-r--r--config/metrics/counts_28d/20210216184850_deploy_token_packages_total_unique_counts_monthly.yml4
-rw-r--r--config/metrics/counts_28d/20210216184937_user_packages_total_unique_counts_monthly.yml4
-rw-r--r--config/metrics/counts_28d/20220131143209_i_quickactions_attention_monthly.yml4
-rw-r--r--config/metrics/counts_28d/20220131153230_i_quickactions_remove_attention_monthly.yml4
-rw-r--r--config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_commit_monthly.yml27
-rw-r--r--config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_monthly.yml27
-rw-r--r--config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_mr_monthly.yml27
-rw-r--r--config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_monthly.yml27
-rw-r--r--config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_monthly.yml27
-rw-r--r--config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_monthly.yml27
-rw-r--r--config/metrics/counts_28d/20220531145023_p_ci_templates_katalon_monthly.yml25
-rw-r--r--config/metrics/counts_28d/20220627133135_i_code_review_submit_review_approve_monthly.yml25
-rw-r--r--config/metrics/counts_28d/20220627134108_i_code_review_submit_review_comment_monthly.yml25
-rw-r--r--config/metrics/counts_28d/20220816202928_bulk_import_entities_group_failed.yml26
-rw-r--r--config/metrics/counts_28d/20220816202928_bulk_import_entities_group_finished.yml26
-rw-r--r--config/metrics/counts_28d/20220816202928_bulk_import_entities_group_timeout.yml26
-rw-r--r--config/metrics/counts_28d/20220823125645_bulk_import_entities_project_timeout.yml26
-rw-r--r--config/metrics/counts_28d/20220823125924_bulk_import_entities_project_failed.yml26
-rw-r--r--config/metrics/counts_28d/20220823130209_bulk_import_entities_project_finished.yml26
-rw-r--r--config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml26
-rw-r--r--config/metrics/counts_28d/20220825232557_count_user_auth.yml24
-rw-r--r--config/metrics/counts_28d/20220830104453_i_code_review_merge_request_widget_license_compliance_view_monthly.yml25
-rw-r--r--config/metrics/counts_28d/20220830104500_i_code_review_merge_request_widget_license_compliance_full_report_clicked_monthly.yml25
-rw-r--r--config/metrics/counts_28d/20220830104507_i_code_review_merge_request_widget_license_compliance_expand_monthly.yml25
-rw-r--r--config/metrics/counts_28d/20220830104514_i_code_review_merge_request_widget_license_compliance_expand_success_monthly.yml25
-rw-r--r--config/metrics/counts_28d/20220830104521_i_code_review_merge_request_widget_license_compliance_expand_warning_monthly.yml25
-rw-r--r--config/metrics/counts_28d/20220830104528_i_code_review_merge_request_widget_license_compliance_expand_failed_monthly.yml25
-rw-r--r--config/metrics/counts_28d/20220905210112_users_visiting_environments_pages_monthly.yml26
-rw-r--r--config/metrics/counts_28d/20220907080630_i_quickactions_timeline_monthly.yml27
-rw-r--r--config/metrics/counts_28d/20220907084347_p_ci_templates_implicit_security_sast_iac_monthly.yml26
-rw-r--r--config/metrics/counts_28d/20220907102714_p_ci_templates_implicit_jobs_sast_iac_monthly.yml26
-rw-r--r--config/metrics/counts_28d/20220907202807_p_ci_templates_jobs_dependency_scanning_latest_monthly.yml25
-rw-r--r--config/metrics/counts_28d/20220907212005_p_ci_templates_security_container_scanning_latest_monthly.yml25
-rw-r--r--config/metrics/counts_28d/20220907215635_p_ci_templates_jobs_license_scanning_latest_monthly.yml25
-rw-r--r--config/metrics/counts_28d/20220912161240_p_ci_templates_implicit_jobs_dependency_scanning_latest_monthly.yml25
-rw-r--r--config/metrics/counts_28d/20220912162308_p_ci_templates_implicit_jobs_license_scanning_latest_monthly.yml25
-rw-r--r--config/metrics/counts_28d/20220912162752_p_ci_templates_implicit_security_container_scanning_latest_monthly.yml25
-rw-r--r--config/metrics/counts_7d/20210216184452_code_review_total_unique_counts_weekly.yml172
-rwxr-xr-xconfig/metrics/counts_7d/20210216184557_ci_templates_total_unique_counts_weekly.yml4
-rw-r--r--config/metrics/counts_7d/20210216184848_deploy_token_packages_total_unique_counts_weekly.yml4
-rw-r--r--config/metrics/counts_7d/20210216184935_user_packages_total_unique_counts_weekly.yml4
-rw-r--r--config/metrics/counts_7d/20220131143201_i_quickactions_attention_weekly.yml4
-rw-r--r--config/metrics/counts_7d/20220131153223_i_quickactions_remove_attention_weekly.yml4
-rw-r--r--config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_commit_weekly.yml27
-rw-r--r--config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_mr_weekly.yml27
-rw-r--r--config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_weekly.yml27
-rw-r--r--config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_weekly.yml27
-rw-r--r--config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_weekly.yml27
-rw-r--r--config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_weekly.yml27
-rw-r--r--config/metrics/counts_7d/20220531145014_p_ci_templates_katalon_weekly.yml25
-rw-r--r--config/metrics/counts_7d/20220627133128_i_code_review_submit_review_approve_weekly.yml25
-rw-r--r--config/metrics/counts_7d/20220627134100_i_code_review_submit_review_comment_weekly.yml25
-rw-r--r--config/metrics/counts_7d/20220825142528_i_testing_test_report_uploaded_weekly.yml26
-rw-r--r--config/metrics/counts_7d/20220830104410_i_code_review_merge_request_widget_license_compliance_view_weekly.yml25
-rw-r--r--config/metrics/counts_7d/20220830104418_i_code_review_merge_request_widget_license_compliance_full_report_clicked_weekly.yml25
-rw-r--r--config/metrics/counts_7d/20220830104424_i_code_review_merge_request_widget_license_compliance_expand_weekly.yml25
-rw-r--r--config/metrics/counts_7d/20220830104431_i_code_review_merge_request_widget_license_compliance_expand_success_weekly.yml25
-rw-r--r--config/metrics/counts_7d/20220830104438_i_code_review_merge_request_widget_license_compliance_expand_warning_weekly.yml25
-rw-r--r--config/metrics/counts_7d/20220830104446_i_code_review_merge_request_widget_license_compliance_expand_failed_weekly.yml25
-rw-r--r--config/metrics/counts_7d/20220907080626_i_quickactions_timeline_weekly.yml27
-rw-r--r--config/metrics/counts_7d/20220907084343_p_ci_templates_implicit_security_sast_iac_weekly.yml26
-rw-r--r--config/metrics/counts_7d/20220907102710_p_ci_templates_implicit_jobs_sast_iac_weekly.yml26
-rw-r--r--config/metrics/counts_7d/20220907202801_p_ci_templates_jobs_dependency_scanning_latest_weekly.yml25
-rw-r--r--config/metrics/counts_7d/20220907211959_p_ci_templates_security_container_scanning_latest_weekly.yml25
-rw-r--r--config/metrics/counts_7d/20220907215629_p_ci_templates_jobs_license_scanning_latest_weekly.yml25
-rw-r--r--config/metrics/counts_7d/20220912161233_p_ci_templates_implicit_jobs_dependency_scanning_latest_weekly.yml25
-rw-r--r--config/metrics/counts_7d/20220912162301_p_ci_templates_implicit_jobs_license_scanning_latest_weekly.yml25
-rw-r--r--config/metrics/counts_7d/20220912162745_p_ci_templates_implicit_security_container_scanning_latest_weekly.yml25
-rw-r--r--config/metrics/counts_all/20210216175043_merge_request_create.yml4
-rw-r--r--config/metrics/counts_all/20210216180242_web_ide_commits.yml5
-rw-r--r--config/metrics/counts_all/20210216180244_web_ide_views.yml5
-rw-r--r--config/metrics/counts_all/20210216180246_web_ide_merge_requests.yml5
-rw-r--r--config/metrics/counts_all/20210216180248_web_ide_previews.yml5
-rw-r--r--config/metrics/counts_all/20210216180250_web_ide_terminals.yml5
-rw-r--r--config/metrics/counts_all/20210216180252_web_ide_pipelines.yml5
-rw-r--r--config/metrics/counts_all/20210216180740_design_management_designs_create.yml4
-rw-r--r--config/metrics/counts_all/20210216180741_design_management_designs_update.yml4
-rw-r--r--config/metrics/counts_all/20210216180743_design_management_designs_delete.yml4
-rw-r--r--config/metrics/counts_all/20210216182006_source_code_pushes.yml2
-rw-r--r--config/metrics/counts_all/20210216182855_package_events_i_package_composer_delete_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182857_package_events_i_package_composer_pull_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182859_package_events_i_package_composer_push_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182901_package_events_i_package_conan_delete_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182903_package_events_i_package_conan_pull_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182905_package_events_i_package_conan_push_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182913_package_events_i_package_debian_delete_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182915_package_events_i_package_debian_pull_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182919_package_events_i_package_delete_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182921_package_events_i_package_delete_package_by_deploy_token.yml4
-rw-r--r--config/metrics/counts_all/20210216182923_package_events_i_package_delete_package_by_guest.yml4
-rw-r--r--config/metrics/counts_all/20210216182925_package_events_i_package_delete_package_by_user.yml4
-rw-r--r--config/metrics/counts_all/20210216182927_package_events_i_package_generic_delete_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182929_package_events_i_package_generic_pull_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182931_package_events_i_package_generic_push_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182933_package_events_i_package_golang_delete_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182934_package_events_i_package_golang_pull_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182936_package_events_i_package_golang_push_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182938_package_events_i_package_maven_delete_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182940_package_events_i_package_maven_pull_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182942_package_events_i_package_maven_push_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182944_package_events_i_package_npm_delete_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182946_package_events_i_package_npm_pull_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182948_package_events_i_package_npm_push_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182950_package_events_i_package_nuget_delete_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182952_package_events_i_package_nuget_pull_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182954_package_events_i_package_nuget_push_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182956_package_events_i_package_pull_package.yml4
-rw-r--r--config/metrics/counts_all/20210216182958_package_events_i_package_pull_package_by_deploy_token.yml4
-rw-r--r--config/metrics/counts_all/20210216183000_package_events_i_package_pull_package_by_guest.yml4
-rw-r--r--config/metrics/counts_all/20210216183002_package_events_i_package_pull_package_by_user.yml4
-rw-r--r--config/metrics/counts_all/20210216183004_package_events_i_package_push_package.yml4
-rw-r--r--config/metrics/counts_all/20210216183005_package_events_i_package_push_package_by_deploy_token.yml4
-rw-r--r--config/metrics/counts_all/20210216183007_package_events_i_package_push_package_by_guest.yml4
-rw-r--r--config/metrics/counts_all/20210216183009_package_events_i_package_push_package_by_user.yml4
-rw-r--r--config/metrics/counts_all/20210216183011_package_events_i_package_pypi_delete_package.yml4
-rw-r--r--config/metrics/counts_all/20210216183013_package_events_i_package_pypi_pull_package.yml4
-rw-r--r--config/metrics/counts_all/20210216183015_package_events_i_package_pypi_push_package.yml4
-rw-r--r--config/metrics/counts_all/20210303153000_package_events_i_package_rubygems_delete_package.yml4
-rw-r--r--config/metrics/counts_all/20210303153002_package_events_i_package_rubygems_pull_package.yml4
-rw-r--r--config/metrics/counts_all/20210303153004_package_events_i_package_rubygems_push_package.yml4
-rw-r--r--config/metrics/counts_all/20210410012200_package_events_i_package_terraform_module_delete_package.yml4
-rw-r--r--config/metrics/counts_all/20210410012202_package_events_i_package_terraform_module_pull_package.yml4
-rw-r--r--config/metrics/counts_all/20210410012204_package_events_i_package_terraform_module_push_package.yml4
-rw-r--r--config/metrics/counts_all/20210517073546_package_events_i_package_helm_pull_package.yml4
-rw-r--r--config/metrics/counts_all/20210625095025_package_events_i_package_helm_push_package.yml4
-rw-r--r--config/metrics/counts_all/20210709191135_package_events_i_package_nuget_pull_symbol_package.yml4
-rw-r--r--config/metrics/counts_all/20210709191829_package_events_i_package_nuget_push_symbol_package.yml4
-rw-r--r--config/metrics/counts_all/20210709210941_package_events_i_package_pull_symbol_package.yml4
-rw-r--r--config/metrics/counts_all/20210709211058_package_events_i_package_pull_symbol_package_by_deploy_token.yml4
-rw-r--r--config/metrics/counts_all/20210709211248_package_events_i_package_pull_symbol_package_by_guest.yml4
-rw-r--r--config/metrics/counts_all/20210709211341_package_events_i_package_pull_symbol_package_by_user.yml4
-rw-r--r--config/metrics/counts_all/20210709211439_package_events_i_package_push_symbol_package.yml4
-rw-r--r--config/metrics/counts_all/20210709211636_package_events_i_package_push_symbol_package_by_deploy_token.yml4
-rw-r--r--config/metrics/counts_all/20210709211731_package_events_i_package_push_symbol_package_by_guest.yml4
-rw-r--r--config/metrics/counts_all/20210709211831_package_events_i_package_push_symbol_package_by_user.yml4
-rw-r--r--config/metrics/counts_all/20210723075525_diff_searches.yml6
-rw-r--r--config/metrics/counts_all/20220122022215_web_ide_previews_success.yml5
-rw-r--r--config/metrics/counts_all/20220314362302_service_usage_data_download_payload.yml4
-rw-r--r--config/metrics/counts_all/20220825115210_i_merge_request_widget_license_compliance_count_view.yml24
-rw-r--r--config/metrics/counts_all/20220825115217_i_merge_request_widget_license_compliance_count_full_report_clicked.yml24
-rw-r--r--config/metrics/counts_all/20220825115224_i_merge_request_widget_license_compliance_count_expand.yml24
-rw-r--r--config/metrics/counts_all/20220825115230_i_merge_request_widget_license_compliance_count_expand_success.yml24
-rw-r--r--config/metrics/counts_all/20220825115236_i_merge_request_widget_license_compliance_count_expand_warning.yml24
-rw-r--r--config/metrics/counts_all/20220825115242_i_merge_request_widget_license_compliance_count_expand_failed.yml24
-rw-r--r--config/metrics/counts_all/20220825232556_count_user_auth.yml23
-rw-r--r--config/no_todos_messages.yml11
-rw-r--r--config/object_store_settings.rb17
-rw-r--r--config/plugins/graphql_known_operations_plugin.js19
-rw-r--r--config/routes.rb7
-rw-r--r--config/routes/group.rb4
-rw-r--r--config/routes/help.rb1
-rw-r--r--config/routes/project.rb5
-rw-r--r--config/routes/uploads.rb7
-rw-r--r--config/settings.rb6
-rw-r--r--config/sidekiq_queues.yml14
-rw-r--r--config/weak_password_digests.yml4550
-rw-r--r--config/webpack.config.js36
302 files changed, 8818 insertions, 454 deletions
diff --git a/config/application.rb b/config/application.rb
index d28967f2966..03c8eadc4b0 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -264,6 +264,7 @@ module Gitlab
config.assets.precompile << "page_bundles/cycle_analytics.css"
config.assets.precompile << "page_bundles/dashboard_projects.css"
config.assets.precompile << "page_bundles/dev_ops_reports.css"
+ config.assets.precompile << "page_bundles/editor.css"
config.assets.precompile << "page_bundles/environments.css"
config.assets.precompile << "page_bundles/epics.css"
config.assets.precompile << "page_bundles/error_tracking_details.css"
@@ -292,10 +293,12 @@ module Gitlab
config.assets.precompile << "page_bundles/productivity_analytics.css"
config.assets.precompile << "page_bundles/profile.css"
config.assets.precompile << "page_bundles/profile_two_factor_auth.css"
+ config.assets.precompile << "page_bundles/profiles/preferences.css"
config.assets.precompile << "page_bundles/project.css"
config.assets.precompile << "page_bundles/projects_edit.css"
config.assets.precompile << "page_bundles/reports.css"
config.assets.precompile << "page_bundles/roadmap.css"
+ config.assets.precompile << "page_bundles/requirements.css"
config.assets.precompile << "page_bundles/runner_details.css"
config.assets.precompile << "page_bundles/security_dashboard.css"
config.assets.precompile << "page_bundles/security_discover.css"
diff --git a/config/audit_events/types/type_schema.json b/config/audit_events/types/type_schema.json
new file mode 100644
index 00000000000..0d5d79bc4c4
--- /dev/null
+++ b/config/audit_events/types/type_schema.json
@@ -0,0 +1,74 @@
+{
+ "$schema": "http://json-schema.org/draft-06/schema#",
+ "$id": "https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/audit_events/types/type_schema.json",
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Unique identifying name for the type of audit event"
+ },
+ "description": {
+ "type": "string",
+ "description": "A human-readable description of how this event is triggered"
+ },
+ "introduced_by_issue": {
+ "type": "string",
+ "format": "uri",
+ "description": "URL to GitLab issue that added this type of audit event",
+ "qt-uri-protocols": [
+ "https"
+ ]
+ },
+ "introduced_by_mr": {
+ "type": "string",
+ "format": "uri",
+ "description": "URL to GitLab merge request that added this type of audit event",
+ "qt-uri-protocols": [
+ "https"
+ ]
+ },
+ "group": {
+ "type": "string",
+ "description": "Name of the group that introduced this audit event. For example, manage::compliance"
+ },
+ "milestone": {
+ "type": "string",
+ "description": "Milestone that introduced this audit event type. For example, 15.8",
+ "pattern": "^[0-9]+\\.[0-9]+$"
+ },
+ "saved_to_database": {
+ "type": "boolean",
+ "description": "Indicate whether to persist events to database and JSON logs"
+ },
+ "streamed": {
+ "type": "boolean",
+ "description": "Indicate that events should be streamed to external services (if configured)"
+ }
+ },
+ "required": [
+ "description",
+ "group",
+ "introduced_by_issue",
+ "introduced_by_mr",
+ "milestone",
+ "name",
+ "saved_to_database",
+ "streamed"
+ ],
+ "not": {
+ "properties": {
+ "saved_to_database": {
+ "enum": [
+ false
+ ]
+ },
+ "streamed": {
+ "enum": [
+ false
+ ]
+ }
+ }
+ },
+ "title": "GitLabAuditEventType"
+}
diff --git a/config/dependency_decisions.yml b/config/dependency_decisions.yml
index 22dd75fc64d..b8689c1c461 100644
--- a/config/dependency_decisions.yml
+++ b/config/dependency_decisions.yml
@@ -145,12 +145,6 @@
:versions: []
:when: 2017-04-05 10:38:46.275721000 Z
- - :approve
- - jszip-utils
- - :who: Phil Hughes
- :why: https://github.com/Stuk/jszip-utils/blob/master/LICENSE.markdown
- :versions: []
- :when: 2017-04-05 10:39:32.676232000 Z
-- - :approve
- pako
- :who: Phil Hughes
:why: https://github.com/nodeca/pako/blob/master/LICENSE
diff --git a/config/environments/development.rb b/config/environments/development.rb
index d475a2a6642..5e67ed71954 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -50,6 +50,8 @@ Rails.application.configure do
# Push preview path now to prevent FrozenError during view_component's initialzer
config.autoload_paths.push("#{config.root}/spec/components/previews")
+ config.lookbook.page_paths = ["#{config.root}/spec/components/docs"]
+
# Adds additional error checking when serving assets at runtime.
# Checks for improperly declared sprockets dependencies.
# Raises helpful error messages.
@@ -61,7 +63,7 @@ Rails.application.configure do
config.action_mailer.raise_delivery_errors = true
# Don't make a mess when bootstrapping a development environment
config.action_mailer.perform_deliveries = (ENV['BOOTSTRAP'] != '1')
- config.action_mailer.preview_path = "#{Rails.root}{/ee,}/app/mailers/previews"
+ config.action_mailer.preview_path = GitlabEdition.path_glob('app/mailers/previews')
config.eager_load = false
diff --git a/config/environments/test.rb b/config/environments/test.rb
index f4d3d2ddfda..41413c55ba4 100644
--- a/config/environments/test.rb
+++ b/config/environments/test.rb
@@ -48,6 +48,8 @@ Rails.application.configure do
# ActionMailer::Base.deliveries array.
config.action_mailer.delivery_method = :test
+ config.action_mailer.preview_path = GitlabEdition.path_glob('app/mailers/previews')
+
# Print deprecation notices to the stderr
config.active_support.deprecation = :stderr
diff --git a/config/events/1662373051_Projects__GoogleCloud__ConfigurationController_error_invalid_user.yml b/config/events/1662373051_Projects__GoogleCloud__ConfigurationController_error_invalid_user.yml
new file mode 100644
index 00000000000..5a71e2df485
--- /dev/null
+++ b/config/events/1662373051_Projects__GoogleCloud__ConfigurationController_error_invalid_user.yml
@@ -0,0 +1,26 @@
+---
+description: Invalid or unauthorized user
+category: Projects::GoogleCloud::ConfigurationController
+action: error_invalid_user
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373057_Projects__GoogleCloud__ConfigurationController_error_google_oauth2_not_enabled.yml b/config/events/1662373057_Projects__GoogleCloud__ConfigurationController_error_google_oauth2_not_enabled.yml
new file mode 100644
index 00000000000..483225e0def
--- /dev/null
+++ b/config/events/1662373057_Projects__GoogleCloud__ConfigurationController_error_google_oauth2_not_enabled.yml
@@ -0,0 +1,26 @@
+---
+description: Google OAuth2 not enabled on GitLab instance
+category: Projects::GoogleCloud::ConfigurationController
+action: error_google_oauth2_not_enabled
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373062_Projects__GoogleCloud__ConfigurationController_error_feature_flag_not_enabled.yml b/config/events/1662373062_Projects__GoogleCloud__ConfigurationController_error_feature_flag_not_enabled.yml
new file mode 100644
index 00000000000..b24a326ab30
--- /dev/null
+++ b/config/events/1662373062_Projects__GoogleCloud__ConfigurationController_error_feature_flag_not_enabled.yml
@@ -0,0 +1,26 @@
+---
+description: Feature flag not enabled on the GitLab instance
+category: Projects::GoogleCloud::ConfigurationController
+action: error_feature_flag_not_enabled
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373069_Projects__GoogleCloud__ConfigurationController_render_page.yml b/config/events/1662373069_Projects__GoogleCloud__ConfigurationController_render_page.yml
new file mode 100644
index 00000000000..21083a7596b
--- /dev/null
+++ b/config/events/1662373069_Projects__GoogleCloud__ConfigurationController_render_page.yml
@@ -0,0 +1,26 @@
+---
+description: Configuration page rendered
+category: Projects::GoogleCloud::ConfigurationController
+action: render_page
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373075_Projects__GoogleCloud__ServiceAccountsController_error_invalid_user.yml b/config/events/1662373075_Projects__GoogleCloud__ServiceAccountsController_error_invalid_user.yml
new file mode 100644
index 00000000000..850b8e81c0b
--- /dev/null
+++ b/config/events/1662373075_Projects__GoogleCloud__ServiceAccountsController_error_invalid_user.yml
@@ -0,0 +1,26 @@
+---
+description: Invalid or unauthorized user
+category: Projects::GoogleCloud::ServiceAccountsController
+action: error_invalid_user
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373081_Projects__GoogleCloud__ServiceAccountsController_error_google_oauth2_not_enabled.yml b/config/events/1662373081_Projects__GoogleCloud__ServiceAccountsController_error_google_oauth2_not_enabled.yml
new file mode 100644
index 00000000000..726ba6af7aa
--- /dev/null
+++ b/config/events/1662373081_Projects__GoogleCloud__ServiceAccountsController_error_google_oauth2_not_enabled.yml
@@ -0,0 +1,26 @@
+---
+description: Google OAuth2 not enabled on GitLab instance
+category: Projects::GoogleCloud::ServiceAccountsController
+action: error_google_oauth2_not_enabled
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373087_Projects__GoogleCloud__ServiceAccountsController_error_feature_flag_not_enabled.yml b/config/events/1662373087_Projects__GoogleCloud__ServiceAccountsController_error_feature_flag_not_enabled.yml
new file mode 100644
index 00000000000..713e1a35584
--- /dev/null
+++ b/config/events/1662373087_Projects__GoogleCloud__ServiceAccountsController_error_feature_flag_not_enabled.yml
@@ -0,0 +1,26 @@
+---
+description: Feature flag not enabled on the GitLab instance
+category: Projects::GoogleCloud::ServiceAccountsController
+action: error_feature_flag_not_enabled
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373092_Projects__GoogleCloud__ServiceAccountsController_render_form.yml b/config/events/1662373092_Projects__GoogleCloud__ServiceAccountsController_render_form.yml
new file mode 100644
index 00000000000..55e0c87dd6c
--- /dev/null
+++ b/config/events/1662373092_Projects__GoogleCloud__ServiceAccountsController_render_form.yml
@@ -0,0 +1,26 @@
+---
+description: Service account form rendered
+category: Projects::GoogleCloud::ServiceAccountsController
+action: render_form
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373098_Projects__GoogleCloud__ServiceAccountsController_error_no_gcp_projects.yml b/config/events/1662373098_Projects__GoogleCloud__ServiceAccountsController_error_no_gcp_projects.yml
new file mode 100644
index 00000000000..a57df38aa6e
--- /dev/null
+++ b/config/events/1662373098_Projects__GoogleCloud__ServiceAccountsController_error_no_gcp_projects.yml
@@ -0,0 +1,26 @@
+---
+description: No GCP projects found for user
+category: Projects::GoogleCloud::ServiceAccountsController
+action: error_no_gcp_projects
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373103_Projects__GoogleCloud__ServiceAccountsController_create_service_account.yml b/config/events/1662373103_Projects__GoogleCloud__ServiceAccountsController_create_service_account.yml
new file mode 100644
index 00000000000..e147eaea44c
--- /dev/null
+++ b/config/events/1662373103_Projects__GoogleCloud__ServiceAccountsController_create_service_account.yml
@@ -0,0 +1,26 @@
+---
+description: Service account created
+category: Projects::GoogleCloud::ServiceAccountsController
+action: create_service_account
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373109_Projects__GoogleCloud__ServiceAccountsController_error_google_api.yml b/config/events/1662373109_Projects__GoogleCloud__ServiceAccountsController_error_google_api.yml
new file mode 100644
index 00000000000..f5404c0b318
--- /dev/null
+++ b/config/events/1662373109_Projects__GoogleCloud__ServiceAccountsController_error_google_api.yml
@@ -0,0 +1,26 @@
+---
+description: Google API error
+category: Projects::GoogleCloud::ServiceAccountsController
+action: error_google_api
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373114_Projects__GoogleCloud__GcpRegionsController_error_invalid_user.yml b/config/events/1662373114_Projects__GoogleCloud__GcpRegionsController_error_invalid_user.yml
new file mode 100644
index 00000000000..e190dc68e05
--- /dev/null
+++ b/config/events/1662373114_Projects__GoogleCloud__GcpRegionsController_error_invalid_user.yml
@@ -0,0 +1,26 @@
+---
+description: Invalid or unauthorized user
+category: Projects::GoogleCloud::GcpRegionsController
+action: error_invalid_user
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373120_Projects__GoogleCloud__GcpRegionsController_error_google_oauth2_not_enabled.yml b/config/events/1662373120_Projects__GoogleCloud__GcpRegionsController_error_google_oauth2_not_enabled.yml
new file mode 100644
index 00000000000..4ceb9567a31
--- /dev/null
+++ b/config/events/1662373120_Projects__GoogleCloud__GcpRegionsController_error_google_oauth2_not_enabled.yml
@@ -0,0 +1,26 @@
+---
+description: Google OAuth2 not enabled on GitLab instance
+category: Projects::GoogleCloud::GcpRegionsController
+action: error_google_oauth2_not_enabled
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373125_Projects__GoogleCloud__GcpRegionsController_error_feature_flag_not_enabled.yml b/config/events/1662373125_Projects__GoogleCloud__GcpRegionsController_error_feature_flag_not_enabled.yml
new file mode 100644
index 00000000000..c7b9c4ac2f6
--- /dev/null
+++ b/config/events/1662373125_Projects__GoogleCloud__GcpRegionsController_error_feature_flag_not_enabled.yml
@@ -0,0 +1,26 @@
+---
+description: Feature flag not enabled on the GitLab instance
+category: Projects::GoogleCloud::GcpRegionsController
+action: error_feature_flag_not_enabled
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373131_Projects__GoogleCloud__GcpRegionsController_render_form.yml b/config/events/1662373131_Projects__GoogleCloud__GcpRegionsController_render_form.yml
new file mode 100644
index 00000000000..227e0117e84
--- /dev/null
+++ b/config/events/1662373131_Projects__GoogleCloud__GcpRegionsController_render_form.yml
@@ -0,0 +1,26 @@
+---
+description: GCP regions configuration form rendered
+category: Projects::GoogleCloud::GcpRegionsController
+action: render_form
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373136_Projects__GoogleCloud__GcpRegionsController_configure_region.yml b/config/events/1662373136_Projects__GoogleCloud__GcpRegionsController_configure_region.yml
new file mode 100644
index 00000000000..f301c068188
--- /dev/null
+++ b/config/events/1662373136_Projects__GoogleCloud__GcpRegionsController_configure_region.yml
@@ -0,0 +1,26 @@
+---
+description: GCP region configured
+category: Projects::GoogleCloud::GcpRegionsController
+action: configure_region
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373142_Projects__GoogleCloud__GcpRegionsController_error_create.yml b/config/events/1662373142_Projects__GoogleCloud__GcpRegionsController_error_create.yml
new file mode 100644
index 00000000000..67bbc1a7465
--- /dev/null
+++ b/config/events/1662373142_Projects__GoogleCloud__GcpRegionsController_error_create.yml
@@ -0,0 +1,26 @@
+---
+description: Failed to configure GCP region
+category: Projects::GoogleCloud::GcpRegionsController
+action: error_create
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373147_Projects__GoogleCloud__RevokeOauthController_error_invalid_user.yml b/config/events/1662373147_Projects__GoogleCloud__RevokeOauthController_error_invalid_user.yml
new file mode 100644
index 00000000000..a316efda189
--- /dev/null
+++ b/config/events/1662373147_Projects__GoogleCloud__RevokeOauthController_error_invalid_user.yml
@@ -0,0 +1,26 @@
+---
+description: Invalid or unauthorized user
+category: Projects::GoogleCloud::RevokeOauthController
+action: error_invalid_user
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373153_Projects__GoogleCloud__RevokeOauthController_error_google_oauth2_not_enabled.yml b/config/events/1662373153_Projects__GoogleCloud__RevokeOauthController_error_google_oauth2_not_enabled.yml
new file mode 100644
index 00000000000..fc2bf9a5bcd
--- /dev/null
+++ b/config/events/1662373153_Projects__GoogleCloud__RevokeOauthController_error_google_oauth2_not_enabled.yml
@@ -0,0 +1,26 @@
+---
+description: Google OAuth2 not enabled on GitLab instance
+category: Projects::GoogleCloud::RevokeOauthController
+action: error_google_oauth2_not_enabled
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373158_Projects__GoogleCloud__RevokeOauthController_error_feature_flag_not_enabled.yml b/config/events/1662373158_Projects__GoogleCloud__RevokeOauthController_error_feature_flag_not_enabled.yml
new file mode 100644
index 00000000000..33fdb94c3d8
--- /dev/null
+++ b/config/events/1662373158_Projects__GoogleCloud__RevokeOauthController_error_feature_flag_not_enabled.yml
@@ -0,0 +1,26 @@
+---
+description: Feature flag not enabled on the GitLab instance
+category: Projects::GoogleCloud::RevokeOauthController
+action: error_feature_flag_not_enabled
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373164_Projects__GoogleCloud__RevokeOauthController_revoke_oauth.yml b/config/events/1662373164_Projects__GoogleCloud__RevokeOauthController_revoke_oauth.yml
new file mode 100644
index 00000000000..a621d57271a
--- /dev/null
+++ b/config/events/1662373164_Projects__GoogleCloud__RevokeOauthController_revoke_oauth.yml
@@ -0,0 +1,26 @@
+---
+description: OAuth token revoked
+category: Projects::GoogleCloud::RevokeOauthController
+action: revoke_oauth
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373170_Projects__GoogleCloud__DeploymentsController_error_invalid_user.yml b/config/events/1662373170_Projects__GoogleCloud__DeploymentsController_error_invalid_user.yml
new file mode 100644
index 00000000000..4543251dd08
--- /dev/null
+++ b/config/events/1662373170_Projects__GoogleCloud__DeploymentsController_error_invalid_user.yml
@@ -0,0 +1,26 @@
+---
+description: Invalid or unauthorized user
+category: Projects::GoogleCloud::DeploymentsController
+action: error_invalid_user
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373175_Projects__GoogleCloud__DeploymentsController_error_google_oauth2_not_enabled.yml b/config/events/1662373175_Projects__GoogleCloud__DeploymentsController_error_google_oauth2_not_enabled.yml
new file mode 100644
index 00000000000..119db94c828
--- /dev/null
+++ b/config/events/1662373175_Projects__GoogleCloud__DeploymentsController_error_google_oauth2_not_enabled.yml
@@ -0,0 +1,26 @@
+---
+description: Google OAuth2 not enabled on GitLab instance
+category: Projects::GoogleCloud::DeploymentsController
+action: error_google_oauth2_not_enabled
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373181_Projects__GoogleCloud__DeploymentsController_error_feature_flag_not_enabled.yml b/config/events/1662373181_Projects__GoogleCloud__DeploymentsController_error_feature_flag_not_enabled.yml
new file mode 100644
index 00000000000..1d4ba496e82
--- /dev/null
+++ b/config/events/1662373181_Projects__GoogleCloud__DeploymentsController_error_feature_flag_not_enabled.yml
@@ -0,0 +1,26 @@
+---
+description: Feature flag not enabled on the GitLab instance
+category: Projects::GoogleCloud::DeploymentsController
+action: error_feature_flag_not_enabled
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373187_Projects__GoogleCloud__DeploymentsController_render_page.yml b/config/events/1662373187_Projects__GoogleCloud__DeploymentsController_render_page.yml
new file mode 100644
index 00000000000..0335988d5c5
--- /dev/null
+++ b/config/events/1662373187_Projects__GoogleCloud__DeploymentsController_render_page.yml
@@ -0,0 +1,26 @@
+---
+description: Deployments page rendered
+category: Projects::GoogleCloud::DeploymentsController
+action: render_page
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373192_Projects__GoogleCloud__DeploymentsController_generate_cloudrun_pipeline.yml b/config/events/1662373192_Projects__GoogleCloud__DeploymentsController_generate_cloudrun_pipeline.yml
new file mode 100644
index 00000000000..8e3920015a2
--- /dev/null
+++ b/config/events/1662373192_Projects__GoogleCloud__DeploymentsController_generate_cloudrun_pipeline.yml
@@ -0,0 +1,26 @@
+---
+description: Cloud Run pipeline generated
+category: Projects::GoogleCloud::DeploymentsController
+action: generate_cloudrun_pipeline
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373198_Projects__GoogleCloud__DeploymentsController_error_enable_cloudrun_services.yml b/config/events/1662373198_Projects__GoogleCloud__DeploymentsController_error_enable_cloudrun_services.yml
new file mode 100644
index 00000000000..4a3fdd48a0d
--- /dev/null
+++ b/config/events/1662373198_Projects__GoogleCloud__DeploymentsController_error_enable_cloudrun_services.yml
@@ -0,0 +1,26 @@
+---
+description: Failed to enable Cloud Run services
+category: Projects::GoogleCloud::DeploymentsController
+action: error_enable_cloudrun_services
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373204_Projects__GoogleCloud__DeploymentsController_error_generate_cloudrun_pipeline.yml b/config/events/1662373204_Projects__GoogleCloud__DeploymentsController_error_generate_cloudrun_pipeline.yml
new file mode 100644
index 00000000000..ecf2ef4ae37
--- /dev/null
+++ b/config/events/1662373204_Projects__GoogleCloud__DeploymentsController_error_generate_cloudrun_pipeline.yml
@@ -0,0 +1,26 @@
+---
+description: Failed to enable Cloud Run services
+category: Projects::GoogleCloud::DeploymentsController
+action: error_generate_cloudrun_pipeline
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373209_Projects__GoogleCloud__DeploymentsController_error_google_api.yml b/config/events/1662373209_Projects__GoogleCloud__DeploymentsController_error_google_api.yml
new file mode 100644
index 00000000000..81e7a881b5a
--- /dev/null
+++ b/config/events/1662373209_Projects__GoogleCloud__DeploymentsController_error_google_api.yml
@@ -0,0 +1,26 @@
+---
+description: Google API error
+category: Projects::GoogleCloud::DeploymentsController
+action: error_google_api
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373215_Projects__GoogleCloud__DatabasesController_error_invalid_user.yml b/config/events/1662373215_Projects__GoogleCloud__DatabasesController_error_invalid_user.yml
new file mode 100644
index 00000000000..21734eb875f
--- /dev/null
+++ b/config/events/1662373215_Projects__GoogleCloud__DatabasesController_error_invalid_user.yml
@@ -0,0 +1,26 @@
+---
+description: Invalid or unauthorized user
+category: Projects::GoogleCloud::DatabasesController
+action: error_invalid_user
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373220_Projects__GoogleCloud__DatabasesController_error_google_oauth2_not_enabled.yml b/config/events/1662373220_Projects__GoogleCloud__DatabasesController_error_google_oauth2_not_enabled.yml
new file mode 100644
index 00000000000..b9a4e3f2c7d
--- /dev/null
+++ b/config/events/1662373220_Projects__GoogleCloud__DatabasesController_error_google_oauth2_not_enabled.yml
@@ -0,0 +1,26 @@
+---
+description: Google OAuth2 not enabled on GitLab instance
+category: Projects::GoogleCloud::DatabasesController
+action: error_google_oauth2_not_enabled
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373226_Projects__GoogleCloud__DatabasesController_error_feature_flag_not_enabled.yml b/config/events/1662373226_Projects__GoogleCloud__DatabasesController_error_feature_flag_not_enabled.yml
new file mode 100644
index 00000000000..04c03b87dd3
--- /dev/null
+++ b/config/events/1662373226_Projects__GoogleCloud__DatabasesController_error_feature_flag_not_enabled.yml
@@ -0,0 +1,26 @@
+---
+description: Feature flag not enabled on the GitLab instance
+category: Projects::GoogleCloud::DatabasesController
+action: error_feature_flag_not_enabled
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373232_Projects__GoogleCloud__DatabasesController_render_page.yml b/config/events/1662373232_Projects__GoogleCloud__DatabasesController_render_page.yml
new file mode 100644
index 00000000000..b5bf9853e44
--- /dev/null
+++ b/config/events/1662373232_Projects__GoogleCloud__DatabasesController_render_page.yml
@@ -0,0 +1,26 @@
+---
+description: Databases page rendered
+category: Projects::GoogleCloud::DatabasesController
+action: render_page
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373237_Projects__GoogleCloud__DatabasesController_render_cloudsql_form.yml b/config/events/1662373237_Projects__GoogleCloud__DatabasesController_render_cloudsql_form.yml
new file mode 100644
index 00000000000..5fab18d965d
--- /dev/null
+++ b/config/events/1662373237_Projects__GoogleCloud__DatabasesController_render_cloudsql_form.yml
@@ -0,0 +1,26 @@
+---
+description: Cloud SQL form rendered
+category: Projects::GoogleCloud::DatabasesController
+action: render_cloudsql_form
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373243_Projects__GoogleCloud__DatabasesController_create_cloudsql_instance.yml b/config/events/1662373243_Projects__GoogleCloud__DatabasesController_create_cloudsql_instance.yml
new file mode 100644
index 00000000000..3f5a2b5d8ba
--- /dev/null
+++ b/config/events/1662373243_Projects__GoogleCloud__DatabasesController_create_cloudsql_instance.yml
@@ -0,0 +1,26 @@
+---
+description: Cloud SQL instance created
+category: Projects::GoogleCloud::DatabasesController
+action: create_cloudsql_instance
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373249_Projects__GoogleCloud__DatabasesController_error_enable_cloudsql_services.yml b/config/events/1662373249_Projects__GoogleCloud__DatabasesController_error_enable_cloudsql_services.yml
new file mode 100644
index 00000000000..a6fb46df4b8
--- /dev/null
+++ b/config/events/1662373249_Projects__GoogleCloud__DatabasesController_error_enable_cloudsql_services.yml
@@ -0,0 +1,26 @@
+---
+description: Error enabling Cloud SQL services
+category: Projects::GoogleCloud::DatabasesController
+action: error_enable_cloudsql_services
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/events/1662373254_Projects__GoogleCloud__DatabasesController_error_create_cloudsql_instance.yml b/config/events/1662373254_Projects__GoogleCloud__DatabasesController_error_create_cloudsql_instance.yml
new file mode 100644
index 00000000000..df9e28fabf5
--- /dev/null
+++ b/config/events/1662373254_Projects__GoogleCloud__DatabasesController_error_create_cloudsql_instance.yml
@@ -0,0 +1,26 @@
+---
+description: Error creating Cloud SQL instance
+category: Projects::GoogleCloud::DatabasesController
+action: error_create_cloudsql_instance
+label_description:
+property_description:
+value_description:
+extra_properties:
+identifiers:
+- project
+- user
+- namespace
+product_section: google_cloud
+product_stage: configure
+product_group: group::incubation
+product_category: cloud_seed
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96683"
+distributions:
+- ce
+- ee
+tiers:
+- free
+- premium
+- ultimate
+
diff --git a/config/feature_categories.yml b/config/feature_categories.yml
index 9b5f3de3f75..ca27ece9196 100644
--- a/config/feature_categories.yml
+++ b/config/feature_categories.yml
@@ -13,7 +13,6 @@
- application_performance
- attack_emulation
- audit_events
-- audit_reports
- authentication_and_authorization
- auto_devops
- backup_restore
@@ -116,7 +115,7 @@
- secret_detection
- secrets_management
- security_benchmarking
-- security_orchestration
+- security_policy_management
- service_desk
- service_ping
- snippets
diff --git a/config/feature_flags/development/add_timing_to_certain_cache_actions.yml b/config/feature_flags/development/add_timing_to_certain_cache_actions.yml
new file mode 100644
index 00000000000..c03e49dae8d
--- /dev/null
+++ b/config/feature_flags/development/add_timing_to_certain_cache_actions.yml
@@ -0,0 +1,8 @@
+---
+name: add_timing_to_certain_cache_actions
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94966
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371657
+milestone: '15.4'
+type: development
+group: group::code review
+default_enabled: false
diff --git a/config/feature_flags/development/always_async_project_authorizations_refresh.yml b/config/feature_flags/development/always_async_project_authorizations_refresh.yml
index 233be4d930e..f5ec2473af8 100644
--- a/config/feature_flags/development/always_async_project_authorizations_refresh.yml
+++ b/config/feature_flags/development/always_async_project_authorizations_refresh.yml
@@ -5,4 +5,4 @@ rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/367683
milestone: '15.3'
type: development
group: group::workspace
-default_enabled: false
+default_enabled: true
diff --git a/config/feature_flags/development/auto_ban_user_on_excessive_projects_download.yml b/config/feature_flags/development/arkose_labs_signup_challenge.yml
index d3883086088..8b40ce5d029 100644
--- a/config/feature_flags/development/auto_ban_user_on_excessive_projects_download.yml
+++ b/config/feature_flags/development/arkose_labs_signup_challenge.yml
@@ -1,8 +1,8 @@
---
-name: auto_ban_user_on_excessive_projects_download
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/87872
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/364782
-milestone: '15.2'
+name: arkose_labs_signup_challenge
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95560
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370932
+milestone: '15.4'
type: development
group: group::anti-abuse
default_enabled: false
diff --git a/config/feature_flags/development/block_emails_with_failures.yml b/config/feature_flags/development/block_emails_with_failures.yml
new file mode 100644
index 00000000000..c06d49346b3
--- /dev/null
+++ b/config/feature_flags/development/block_emails_with_failures.yml
@@ -0,0 +1,8 @@
+---
+name: block_emails_with_failures
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96902
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373159
+milestone: '15.4'
+type: development
+group: group::project management
+default_enabled: false
diff --git a/config/feature_flags/development/block_weak_passwords.yml b/config/feature_flags/development/block_weak_passwords.yml
new file mode 100644
index 00000000000..aaa8c2cac38
--- /dev/null
+++ b/config/feature_flags/development/block_weak_passwords.yml
@@ -0,0 +1,8 @@
+---
+name: block_weak_passwords
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86310
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/363445
+milestone: '15.4'
+type: development
+group: group::authentication and authorization
+default_enabled: false
diff --git a/config/feature_flags/development/bypass_batch_pop_queueing_for_merge_trains.yml b/config/feature_flags/development/bypass_batch_pop_queueing_for_merge_trains.yml
new file mode 100644
index 00000000000..4517bd5360e
--- /dev/null
+++ b/config/feature_flags/development/bypass_batch_pop_queueing_for_merge_trains.yml
@@ -0,0 +1,8 @@
+---
+name: bypass_batch_pop_queueing_for_merge_trains
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96793
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372366
+milestone: '15.4'
+type: development
+group: group::scalability
+default_enabled: false
diff --git a/config/feature_flags/development/seat_count_alerts.yml b/config/feature_flags/development/cache_issue_sums.yml
index 9b2f3a2ef55..7b8bfc44ce2 100644
--- a/config/feature_flags/development/seat_count_alerts.yml
+++ b/config/feature_flags/development/cache_issue_sums.yml
@@ -1,8 +1,8 @@
---
-name: seat_count_alerts
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/89204
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/362041
-milestone: '15.1'
+name: cache_issue_sums
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95048
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/365940
+milestone: '15.4'
type: development
-group: group::purchase
+group: group::product planning
default_enabled: false
diff --git a/config/feature_flags/development/ci_new_public_oss_cost_factor.yml b/config/feature_flags/development/ci_limit_active_jobs_early.yml
index 20ab9bd4509..b7dba0f81e9 100644
--- a/config/feature_flags/development/ci_new_public_oss_cost_factor.yml
+++ b/config/feature_flags/development/ci_limit_active_jobs_early.yml
@@ -1,8 +1,8 @@
---
-name: ci_new_public_oss_cost_factor
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93046
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369113
-milestone: '15.3'
+name: ci_limit_active_jobs_early
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97700
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373284
+milestone: '15.4'
type: development
group: group::pipeline execution
default_enabled: false
diff --git a/config/feature_flags/development/ci_limit_complete_hierarchy_size.yml b/config/feature_flags/development/ci_limit_complete_hierarchy_size.yml
new file mode 100644
index 00000000000..ad0dd85a25a
--- /dev/null
+++ b/config/feature_flags/development/ci_limit_complete_hierarchy_size.yml
@@ -0,0 +1,8 @@
+---
+name: ci_limit_complete_hierarchy_size
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95857
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373719
+milestone: '15.4'
+type: development
+group: group::pipeline execution
+default_enabled: false
diff --git a/config/feature_flags/development/ci_variable_for_group_gitlab_deploy_token.yml b/config/feature_flags/development/ci_project_pipeline_config_refactoring.yml
index 155a6c385fc..0338b81caf7 100644
--- a/config/feature_flags/development/ci_variable_for_group_gitlab_deploy_token.yml
+++ b/config/feature_flags/development/ci_project_pipeline_config_refactoring.yml
@@ -1,8 +1,8 @@
---
-name: ci_variable_for_group_gitlab_deploy_token
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/88696
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/363621
-milestone: '15.1'
+name: ci_project_pipeline_config_refactoring
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97240
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372867
+milestone: '15.4'
type: development
group: group::pipeline authoring
-default_enabled: true
+default_enabled: false
diff --git a/config/feature_flags/development/ci_requeue_with_dag_object_hierarchy.yml b/config/feature_flags/development/ci_requeue_with_dag_object_hierarchy.yml
new file mode 100644
index 00000000000..5e27510629c
--- /dev/null
+++ b/config/feature_flags/development/ci_requeue_with_dag_object_hierarchy.yml
@@ -0,0 +1,8 @@
+---
+name: ci_requeue_with_dag_object_hierarchy
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97156
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373148
+milestone: '15.4'
+type: development
+group: group::pipeline authoring
+default_enabled: false
diff --git a/config/feature_flags/development/ci_stop_expanding_file_vars_for_runners.yml b/config/feature_flags/development/ci_stop_expanding_file_vars_for_runners.yml
index e9f378288d9..a78290b65d6 100644
--- a/config/feature_flags/development/ci_stop_expanding_file_vars_for_runners.yml
+++ b/config/feature_flags/development/ci_stop_expanding_file_vars_for_runners.yml
@@ -5,4 +5,4 @@ rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369907
milestone: '15.3'
type: development
group: group::pipeline authoring
-default_enabled: false
+default_enabled: true
diff --git a/config/feature_flags/development/ci_update_unlocked_pipeline_artifacts.yml b/config/feature_flags/development/ci_update_unlocked_pipeline_artifacts.yml
new file mode 100644
index 00000000000..ffcd5352751
--- /dev/null
+++ b/config/feature_flags/development/ci_update_unlocked_pipeline_artifacts.yml
@@ -0,0 +1,8 @@
+---
+name: ci_update_unlocked_pipeline_artifacts
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97228
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372835
+milestone: '15.4'
+type: development
+group: group::pipeline insights
+default_enabled: false
diff --git a/config/feature_flags/development/ci_variables_refactoring_to_variable.yml b/config/feature_flags/development/ci_variables_refactoring_to_variable.yml
new file mode 100644
index 00000000000..131df28d104
--- /dev/null
+++ b/config/feature_flags/development/ci_variables_refactoring_to_variable.yml
@@ -0,0 +1,8 @@
+---
+name: ci_variables_refactoring_to_variable
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95390
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371559
+milestone: '15.4'
+type: development
+group: group::pipeline authoring
+default_enabled: false
diff --git a/config/feature_flags/development/container_registry_legacy_authentication_for_deploy_tokens.yml b/config/feature_flags/development/container_registry_legacy_authentication_for_deploy_tokens.yml
deleted file mode 100644
index fefc84ed0a0..00000000000
--- a/config/feature_flags/development/container_registry_legacy_authentication_for_deploy_tokens.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: container_registry_legacy_authentication_for_deploy_tokens
-introduced_by_url: https://gitlab.com/gitlab-org/security/gitlab/-/merge_requests/2470
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/365968
-milestone: '15.1'
-type: development
-group: group::package
-default_enabled: false
diff --git a/config/feature_flags/development/contribution_analytics_optimized_base_query.yml b/config/feature_flags/development/contribution_analytics_optimized_base_query.yml
index 0e8697fb206..05ee44a7ee2 100644
--- a/config/feature_flags/development/contribution_analytics_optimized_base_query.yml
+++ b/config/feature_flags/development/contribution_analytics_optimized_base_query.yml
@@ -5,4 +5,4 @@ rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/367090
milestone: '15.2'
type: development
group: group::optimize
-default_enabled: false
+default_enabled: true
diff --git a/config/feature_flags/development/convert_diff_to_utf8_with_replacement_symbol.yml b/config/feature_flags/development/convert_diff_to_utf8_with_replacement_symbol.yml
deleted file mode 100644
index 1d0f64d9ac2..00000000000
--- a/config/feature_flags/development/convert_diff_to_utf8_with_replacement_symbol.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: convert_diff_to_utf8_with_replacement_symbol
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/79996
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/354526
-milestone: '14.9'
-type: development
-group: group::code review
-default_enabled: false
diff --git a/config/feature_flags/development/track_agent_users_using_ci_tunnel.yml b/config/feature_flags/development/cube_api_proxy.yml
index 0a00babc2db..06dcefb1303 100644
--- a/config/feature_flags/development/track_agent_users_using_ci_tunnel.yml
+++ b/config/feature_flags/development/cube_api_proxy.yml
@@ -1,8 +1,8 @@
---
-name: track_agent_users_using_ci_tunnel
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92300
+name: cube_api_proxy
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96250
rollout_issue_url:
-milestone: '15.3'
+milestone: '15.4'
type: development
-group: group::configure
+group: group::product_analytics
default_enabled: false
diff --git a/config/feature_flags/development/dora_configuration.yml b/config/feature_flags/development/dora_configuration.yml
new file mode 100644
index 00000000000..38a050571d8
--- /dev/null
+++ b/config/feature_flags/development/dora_configuration.yml
@@ -0,0 +1,8 @@
+---
+name: dora_configuration
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96561"
+rollout_issue_url: "https://gitlab.com/gitlab-org/gitlab/-/issues/372545"
+milestone: '15.4'
+type: development
+group: group::optimize
+default_enabled: false
diff --git a/config/feature_flags/development/improved_mergeability_checks.yml b/config/feature_flags/development/draft_quick_action_non_toggle.yml
index 83450ffa16f..4d28b61f3bf 100644
--- a/config/feature_flags/development/improved_mergeability_checks.yml
+++ b/config/feature_flags/development/draft_quick_action_non_toggle.yml
@@ -1,8 +1,8 @@
---
-name: improved_mergeability_checks
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/68312
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/342386
-milestone: '14.4'
+name: draft_quick_action_non_toggle
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92654
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/368610
+milestone: '15.4'
type: development
group: group::code review
default_enabled: false
diff --git a/config/feature_flags/development/epic_widget_edit_confirmation.yml b/config/feature_flags/development/epic_widget_edit_confirmation.yml
new file mode 100644
index 00000000000..6c92ef44e2f
--- /dev/null
+++ b/config/feature_flags/development/epic_widget_edit_confirmation.yml
@@ -0,0 +1,8 @@
+---
+name: epic_widget_edit_confirmation
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96872
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372429
+milestone: '15.4'
+type: development
+group: group::product planning
+default_enabled: false
diff --git a/config/feature_flags/development/error_tracking_sentry_limit.yml b/config/feature_flags/development/error_tracking_sentry_limit.yml
new file mode 100644
index 00000000000..75a32fa2114
--- /dev/null
+++ b/config/feature_flags/development/error_tracking_sentry_limit.yml
@@ -0,0 +1,8 @@
+---
+name: error_tracking_sentry_limit
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/84209
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372427
+milestone: '15.4'
+type: development
+group: group::observability
+default_enabled: false
diff --git a/config/feature_flags/development/tag_list_keyset_pagination.yml b/config/feature_flags/development/escape_gitaly_refs.yml
index 52c21e22d9f..b42cc4c07e5 100644
--- a/config/feature_flags/development/tag_list_keyset_pagination.yml
+++ b/config/feature_flags/development/escape_gitaly_refs.yml
@@ -1,8 +1,8 @@
---
-name: tag_list_keyset_pagination
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74239
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/345595
-milestone: '14.5'
+name: escape_gitaly_refs
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91058
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/366437
+milestone: '15.2'
type: development
group: group::source code
default_enabled: true
diff --git a/config/feature_flags/development/group_ip_restrictions_allow_global.yml b/config/feature_flags/development/extract_mr_diff_deletions.yml
index 87cfa5e8b1b..24067f95074 100644
--- a/config/feature_flags/development/group_ip_restrictions_allow_global.yml
+++ b/config/feature_flags/development/extract_mr_diff_deletions.yml
@@ -1,8 +1,8 @@
---
-name: group_ip_restrictions_allow_global
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/87579
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/362603
-milestone: '15.1'
+name: extract_mr_diff_deletions
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96455
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372060
+milestone: '15.4'
type: development
group: group::source code
default_enabled: false
diff --git a/config/feature_flags/development/api_caching_branches.yml b/config/feature_flags/development/gitlab_shell_jwt_token.yml
index 310d643529e..7cb6da2b49f 100644
--- a/config/feature_flags/development/api_caching_branches.yml
+++ b/config/feature_flags/development/gitlab_shell_jwt_token.yml
@@ -1,8 +1,8 @@
---
-name: api_caching_branches
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61157
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/330371
-milestone: '13.12'
+name: gitlab_shell_jwt_token
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86148
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/360808
+milestone: '15.3'
type: development
group: group::source code
default_enabled: false
diff --git a/config/feature_flags/development/global_search_custom_slis.yml b/config/feature_flags/development/global_search_custom_slis.yml
new file mode 100644
index 00000000000..6dd7cfb12f0
--- /dev/null
+++ b/config/feature_flags/development/global_search_custom_slis.yml
@@ -0,0 +1,8 @@
+---
+name: global_search_custom_slis
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95182
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372107
+milestone: '15.4'
+type: development
+group: group::application performance
+default_enabled: false
diff --git a/config/feature_flags/development/global_search_error_rate_sli.yml b/config/feature_flags/development/global_search_error_rate_sli.yml
new file mode 100644
index 00000000000..d1637ad692c
--- /dev/null
+++ b/config/feature_flags/development/global_search_error_rate_sli.yml
@@ -0,0 +1,8 @@
+---
+name: global_search_error_rate_sli
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96667
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373800
+milestone: '15.4'
+type: development
+group: group::application performance
+default_enabled: false
diff --git a/config/feature_flags/development/ci_docker_image_pull_policy.yml b/config/feature_flags/development/graphql_job_app.yml
index 5bdcdf03d27..a0f0cb71e17 100644
--- a/config/feature_flags/development/ci_docker_image_pull_policy.yml
+++ b/config/feature_flags/development/graphql_job_app.yml
@@ -1,8 +1,8 @@
---
-name: ci_docker_image_pull_policy
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85588
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/363186
-milestone: '15.1'
+name: graphql_job_app
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96703
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372276
+milestone: '15.4'
type: development
group: group::pipeline authoring
-default_enabled: true
+default_enabled: false
diff --git a/config/feature_flags/development/graphql_keyset_pagination_without_next_page_query.yml b/config/feature_flags/development/graphql_keyset_pagination_without_next_page_query.yml
new file mode 100644
index 00000000000..e289ad9af50
--- /dev/null
+++ b/config/feature_flags/development/graphql_keyset_pagination_without_next_page_query.yml
@@ -0,0 +1,8 @@
+---
+name: graphql_keyset_pagination_without_next_page_query
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97509
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373792
+milestone: '15.4'
+type: development
+group: group::optimize
+default_enabled: false
diff --git a/config/feature_flags/development/group_level_protected_environment_settings_permission.yml b/config/feature_flags/development/group_level_protected_environment_settings_permission.yml
deleted file mode 100644
index bbcfe24ba72..00000000000
--- a/config/feature_flags/development/group_level_protected_environment_settings_permission.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: group_level_protected_environment_settings_permission
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92801
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369873
-milestone: '15.3'
-type: development
-group: group::release
-default_enabled: true
diff --git a/config/feature_flags/development/group_overview_tabs_vue.yml b/config/feature_flags/development/group_overview_tabs_vue.yml
new file mode 100644
index 00000000000..4c54ab31b53
--- /dev/null
+++ b/config/feature_flags/development/group_overview_tabs_vue.yml
@@ -0,0 +1,8 @@
+---
+name: group_overview_tabs_vue
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95850
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370872
+milestone: '15.4'
+type: development
+group: group::workspace
+default_enabled: false
diff --git a/config/feature_flags/development/hash_oauth_secrets.yml b/config/feature_flags/development/hash_oauth_secrets.yml
new file mode 100644
index 00000000000..7730d319bab
--- /dev/null
+++ b/config/feature_flags/development/hash_oauth_secrets.yml
@@ -0,0 +1,8 @@
+---
+name: hash_oauth_secrets
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96252
+rollout_issue_url:
+milestone: '15.4'
+type: development
+group: group::authentication and authorization
+default_enabled: false
diff --git a/config/feature_flags/development/highlight_diffs_renewable_expiration.yml b/config/feature_flags/development/highlight_diffs_renewable_expiration.yml
new file mode 100644
index 00000000000..80635b96240
--- /dev/null
+++ b/config/feature_flags/development/highlight_diffs_renewable_expiration.yml
@@ -0,0 +1,8 @@
+---
+name: highlight_diffs_renewable_expiration
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95356
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370728
+milestone: '15.3'
+type: development
+group: group::source code
+default_enabled: false
diff --git a/config/feature_flags/development/highlight_diffs_short_renewable_expiration.yml b/config/feature_flags/development/highlight_diffs_short_renewable_expiration.yml
new file mode 100644
index 00000000000..1f20678b4a6
--- /dev/null
+++ b/config/feature_flags/development/highlight_diffs_short_renewable_expiration.yml
@@ -0,0 +1,8 @@
+---
+name: highlight_diffs_short_renewable_expiration
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95356
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370728
+milestone: '15.3'
+type: development
+group: group::source code
+default_enabled: false
diff --git a/config/feature_flags/development/include_groups_from_group_shares_in_project_transfer_locations.yml b/config/feature_flags/development/include_groups_from_group_shares_in_group_transfer_locations.yml
index 3db60cfd2d7..f92a6b2b1b0 100644
--- a/config/feature_flags/development/include_groups_from_group_shares_in_project_transfer_locations.yml
+++ b/config/feature_flags/development/include_groups_from_group_shares_in_group_transfer_locations.yml
@@ -1,8 +1,8 @@
---
-name: include_groups_from_group_shares_in_project_transfer_locations
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90127
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/366305
-milestone: '15.2'
+name: include_groups_from_group_shares_in_group_transfer_locations
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96347
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371961
+milestone: '15.4'
type: development
group: group::workspace
default_enabled: false
diff --git a/config/feature_flags/development/incubation_5mp_google_cloud.yml b/config/feature_flags/development/incubation_5mp_google_cloud.yml
index b687a656b40..1b3ba503f5d 100644
--- a/config/feature_flags/development/incubation_5mp_google_cloud.yml
+++ b/config/feature_flags/development/incubation_5mp_google_cloud.yml
@@ -1,7 +1,7 @@
---
name: incubation_5mp_google_cloud
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/70715
-rollout_issue_url:
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371332
milestone: '14.3'
type: development
group: group::incubation
diff --git a/config/feature_flags/development/invitation_flow_enforcement_setting.yml b/config/feature_flags/development/invitation_flow_enforcement_setting.yml
new file mode 100644
index 00000000000..39da6c40bed
--- /dev/null
+++ b/config/feature_flags/development/invitation_flow_enforcement_setting.yml
@@ -0,0 +1,8 @@
+---
+name: invitation_flow_enforcement_setting
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92218
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/367666
+milestone: '15.4'
+type: development
+group: group::workspace
+default_enabled: false
diff --git a/config/feature_flags/development/rebalance_issues.yml b/config/feature_flags/development/markdown_dollar_math.yml
index 5651b02b073..842837ea688 100644
--- a/config/feature_flags/development/rebalance_issues.yml
+++ b/config/feature_flags/development/markdown_dollar_math.yml
@@ -1,8 +1,8 @@
---
-name: rebalance_issues
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40124
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/239344
-milestone: '13.4'
+name: markdown_dollar_math
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94111
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371180
+milestone: '15.4'
type: development
group: group::project management
-default_enabled: true
+default_enabled: false
diff --git a/config/feature_flags/development/maven_central_request_forwarding.yml b/config/feature_flags/development/maven_central_request_forwarding.yml
new file mode 100644
index 00000000000..756a931b3a1
--- /dev/null
+++ b/config/feature_flags/development/maven_central_request_forwarding.yml
@@ -0,0 +1,8 @@
+---
+name: maven_central_request_forwarding
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85299
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/359553
+milestone: '15.4'
+type: development
+group: group::package
+default_enabled: false
diff --git a/config/feature_flags/development/async_after_approval.yml b/config/feature_flags/development/mergeability_checks_logger.yml
index db53454b88f..3476d6f2133 100644
--- a/config/feature_flags/development/async_after_approval.yml
+++ b/config/feature_flags/development/mergeability_checks_logger.yml
@@ -1,8 +1,8 @@
---
-name: async_after_approval
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92520
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/368098
-milestone: '15.3'
+name: mergeability_checks_logger
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96128
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371717
+milestone: '15.4'
type: development
group: group::code review
default_enabled: false
diff --git a/config/feature_flags/development/ml_experiment_tracking.yml b/config/feature_flags/development/ml_experiment_tracking.yml
new file mode 100644
index 00000000000..2749cbc3fc1
--- /dev/null
+++ b/config/feature_flags/development/ml_experiment_tracking.yml
@@ -0,0 +1,8 @@
+---
+name: ml_experiment_tracking
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95689
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371669
+milestone: '15.4'
+type: development
+group: group::incubation
+default_enabled: false
diff --git a/config/feature_flags/development/s3_omit_multipart_urls.yml b/config/feature_flags/development/new_navbar_layout.yml
index 92d30601739..2d212922fcc 100644
--- a/config/feature_flags/development/s3_omit_multipart_urls.yml
+++ b/config/feature_flags/development/new_navbar_layout.yml
@@ -1,8 +1,8 @@
---
-name: s3_omit_multipart_urls
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85306
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/359718
-milestone: '14.10'
+name: new_navbar_layout
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96853
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373078
+milestone: '15.4'
type: development
-group: group::package
+group: group::foundations
default_enabled: true
diff --git a/config/feature_flags/development/observability_group_tab.yml b/config/feature_flags/development/observability_group_tab.yml
new file mode 100644
index 00000000000..b588a74e7d0
--- /dev/null
+++ b/config/feature_flags/development/observability_group_tab.yml
@@ -0,0 +1,8 @@
+---
+name: observability_group_tab
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96374
+rollout_issue_url:
+milestone: '15.3'
+type: development
+group: group::observability
+default_enabled: false
diff --git a/config/feature_flags/development/order_builds_for_group_runner.yml b/config/feature_flags/development/order_builds_for_group_runner.yml
new file mode 100644
index 00000000000..50f9a301ad6
--- /dev/null
+++ b/config/feature_flags/development/order_builds_for_group_runner.yml
@@ -0,0 +1,8 @@
+---
+name: order_builds_for_group_runner
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94815
+rollout_issue_url:
+milestone: '15.4'
+type: development
+group: group::pipeline execution
+default_enabled: true
diff --git a/config/feature_flags/development/prevent_outdated_deployment_jobs.yml b/config/feature_flags/development/prevent_outdated_deployment_jobs.yml
new file mode 100644
index 00000000000..5b92874dfd7
--- /dev/null
+++ b/config/feature_flags/development/prevent_outdated_deployment_jobs.yml
@@ -0,0 +1,8 @@
+---
+name: prevent_outdated_deployment_jobs
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97171
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370628
+milestone: '15.4'
+type: development
+group: group::release
+default_enabled: false
diff --git a/config/feature_flags/development/process_issue_closure_in_background.yml b/config/feature_flags/development/process_issue_closure_in_background.yml
new file mode 100644
index 00000000000..6a97cbf888e
--- /dev/null
+++ b/config/feature_flags/development/process_issue_closure_in_background.yml
@@ -0,0 +1,8 @@
+---
+name: process_issue_closure_in_background
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94981
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371024
+milestone: '15.4'
+type: development
+group: group::source code
+default_enabled: false
diff --git a/config/feature_flags/development/product_intelligence_database_event_tracking.yml b/config/feature_flags/development/product_intelligence_database_event_tracking.yml
index 83a65398e87..545cdc47f2b 100644
--- a/config/feature_flags/development/product_intelligence_database_event_tracking.yml
+++ b/config/feature_flags/development/product_intelligence_database_event_tracking.yml
@@ -2,7 +2,6 @@
name: product_intelligence_database_event_tracking
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92079
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/368976
-rollout_issue_url:
milestone: '15.3'
type: development
group: group::product intelligence
diff --git a/config/feature_flags/development/shimo_integration.yml b/config/feature_flags/development/read_package_policy_rule.yml
index 28c0a7859bc..151c5a8c0b5 100644
--- a/config/feature_flags/development/shimo_integration.yml
+++ b/config/feature_flags/development/read_package_policy_rule.yml
@@ -1,8 +1,8 @@
---
-name: shimo_integration
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/73129
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/345356
-milestone: '14.5'
+name: read_package_policy_rule
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/90963
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/366711
+milestone: '15.4'
type: development
-group: group::integrations
+group: group::package
default_enabled: false
diff --git a/config/feature_flags/development/rely_on_protected_branches_cache.yml b/config/feature_flags/development/rely_on_protected_branches_cache.yml
new file mode 100644
index 00000000000..5154d4cee08
--- /dev/null
+++ b/config/feature_flags/development/rely_on_protected_branches_cache.yml
@@ -0,0 +1,8 @@
+---
+name: rely_on_protected_branches_cache
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92937
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370608
+milestone: '15.4'
+type: development
+group: group::source code
+default_enabled: false
diff --git a/config/feature_flags/development/datadog_integration_logs_collection.yml b/config/feature_flags/development/remove_extra_primary_submenu_options.yml
index 3e65b70d0e6..dda22c5d57e 100644
--- a/config/feature_flags/development/datadog_integration_logs_collection.yml
+++ b/config/feature_flags/development/remove_extra_primary_submenu_options.yml
@@ -1,8 +1,8 @@
---
-name: datadog_integration_logs_collection
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/74725
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/346339
-milestone: '14.8'
+name: remove_extra_primary_submenu_options
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96931
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373078
+milestone: '15.4'
type: development
-group: group::integrations
+group: group::foundations
default_enabled: true
diff --git a/config/feature_flags/development/mr_attention_requests.yml b/config/feature_flags/development/remove_user_attributes_groups.yml
index b80300d1acf..069d83455f9 100644
--- a/config/feature_flags/development/mr_attention_requests.yml
+++ b/config/feature_flags/development/remove_user_attributes_groups.yml
@@ -1,8 +1,8 @@
---
-name: mr_attention_requests
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/72773
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/343528
-milestone: '14.4'
+name: remove_user_attributes_groups
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97520
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372047
+milestone: '15.4'
type: development
group: group::code review
default_enabled: false
diff --git a/config/feature_flags/development/etag_merge_request_diff_batches.yml b/config/feature_flags/development/remove_user_attributes_projects.yml
index 8cd3ba8637a..fc1beb42a73 100644
--- a/config/feature_flags/development/etag_merge_request_diff_batches.yml
+++ b/config/feature_flags/development/remove_user_attributes_projects.yml
@@ -1,8 +1,8 @@
---
-name: etag_merge_request_diff_batches
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93953
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369488
-milestone: '15.3'
+name: remove_user_attributes_projects
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97520
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372047
+milestone: '15.4'
type: development
group: group::code review
default_enabled: false
diff --git a/config/feature_flags/development/report_artifact_build_completed_metrics_on_build_completion.yml b/config/feature_flags/development/report_artifact_build_completed_metrics_on_build_completion.yml
deleted file mode 100644
index 76b6c8c6b2f..00000000000
--- a/config/feature_flags/development/report_artifact_build_completed_metrics_on_build_completion.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: report_artifact_build_completed_metrics_on_build_completion
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/80334
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/369500
-milestone: '15.3'
-type: development
-group: group::static analysis
-default_enabled: false
diff --git a/config/feature_flags/development/restyle_login_page.yml b/config/feature_flags/development/restyle_login_page.yml
index ed3ae3ef6ea..bfe99590e6e 100644
--- a/config/feature_flags/development/restyle_login_page.yml
+++ b/config/feature_flags/development/restyle_login_page.yml
@@ -5,4 +5,4 @@ rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/368387
milestone: '15.2'
type: development
group: group::authentication and authorization
-default_enabled: false
+default_enabled: true
diff --git a/config/feature_flags/development/rpm_packages.yml b/config/feature_flags/development/rpm_packages.yml
new file mode 100644
index 00000000000..a342f1203f7
--- /dev/null
+++ b/config/feature_flags/development/rpm_packages.yml
@@ -0,0 +1,8 @@
+---
+name: rpm_packages
+introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96019'
+rollout_issue_url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/371863'
+milestone: '15.4'
+type: development
+group: group::package
+default_enabled: false
diff --git a/config/feature_flags/development/execute_build_hooks_inline.yml b/config/feature_flags/development/run_pipeline_graphql.yml
index 0389fca3bb1..78d8afbbee5 100644
--- a/config/feature_flags/development/execute_build_hooks_inline.yml
+++ b/config/feature_flags/development/run_pipeline_graphql.yml
@@ -1,8 +1,8 @@
---
-name: execute_build_hooks_inline
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/93665
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370387
-milestone: '15.3'
+name: run_pipeline_graphql
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96633
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372310
+milestone: '15.4'
type: development
-group: group::integrations
+group: group::pipeline authoring
default_enabled: false
diff --git a/config/feature_flags/development/skip_checking_namespace_in_query.yml b/config/feature_flags/development/skip_checking_namespace_in_query.yml
new file mode 100644
index 00000000000..2b9e3cbfe0b
--- /dev/null
+++ b/config/feature_flags/development/skip_checking_namespace_in_query.yml
@@ -0,0 +1,8 @@
+---
+name: skip_checking_namespace_in_query
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96559
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/370742
+milestone: '15.4'
+type: development
+group: group::source code
+default_enabled: false
diff --git a/config/feature_flags/development/track_work_items_activity.yml b/config/feature_flags/development/track_work_items_activity.yml
index e4614f2d5e2..3727bca1078 100644
--- a/config/feature_flags/development/track_work_items_activity.yml
+++ b/config/feature_flags/development/track_work_items_activity.yml
@@ -5,4 +5,4 @@ rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/352903
milestone: '14.9'
type: development
group: group::project management
-default_enabled: false
+default_enabled: true
diff --git a/config/feature_flags/development/ultimate_feature_removal_banner.yml b/config/feature_flags/development/ultimate_feature_removal_banner.yml
new file mode 100644
index 00000000000..14d7b4921c1
--- /dev/null
+++ b/config/feature_flags/development/ultimate_feature_removal_banner.yml
@@ -0,0 +1,8 @@
+---
+name: ultimate_feature_removal_banner
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/94271
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371690
+milestone: '15.4'
+type: development
+group: group::workspace
+default_enabled: false
diff --git a/config/feature_flags/development/usage_data_ci_i_testing_test_report_uploaded.yml b/config/feature_flags/development/usage_data_ci_i_testing_test_report_uploaded.yml
new file mode 100644
index 00000000000..1635427485b
--- /dev/null
+++ b/config/feature_flags/development/usage_data_ci_i_testing_test_report_uploaded.yml
@@ -0,0 +1,8 @@
+---
+name: usage_data_ci_i_testing_test_report_uploaded
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95112
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/339720
+milestone: '15.4'
+type: development
+group: group::pipeline insights
+default_enabled: false
diff --git a/config/feature_flags/development/usage_data_i_code_review_user_gitlab_cli_api_request.yml b/config/feature_flags/development/usage_data_i_code_review_user_gitlab_cli_api_request.yml
deleted file mode 100644
index 898c19a34a9..00000000000
--- a/config/feature_flags/development/usage_data_i_code_review_user_gitlab_cli_api_request.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: usage_data_i_code_review_user_gitlab_cli_api_request
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/83464
-rollout_issue_url:
-milestone: '14.10'
-type: development
-group: group::code review
-default_enabled: true
diff --git a/config/feature_flags/development/usage_data_i_code_review_user_jetbrains_api_request.yml b/config/feature_flags/development/usage_data_i_code_review_user_jetbrains_api_request.yml
deleted file mode 100644
index 3ab01c78a28..00000000000
--- a/config/feature_flags/development/usage_data_i_code_review_user_jetbrains_api_request.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: usage_data_i_code_review_user_jetbrains_api_request
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/78713
-rollout_issue_url:
-milestone: '14.8'
-type: development
-group: group::code review
-default_enabled: true
diff --git a/config/feature_flags/development/usage_quotas_for_all_editions.yml b/config/feature_flags/development/usage_quotas_for_all_editions.yml
new file mode 100644
index 00000000000..d4e4116542a
--- /dev/null
+++ b/config/feature_flags/development/usage_quotas_for_all_editions.yml
@@ -0,0 +1,8 @@
+---
+name: usage_quotas_for_all_editions
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96063
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371639
+milestone: '15.4'
+type: development
+group: group::utilization
+default_enabled: false
diff --git a/config/feature_flags/development/use_gitaly_pagination_for_refs.yml b/config/feature_flags/development/use_gitaly_pagination_for_refs.yml
new file mode 100644
index 00000000000..f44233e8d0b
--- /dev/null
+++ b/config/feature_flags/development/use_gitaly_pagination_for_refs.yml
@@ -0,0 +1,8 @@
+---
+name: use_gitaly_pagination_for_refs
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96448
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372049
+milestone: '15.4'
+type: development
+group: group::source code
+default_enabled: true
diff --git a/config/feature_flags/development/use_pipeline_wizard_for_pages.yml b/config/feature_flags/development/use_pipeline_wizard_for_pages.yml
index 10d4478934e..2de1b952f95 100644
--- a/config/feature_flags/development/use_pipeline_wizard_for_pages.yml
+++ b/config/feature_flags/development/use_pipeline_wizard_for_pages.yml
@@ -2,7 +2,7 @@
name: use_pipeline_wizard_for_pages
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/78276
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/349095
-milestone: '15.3'
+milestone: '15.4'
type: development
group: group::incubation
-default_enabled: false
+default_enabled: true
diff --git a/config/feature_flags/development/use_vsa_aggregated_tables.yml b/config/feature_flags/development/use_vsa_aggregated_tables.yml
deleted file mode 100644
index 89c24181eb1..00000000000
--- a/config/feature_flags/development/use_vsa_aggregated_tables.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: use_vsa_aggregated_tables
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/72978
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/343429
-milestone: '14.5'
-type: development
-group: group::optimize
-default_enabled: true
diff --git a/config/feature_flags/development/auto_ban_user_on_namespace_excessive_projects_download.yml b/config/feature_flags/development/user_destroy_with_limited_execution_time_worker.yml
index 6e14a8dd62c..9eacfc019ac 100644
--- a/config/feature_flags/development/auto_ban_user_on_namespace_excessive_projects_download.yml
+++ b/config/feature_flags/development/user_destroy_with_limited_execution_time_worker.yml
@@ -1,8 +1,8 @@
---
-name: auto_ban_user_on_namespace_excessive_projects_download
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91343
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/367611
-milestone: '15.3'
+name: user_destroy_with_limited_execution_time_worker
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97141
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/373138
+milestone: '15.4'
type: development
-group: group::anti-abuse
+group: group::authentication and authorization
default_enabled: false
diff --git a/config/feature_flags/development/traversal_ids_btree.yml b/config/feature_flags/development/vscode_web_ide.yml
index aaecafe04ae..3d29ae40e7c 100644
--- a/config/feature_flags/development/traversal_ids_btree.yml
+++ b/config/feature_flags/development/vscode_web_ide.yml
@@ -1,8 +1,8 @@
---
-name: traversal_ids_btree
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/69535
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/342871
-milestone: '14.5'
+name: vscode_web_ide
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95169
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371084
+milestone: '15.4'
type: development
-group: group::access
+group: group::editor
default_enabled: false
diff --git a/config/feature_flags/development/inactive_projects_deletion.yml b/config/feature_flags/development/webui_members_inherited_users.yml
index e9bb91f62cc..14704fd8341 100644
--- a/config/feature_flags/development/inactive_projects_deletion.yml
+++ b/config/feature_flags/development/webui_members_inherited_users.yml
@@ -1,8 +1,8 @@
---
-name: inactive_projects_deletion
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85689
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/357968
-milestone: '15.0'
+name: webui_members_inherited_users
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/83214
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/364078
+milestone: '15.4'
type: development
-group: group::compliance
+group: group::workspace
default_enabled: false
diff --git a/config/feature_flags/development/wiki_find_page_with_normal_repository_rpcs.yml b/config/feature_flags/development/wiki_find_page_with_normal_repository_rpcs.yml
new file mode 100644
index 00000000000..bad0578d50a
--- /dev/null
+++ b/config/feature_flags/development/wiki_find_page_with_normal_repository_rpcs.yml
@@ -0,0 +1,8 @@
+---
+name: wiki_find_page_with_normal_repository_rpcs
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95897
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/371487
+milestone: '15.4'
+type: development
+group: group::gitaly
+default_enabled: false
diff --git a/config/feature_flags/experiment/combined_registration.yml b/config/feature_flags/experiment/combined_registration.yml
deleted file mode 100644
index 0b867353946..00000000000
--- a/config/feature_flags/experiment/combined_registration.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: combined_registration
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67614
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/285533
-milestone: '14.3'
-type: experiment
-group: group::acquisition
-default_enabled: false
diff --git a/config/feature_flags/ops/database_async_index_destruction.yml b/config/feature_flags/ops/ci_partitioning_analyze_queries.yml
index a100b3a40f2..59ca52278e9 100644
--- a/config/feature_flags/ops/database_async_index_destruction.yml
+++ b/config/feature_flags/ops/ci_partitioning_analyze_queries.yml
@@ -1,8 +1,8 @@
---
-name: database_async_index_destruction
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92328
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/367964
-milestone: '15.3'
+name: ci_partitioning_analyze_queries
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97113
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372840
+milestone: '15.4'
type: ops
-group: group::database
+group: group::pipeline execution
default_enabled: false
diff --git a/config/feature_flags/development/detect_cross_database_modification.yml b/config/feature_flags/ops/detect_cross_database_modification.yml
index 7f74e136291..5f496118c4b 100644
--- a/config/feature_flags/development/detect_cross_database_modification.yml
+++ b/config/feature_flags/ops/detect_cross_database_modification.yml
@@ -1,8 +1,7 @@
---
name: detect_cross_database_modification
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/73316
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/344620
milestone: '14.5'
-type: development
+type: ops
group: group::sharding
default_enabled: false
diff --git a/config/feature_flags/ops/github_importer_attachments_import.yml b/config/feature_flags/ops/github_importer_attachments_import.yml
new file mode 100644
index 00000000000..ec4fe144933
--- /dev/null
+++ b/config/feature_flags/ops/github_importer_attachments_import.yml
@@ -0,0 +1,8 @@
+---
+name: github_importer_attachments_import
+introduced_by_url:
+rollout_issue_url:
+milestone: '15.4'
+type: ops
+group: group::import
+default_enabled: false
diff --git a/config/feature_flags/ops/increase_branch_cache_expiry.yml b/config/feature_flags/ops/increase_branch_cache_expiry.yml
new file mode 100644
index 00000000000..61b9d5b9c42
--- /dev/null
+++ b/config/feature_flags/ops/increase_branch_cache_expiry.yml
@@ -0,0 +1,8 @@
+---
+name: increase_branch_cache_expiry
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96739
+rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/372331
+milestone: '15.4'
+type: ops
+group: group::code review
+default_enabled: false
diff --git a/config/feature_flags/development/query_analyzer_gitlab_schema_metrics.yml b/config/feature_flags/ops/query_analyzer_gitlab_schema_metrics.yml
index b784105368c..9793eebb014 100644
--- a/config/feature_flags/development/query_analyzer_gitlab_schema_metrics.yml
+++ b/config/feature_flags/ops/query_analyzer_gitlab_schema_metrics.yml
@@ -1,8 +1,7 @@
---
name: query_analyzer_gitlab_schema_metrics
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/73839
-rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/345034
milestone: '14.5'
-type: development
+type: ops
group: group::sharding
default_enabled: false
diff --git a/config/feature_flags/undefined/gitaly_simplify_find_local_branches_response.yml b/config/feature_flags/undefined/gitaly_simplify_find_local_branches_response.yml
new file mode 100644
index 00000000000..c82f8ee26b7
--- /dev/null
+++ b/config/feature_flags/undefined/gitaly_simplify_find_local_branches_response.yml
@@ -0,0 +1,8 @@
+---
+name: gitaly_simplify_find_local_branches_response
+introduced_by_url: https://gitlab.com/gitlab-org/gitaly/-/merge_requests/4850
+rollout_issue_url: https://gitlab.com/gitlab-org/gitaly/-/issues/4452
+milestone: '15.4'
+type: undefined
+group: group::gitaly
+default_enabled: false
diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
index 6861864999f..da950c54fbf 100644
--- a/config/gitlab.yml.example
+++ b/config/gitlab.yml.example
@@ -183,6 +183,22 @@ production: &base
# plaintext. This can be a security risk.
# display_initial_root_password: false
+ # Allows delivery of emails using Microsoft Graph API with OAuth 2.0 client credentials flow.
+ microsoft_graph_mailer:
+ enabled: false
+ # The unique identifier for the user. To use Microsoft Graph on behalf of the user.
+ # user_id: "YOUR-USER-ID"
+ # The directory tenant the application plans to operate against, in GUID or domain-name format.
+ # tenant: "YOUR-TENANT-ID"
+ # The application ID that's assigned to your app. You can find this information in the portal where you registered your app.
+ # client_id: "YOUR-CLIENT-ID"
+ # The client secret that you generated for your app in the app registration portal.
+ # client_secret: "YOUR-CLIENT-SECRET-ID"
+ # Defaults to "https://login.microsoftonline.com".
+ # azure_ad_endpoint:
+ # Defaults to "https://graph.microsoft.com".
+ # graph_endpoint:
+
## Reply by email
# Allow users to comment on issues and merge requests by replying to notification emails.
# For documentation on how to set this up, see https://docs.gitlab.com/ee/administration/reply_by_email.html
diff --git a/config/helpers/evaluate_module_from_source.js b/config/helpers/evaluate_module_from_source.js
new file mode 100644
index 00000000000..b55bbb82b63
--- /dev/null
+++ b/config/helpers/evaluate_module_from_source.js
@@ -0,0 +1,37 @@
+const vm = require('vm');
+
+/**
+ * This function uses Node's `vm` modules to evaluate the `module.exports` of a given source string
+ *
+ * Example:
+ *
+ * ```javascript
+ * const { exports: moduleExports } = evaluateModuleFromSource("const foo = 7;\n module.exports.bar = 10 + foo;");
+ *
+ * assert(moduleExports.bar === 17);
+ * ```
+ *
+ * @param {String} source to be evaluated using Node's `vm` modules
+ * @param {{ require: Function }} options used in the context during evaluation of the Node module
+ * @returns {{ exports: any }} exports added to the script's `module.exports` context
+ */
+const evaluateModuleFromSource = (source, { require } = {}) => {
+ const context = {
+ module: {
+ exports: {},
+ },
+ require,
+ };
+
+ try {
+ const script = new vm.Script(source);
+ script.runInNewContext(context);
+ } catch (e) {
+ console.error(e);
+ throw e;
+ }
+
+ return context.module;
+};
+
+module.exports = { evaluateModuleFromSource };
diff --git a/config/initializers/01_secret_token.rb b/config/initializers/01_secret_token.rb
index c1f03dfdb07..bb13869c963 100644
--- a/config/initializers/01_secret_token.rb
+++ b/config/initializers/01_secret_token.rb
@@ -65,11 +65,10 @@ end
def set_missing_keys(defaults)
defaults.stringify_keys.each_with_object({}) do |(key, default), missing|
- if Rails.application.secrets[key].blank?
- warn_missing_secret(key)
+ next if Rails.application.secrets[key].present?
- missing[key] = Rails.application.secrets[key] = default
- end
+ warn_missing_secret(key)
+ missing[key] = Rails.application.secrets[key] = default
end
end
diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb
index b271cefadd9..3fc4b56f458 100644
--- a/config/initializers/1_settings.rb
+++ b/config/initializers/1_settings.rb
@@ -117,6 +117,27 @@ Settings.omniauth.cas3['session_duration'] ||= 8.hours
Settings.omniauth['session_tickets'] ||= Settingslogic.new({})
Settings.omniauth.session_tickets['cas3'] = 'ticket'
+# Handle backward compatibility with the renamed kerberos_spnego provider
+# https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96335#note_1094265436
+Gitlab.ee do
+ kerberos_spnego = Settings.omniauth.providers.find { |p| p.name == 'kerberos_spnego' }
+ if kerberos_spnego
+ Settings.omniauth.providers.delete_if { |p| p.name == 'kerberos' }
+ kerberos_spnego['name'] = 'kerberos'
+
+ omniauth_keys = %w(allow_single_sign_on auto_link_user external_providers sync_profile_from_provider allow_bypass_two_factor)
+ omniauth_keys.each do |key|
+ next unless Settings.omniauth[key].is_a?(Array)
+
+ Settings.omniauth[key].map! { |p| p == 'kerberos_spnego' ? 'kerberos' : p }
+ end
+
+ if Settings.omniauth['auto_sign_in_with_provider'] == 'kerberos_spnego'
+ Settings.omniauth['auto_sign_in_with_provider'] = 'kerberos'
+ end
+ end
+end
+
# Fill out omniauth-gitlab settings. It is needed for easy set up GHE or GH by just specifying url.
github_default_url = "https://github.com"
@@ -214,11 +235,11 @@ Settings.gitlab['import_sources'] ||= Gitlab::ImportSources.values
Settings.gitlab['trusted_proxies'] ||= []
Settings.gitlab['content_security_policy'] ||= {}
Settings.gitlab['allowed_hosts'] ||= []
-Settings.gitlab['no_todos_messages'] ||= YAML.load_file(Rails.root.join('config', 'no_todos_messages.yml'))
Settings.gitlab['impersonation_enabled'] ||= true if Settings.gitlab['impersonation_enabled'].nil?
Settings.gitlab['usage_ping_enabled'] = true if Settings.gitlab['usage_ping_enabled'].nil?
Settings.gitlab['max_request_duration_seconds'] ||= 57
Settings.gitlab['display_initial_root_password'] = false if Settings.gitlab['display_initial_root_password'].nil?
+Settings.gitlab['weak_passwords_digest_set'] ||= YAML.safe_load(File.open(Rails.root.join('config', 'weak_password_digests.yml')), permitted_classes: [String]).to_set.freeze
Gitlab.ee do
Settings.gitlab['mirror_max_delay'] ||= 300
@@ -547,7 +568,7 @@ Settings.cron_jobs['container_registry_migration_observer_worker'] ||= Settingsl
Settings.cron_jobs['container_registry_migration_observer_worker']['cron'] ||= '*/30 * * * *'
Settings.cron_jobs['container_registry_migration_observer_worker']['job_class'] = 'ContainerRegistry::Migration::ObserverWorker'
Settings.cron_jobs['container_registry_migration_enqueuer_worker'] ||= Settingslogic.new({})
-Settings.cron_jobs['container_registry_migration_enqueuer_worker']['cron'] ||= '45 */1 * * *'
+Settings.cron_jobs['container_registry_migration_enqueuer_worker']['cron'] ||= '15,45 */1 * * *'
Settings.cron_jobs['container_registry_migration_enqueuer_worker']['job_class'] = 'ContainerRegistry::Migration::EnqueuerWorker'
Settings.cron_jobs['image_ttl_group_policy_worker'] ||= Settingslogic.new({})
Settings.cron_jobs['image_ttl_group_policy_worker']['cron'] ||= '40 0 * * *'
@@ -633,6 +654,9 @@ Settings.cron_jobs['loose_foreign_keys_cleanup_worker']['job_class'] = 'LooseFor
Settings.cron_jobs['ci_runner_versions_reconciliation_worker'] ||= Settingslogic.new({})
Settings.cron_jobs['ci_runner_versions_reconciliation_worker']['cron'] ||= '@daily'
Settings.cron_jobs['ci_runner_versions_reconciliation_worker']['job_class'] = 'Ci::Runners::ReconcileExistingRunnerVersionsCronWorker'
+Settings.cron_jobs['users_migrate_records_to_ghost_user_in_batches_worker'] ||= Settingslogic.new({})
+Settings.cron_jobs['users_migrate_records_to_ghost_user_in_batches_worker']['cron'] ||= '*/1 * * * *'
+Settings.cron_jobs['users_migrate_records_to_ghost_user_in_batches_worker']['job_class'] = 'Users::MigrateRecordsToGhostUserInBatchesWorker'
Gitlab.ee do
Settings.cron_jobs['analytics_devops_adoption_create_all_snapshots_worker'] ||= Settingslogic.new({})
@@ -713,9 +737,6 @@ Gitlab.ee do
Settings.cron_jobs['ldap_sync_worker'] ||= Settingslogic.new({})
Settings.cron_jobs['ldap_sync_worker']['cron'] ||= '30 1 * * *'
Settings.cron_jobs['ldap_sync_worker']['job_class'] = 'LdapSyncWorker'
- Settings.cron_jobs['free_user_cap_data_remediation'] ||= Settingslogic.new({})
- Settings.cron_jobs['free_user_cap_data_remediation']['cron'] ||= '17 6,10,14,18 * * *'
- Settings.cron_jobs['free_user_cap_data_remediation']['job_class'] = 'Namespaces::FreeUserCap::RemediationWorker'
Settings.cron_jobs['update_max_seats_used_for_gitlab_com_subscriptions_worker'] ||= Settingslogic.new({})
Settings.cron_jobs['update_max_seats_used_for_gitlab_com_subscriptions_worker']['cron'] ||= '0 12 * * *'
Settings.cron_jobs['update_max_seats_used_for_gitlab_com_subscriptions_worker']['job_class'] = 'UpdateMaxSeatsUsedForGitlabComSubscriptionsWorker'
@@ -791,7 +812,7 @@ end
#
Settings['sidekiq'] ||= Settingslogic.new({})
Settings['sidekiq']['log_format'] ||= 'default'
-Settings['sidekiq']['routing_rules'] ||= []
+Settings['sidekiq']['routing_rules'] = Settings.__send__(:build_sidekiq_routing_rules, Settings['sidekiq']['routing_rules'])
#
# GitLab Shell
@@ -885,6 +906,18 @@ Settings['satellites'] ||= Settingslogic.new({})
Settings.satellites['path'] = Settings.absolute(Settings.satellites['path'] || "tmp/repo_satellites/")
#
+# Microsoft Graph Mailer
+#
+Settings['microsoft_graph_mailer'] ||= Settingslogic.new({})
+Settings.microsoft_graph_mailer['enabled'] = false if Settings.microsoft_graph_mailer['enabled'].nil?
+Settings.microsoft_graph_mailer['user_id'] ||= nil
+Settings.microsoft_graph_mailer['tenant'] ||= nil
+Settings.microsoft_graph_mailer['client_id'] ||= nil
+Settings.microsoft_graph_mailer['client_secret'] ||= nil
+Settings.microsoft_graph_mailer['azure_ad_endpoint'] ||= 'https://login.microsoftonline.com'
+Settings.microsoft_graph_mailer['graph_endpoint'] ||= 'https://graph.microsoft.com'
+
+#
# Kerberos
#
Gitlab.ee do
@@ -897,8 +930,8 @@ Gitlab.ee do
Settings.kerberos['https'] = Settings.gitlab.https if Settings.kerberos['https'].nil?
Settings.kerberos['port'] ||= Settings.kerberos.https ? 8443 : 8088
- if Settings.kerberos['enabled'] && !Settings.omniauth.providers.map(&:name).include?('kerberos_spnego')
- Settings.omniauth.providers << Settingslogic.new({ 'name' => 'kerberos_spnego' })
+ if Settings.kerberos['enabled'] && !Settings.omniauth.providers.map(&:name).include?('kerberos')
+ Settings.omniauth.providers << Settingslogic.new({ 'name' => 'kerberos' })
end
end
diff --git a/config/initializers/7_redis.rb b/config/initializers/7_redis.rb
index 415574e1ce1..1e2786db413 100644
--- a/config/initializers/7_redis.rb
+++ b/config/initializers/7_redis.rb
@@ -1,5 +1,9 @@
# frozen_string_literal: true
+require 'gitlab/redis'
+
+Redis.raise_deprecations = true unless Rails.env.production?
+
# We set the instance variable directly to suppress warnings.
# We cannot switch to the new behavior until we change all existing `redis.exists` calls to `redis.exists?`.
# Some gems also need to be updated
@@ -13,11 +17,6 @@ Redis::Client.prepend(Gitlab::Instrumentation::RedisInterceptor)
# 1. Sidekiq
# 2. Rails.cache
# 3. HTTP clients
-Gitlab::Redis::Cache.with { nil }
-Gitlab::Redis::Queues.with { nil }
-Gitlab::Redis::SharedState.with { nil }
-Gitlab::Redis::TraceChunks.with { nil }
-Gitlab::Redis::RateLimiting.with { nil }
-Gitlab::Redis::Sessions.with { nil }
-Gitlab::Redis::DuplicateJobs.with { nil }
-Gitlab::Redis::SidekiqStatus.with { nil }
+Gitlab::Redis::ALL_CLASSES.each do |redis_instance|
+ redis_instance.with { nil }
+end
diff --git a/config/initializers/active_record_keyset_pagination.rb b/config/initializers/active_record_keyset_pagination.rb
index f5692c95276..7f830cafd31 100644
--- a/config/initializers/active_record_keyset_pagination.rb
+++ b/config/initializers/active_record_keyset_pagination.rb
@@ -1,10 +1,36 @@
# frozen_string_literal: true
module PaginatorExtension
+ KEYSET_ORDER_PLACEHOLDER = Object.new
+
# This method loads the records for the requested page and returns a keyset paginator object.
def keyset_paginate(cursor: nil, per_page: 20, keyset_order_options: {})
Gitlab::Pagination::Keyset::Paginator.new(scope: self.dup, cursor: cursor, per_page: per_page, keyset_order_options: keyset_order_options)
end
+
+ # This modifies `reverse_sql_order` so that it is aware of Gitlab::Pagination::Keyset::Order which
+ # can reverse order clauses with NULLS LAST because we provide it a `reversed_order_expression`.
+ # This allows us to use `#last` on these relations.
+ #
+ # Overrides https://github.com/rails/rails/blob/v6.1.6.1/activerecord/lib/active_record/relation/query_methods.rb#L1331-L1358
+ def reverse_sql_order(order_query)
+ return super if order_query.empty?
+
+ keyset_order_values = []
+
+ order_query_without_keyset = order_query.flat_map do |o|
+ next o unless o.is_a?(Gitlab::Pagination::Keyset::Order)
+
+ keyset_order_values << o
+ KEYSET_ORDER_PLACEHOLDER
+ end
+
+ super(order_query_without_keyset).map do |o|
+ next o unless o == KEYSET_ORDER_PLACEHOLDER
+
+ keyset_order_values.shift.reversed_order
+ end
+ end
end
ActiveSupport.on_load(:active_record) do
diff --git a/config/initializers/doorkeeper.rb b/config/initializers/doorkeeper.rb
index 867f3fd47cc..918b2767c4d 100644
--- a/config/initializers/doorkeeper.rb
+++ b/config/initializers/doorkeeper.rb
@@ -90,7 +90,9 @@ Doorkeeper.configure do
# Check out the wiki for more information on customization
access_token_methods :from_access_token_param, :from_bearer_authorization, :from_bearer_param
- hash_token_secrets using: '::Gitlab::DoorkeeperSecretStoring::Pbkdf2Sha512', fallback: :plain
+ hash_token_secrets using: '::Gitlab::DoorkeeperSecretStoring::Token::Pbkdf2Sha512', fallback: :plain
+
+ hash_application_secrets using: '::Gitlab::DoorkeeperSecretStoring::Secret::Pbkdf2Sha512', fallback: :plain
# Specify what grant flows are enabled in array of Strings. The valid
# strings and the flows they enable are:
diff --git a/config/initializers/excon.rb b/config/initializers/excon.rb
new file mode 100644
index 00000000000..132cb2ff15b
--- /dev/null
+++ b/config/initializers/excon.rb
@@ -0,0 +1,8 @@
+# frozen_string_literal: true
+
+require 'openssl'
+
+# Excon ships its own bundled certs by default. Avoid confusion
+# by using the same set that GitLab uses.
+Excon.defaults[:ssl_ca_file] = OpenSSL::X509::DEFAULT_CERT_FILE
+Excon.defaults[:ssl_verify_peer] = true
diff --git a/config/initializers/gitlab_experiment.rb b/config/initializers/gitlab_experiment.rb
index a201a075f62..6d2795caf51 100644
--- a/config/initializers/gitlab_experiment.rb
+++ b/config/initializers/gitlab_experiment.rb
@@ -65,7 +65,7 @@ Gitlab::Experiment.configure do |config|
# permitted, and will be sent along using Gitlab::Tracking::StandardContext.
#
config.tracking_behavior = lambda do |action, event_args|
- Gitlab::Tracking.event(name, action.to_s, **event_args.merge(
+ Gitlab::Tracking.event(name, action, **event_args.merge(
context: (event_args[:context] || []) << SnowplowTracker::SelfDescribingJson.new(
'iglu:com.gitlab/gitlab_experiment/jsonschema/1-0-0', signature
)
diff --git a/config/initializers/load_balancing.rb b/config/initializers/load_balancing.rb
index 290481f7296..bcc62a6be5d 100644
--- a/config/initializers/load_balancing.rb
+++ b/config/initializers/load_balancing.rb
@@ -2,15 +2,6 @@
Gitlab::Application.configure do |config|
config.middleware.use(Gitlab::Database::LoadBalancing::RackMiddleware)
-
- # We need re-rerun the setup when code reloads in development
- config.reloader.to_prepare do
- if Rails.env.development? || Rails.env.test?
- Gitlab::Database::LoadBalancing.base_models.each do |model|
- Gitlab::Database::LoadBalancing::Setup.new(model).setup
- end
- end
- end
end
Gitlab::Database::LoadBalancing.base_models.each do |model|
@@ -23,8 +14,9 @@ Gitlab::Database::LoadBalancing.base_models.each do |model|
# information.
Gitlab::Database::LoadBalancing::Setup.new(model).setup
+ # We need re-rerun the setup when code reloads in development
Rails.application.reloader.to_prepare do
- if Rails.env.development?
+ if Rails.env.development? || Rails.env.test?
Gitlab::Database::LoadBalancing::Setup.new(model).setup
end
end
diff --git a/config/initializers/lookbook.rb b/config/initializers/lookbook.rb
deleted file mode 100644
index 4cb1b827286..00000000000
--- a/config/initializers/lookbook.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-# frozen_string_literal: true
-
-if Rails.env.development?
- # :nocov: Lookbook is only available in development
- Lookbook::ApplicationController.class_eval do
- content_security_policy false
- end
-
- Rails.application.configure do
- config.lookbook.experimental_features = [:pages]
- config.lookbook.page_paths = ["#{config.root}/spec/components/docs"]
- end
- # :nocov:
-end
diff --git a/config/initializers/microsoft_graph_mailer.rb b/config/initializers/microsoft_graph_mailer.rb
new file mode 100644
index 00000000000..45fdef1c57d
--- /dev/null
+++ b/config/initializers/microsoft_graph_mailer.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+if Gitlab.config.microsoft_graph_mailer.enabled
+ ActionMailer::Base.delivery_method = :microsoft_graph
+
+ ActionMailer::Base.microsoft_graph_settings = {
+ user_id: Gitlab.config.microsoft_graph_mailer.user_id,
+ tenant: Gitlab.config.microsoft_graph_mailer.tenant,
+ client_id: Gitlab.config.microsoft_graph_mailer.client_id,
+ client_secret: Gitlab.config.microsoft_graph_mailer.client_secret,
+ azure_ad_endpoint: Gitlab.config.microsoft_graph_mailer.azure_ad_endpoint,
+ graph_endpoint: Gitlab.config.microsoft_graph_mailer.graph_endpoint
+ }
+end
diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb
index 38bd1034b36..2454b5ea818 100644
--- a/config/initializers/omniauth.rb
+++ b/config/initializers/omniauth.rb
@@ -11,6 +11,17 @@ if Gitlab::Auth::Ldap::Config.enabled?
end
end
+module OmniAuth
+ module Strategies
+ class AzureActivedirectoryV2
+ # override until https://github.com/RIPAGlobal/omniauth-azure-activedirectory-v2/pull/6 is merged
+ def callback_url
+ full_host + callback_path
+ end
+ end
+ end
+end
+
OmniAuth.config.full_host = Gitlab::OmniauthInitializer.full_host
OmniAuth.config.allowed_request_methods = [:post]
diff --git a/config/initializers/postgres_partitioning.rb b/config/initializers/postgres_partitioning.rb
index 4de6e706f16..e7f29ee1a84 100644
--- a/config/initializers/postgres_partitioning.rb
+++ b/config/initializers/postgres_partitioning.rb
@@ -1,43 +1,48 @@
# frozen_string_literal: true
-Gitlab::Database::Partitioning.register_models([
- AuditEvent,
- WebHookLog,
- LooseForeignKeys::DeletedRecord,
- Gitlab::Database::BackgroundMigration::BatchedJobTransitionLog
-])
+Gitlab::Database::Partitioning.register_models(
+ [
+ AuditEvent,
+ WebHookLog,
+ LooseForeignKeys::DeletedRecord,
+ Gitlab::Database::BackgroundMigration::BatchedJobTransitionLog
+ ])
if Gitlab.ee?
- Gitlab::Database::Partitioning.register_models([
- IncidentManagement::PendingEscalations::Alert,
- IncidentManagement::PendingEscalations::Issue
- ])
+ Gitlab::Database::Partitioning.register_models(
+ [
+ IncidentManagement::PendingEscalations::Alert,
+ IncidentManagement::PendingEscalations::Issue,
+ Security::Finding
+ ])
else
- Gitlab::Database::Partitioning.register_tables([
- {
- limit_connection_names: %i[main],
- table_name: 'incident_management_pending_alert_escalations',
- partitioned_column: :process_at, strategy: :monthly
- },
- {
- limit_connection_names: %i[main],
- table_name: 'incident_management_pending_issue_escalations',
- partitioned_column: :process_at, strategy: :monthly
- }
- ])
+ Gitlab::Database::Partitioning.register_tables(
+ [
+ {
+ limit_connection_names: %i[main],
+ table_name: 'incident_management_pending_alert_escalations',
+ partitioned_column: :process_at, strategy: :monthly
+ },
+ {
+ limit_connection_names: %i[main],
+ table_name: 'incident_management_pending_issue_escalations',
+ partitioned_column: :process_at, strategy: :monthly
+ }
+ ])
end
# The following tables are already defined as models
unless Gitlab.jh?
- Gitlab::Database::Partitioning.register_tables([
- # This should be synchronized with the following model:
- # https://jihulab.com/gitlab-cn/gitlab/-/blob/main-jh/jh/app/models/phone/verification_code.rb
- {
- limit_connection_names: %i[main],
- table_name: 'verification_codes',
- partitioned_column: :created_at, strategy: :monthly
- }
- ])
+ Gitlab::Database::Partitioning.register_tables(
+ [
+ # This should be synchronized with the following model:
+ # https://jihulab.com/gitlab-cn/gitlab/-/blob/main-jh/jh/app/models/phone/verification_code.rb
+ {
+ limit_connection_names: %i[main],
+ table_name: 'verification_codes',
+ partitioned_column: :created_at, strategy: :monthly
+ }
+ ])
end
Gitlab::Database::Partitioning.sync_partitions_ignore_db_error
diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb
index 29df6da6ef1..262ef1dea21 100644
--- a/config/initializers/sidekiq.rb
+++ b/config/initializers/sidekiq.rb
@@ -127,3 +127,4 @@ end
Sidekiq::Scheduled::Poller.prepend Gitlab::Patch::SidekiqPoller
Sidekiq::Cron::Poller.prepend Gitlab::Patch::SidekiqPoller
+Sidekiq::Cron::Poller.prepend Gitlab::Patch::SidekiqCronPoller
diff --git a/config/initializers/sidekiq_cluster.rb b/config/initializers/sidekiq_cluster.rb
index 2f9c1de47eb..6fd598b3e25 100644
--- a/config/initializers/sidekiq_cluster.rb
+++ b/config/initializers/sidekiq_cluster.rb
@@ -9,22 +9,23 @@ if ENV['ENABLE_SIDEKIQ_CLUSTER']
loop do
sleep(5)
+ next if Process.ppid == parent
+
# In cluster mode it's possible that the master process is SIGKILL'd. In
# this case the parent PID changes and we need to terminate ourselves.
- if Process.ppid != parent
- Process.kill(:TERM, Process.pid)
-
- # Allow sidekiq to cleanly terminate and push any running jobs back
- # into the queue. We use the configured timeout and add a small
- # grace period
- sleep(Sidekiq.options[:timeout] + 5)
-
- # Signaling the Sidekiq Pgroup as KILL is not forwarded to
- # a possible child process. In Sidekiq Cluster, all child Sidekiq
- # processes are PGROUP leaders (each process has its own pgroup).
- Process.kill(:KILL, 0)
- break
- end
+
+ Process.kill(:TERM, Process.pid)
+
+ # Allow sidekiq to cleanly terminate and push any running jobs back
+ # into the queue. We use the configured timeout and add a small
+ # grace period
+ sleep(Sidekiq.options[:timeout] + 5)
+
+ # Signaling the Sidekiq Pgroup as KILL is not forwarded to
+ # a possible child process. In Sidekiq Cluster, all child Sidekiq
+ # processes are PGROUP leaders (each process has its own pgroup).
+ Process.kill(:KILL, 0)
+ break
end
end
end
diff --git a/config/initializers/wikicloth_redos_patch.rb b/config/initializers/wikicloth_redos_patch.rb
index 4ff545dd6f7..95901378891 100644
--- a/config/initializers/wikicloth_redos_patch.rb
+++ b/config/initializers/wikicloth_redos_patch.rb
@@ -1,3 +1,27 @@
+# This file contains code based on the wikicloth project:
+# https://github.com/nricciar/wikicloth
+#
+# Copyright (c) 2009 The wikicloth authors.
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
# frozen_string_literal: true
require 'wikicloth'
@@ -20,7 +44,10 @@ require 'digest/sha2'
# - https://gitlab.com/gitlab-org/gitlab/-/issues/361266
# Guard to ensure we remember to delete this patch if they ever release a new version of wikicloth
-raise 'New version of WikiCloth detected, please remove this patch' unless Gem::Version.new(WikiCloth::VERSION) == Gem::Version.new('0.8.1')
+unless Gem::Version.new(WikiCloth::VERSION) == Gem::Version.new('0.8.1')
+ raise 'New version of WikiCloth detected, please either update the version for this check, ' \
+ 'or remove this patch if no longer needed'
+end
# rubocop:disable Style/ClassAndModuleChildren
# rubocop:disable Layout/SpaceAroundEqualsInParameterDefault
@@ -43,6 +70,12 @@ raise 'New version of WikiCloth detected, please remove this patch' unless Gem::
# rubocop:disable Style/RegexpLiteralMixedPreserve
# rubocop:disable Style/RedundantRegexpCharacterClass
# rubocop:disable Performance/StringInclude
+# rubocop:disable Layout/LineLength
+# rubocop:disable Style/RedundantSelf
+# rubocop:disable Style/SymbolProc
+# rubocop:disable Layout/SpaceInsideParens
+# rubocop:disable Style/GuardClause
+# rubocop:disable Style/RedundantRegexpEscape
module WikiCloth
class WikiCloth
def render(opt={})
@@ -218,3 +251,9 @@ end
# rubocop:enable Style/RegexpLiteralMixedPreserve
# rubocop:enable Style/RedundantRegexpCharacterClass
# rubocop:enable Performance/StringInclude
+# rubocop:enable Layout/LineLength
+# rubocop:enable Style/RedundantSelf
+# rubocop:enable Style/SymbolProc
+# rubocop:enable Layout/SpaceInsideParens
+# rubocop:enable Style/GuardClause
+# rubocop:enable Style/RedundantRegexpEscape
diff --git a/config/initializers/wikicloth_ruby_3_patch.rb b/config/initializers/wikicloth_ruby_3_patch.rb
new file mode 100644
index 00000000000..d80383a125d
--- /dev/null
+++ b/config/initializers/wikicloth_ruby_3_patch.rb
@@ -0,0 +1,272 @@
+# This file contains code based on the wikicloth project:
+# https://github.com/nricciar/wikicloth
+#
+# Copyright (c) 2009 The wikicloth authors.
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# frozen_string_literal: true
+
+require 'wikicloth'
+require 'wikicloth/wiki_buffer/var'
+
+# Adds patch for changes in this PRs:
+#
+# https://github.com/nricciar/wikicloth/pull/110
+#
+# The maintainers are not releasing new versions, so we
+# need to patch it here.
+#
+# If they ever do release a version, then we can remove this file.
+#
+# See:
+# - https://gitlab.com/gitlab-org/gitlab/-/issues/372400
+
+# Guard to ensure we remember to delete this patch if they ever release a new version of wikicloth
+unless Gem::Version.new(WikiCloth::VERSION) == Gem::Version.new('0.8.1')
+ raise 'New version of WikiCloth detected, please either update the version for this check, ' \
+ 'or remove this patch if no longer needed'
+end
+
+# rubocop:disable Style/ClassAndModuleChildren
+# rubocop:disable Style/HashSyntax
+# rubocop:disable Layout/SpaceAfterComma
+# rubocop:disable Style/RescueStandardError
+# rubocop:disable Metrics/AbcSize
+# rubocop:disable Metrics/CyclomaticComplexity
+# rubocop:disable Metrics/PerceivedComplexity
+# rubocop:disable Cop/LineBreakAroundConditionalBlock
+# rubocop:disable Layout/EmptyLineAfterGuardClause
+# rubocop:disable Performance/ReverseEach
+# rubocop:disable Style/PerlBackrefs
+# rubocop:disable Style/RedundantRegexpCharacterClass
+# rubocop:disable Performance/StringInclude
+# rubocop:disable Style/IfUnlessModifier
+# rubocop:disable Layout/LineLength
+# rubocop:disable Lint/DeprecatedClassMethods
+# rubocop:disable Lint/UselessAssignment
+# rubocop:disable Lint/RedundantStringCoercion
+# rubocop:disable Style/StringLiteralsInInterpolation
+# rubocop:disable Lint/UriEscapeUnescape
+# rubocop:disable Style/For
+# rubocop:disable Style/SlicingWithRange
+# rubocop:disable Style/GuardClause
+# rubocop:disable Style/ZeroLengthPredicate
+# rubocop:disable Cop/LineBreakAfterGuardClauses
+# rubocop:disable Layout/MultilineHashBraceLayout
+module WikiCloth
+ class WikiCloth
+ class MathExtension < Extension
+ # <math>latex markup</math>
+ #
+ element 'math', :skip_html => true, :run_globals => false do |buffer|
+ blahtex_path = @options[:blahtex_path] || '/usr/bin/blahtex'
+ blahtex_png_path = @options[:blahtex_png_path] || '/tmp'
+ blahtex_options = @options[:blahtex_options] || '--texvc-compatible-commands --mathml-version-1-fonts --disallow-plane-1 --spacing strict'
+
+ if File.exists?(blahtex_path) && @options[:math_formatter] != :google
+ begin
+ # pass tex markup to blahtex
+ response = IO.popen("#{blahtex_path} #{blahtex_options} --png --mathml --png-directory #{blahtex_png_path}","w+") do |pipe|
+ pipe.write(buffer.element_content)
+ pipe.close_write
+ pipe.gets
+ end
+
+ xml_response = REXML::Document.new(response).root
+
+ if @options[:blahtex_html_prefix]
+ # render as embedded image
+ file_md5 = xml_response.elements["png/md5"].text
+ "<img src=\"#{File.join(@options[:blahtex_html_prefix],"#{file_md5}.png")}\" />"
+ else
+ # render as mathml
+ html = xml_response.elements["mathml/markup"].text
+ "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">#{xml_response.elements["mathml/markup"].children.to_s}</math>"
+ end
+ rescue => err
+ # blahtex error
+ "<span class=\"error\">#{I18n.t("unable to parse mathml", :error => err)}</span>"
+ end
+ else
+ # if blahtex does not exist fallback to google charts api
+ # This is the patched line from:
+ # https://github.com/nricciar/wikicloth/pull/110/files#diff-f0cb4c400957bbdcc4c97d69d2aa7f48d8ba56c5943e484863f620605d7d17d4R37
+ encoded_string = URI.encode_www_form_component(buffer.element_content)
+ "<img src=\"https://chart.googleapis.com/chart?cht=tx&chl=#{encoded_string}\" />"
+ end
+ end
+ end
+
+ class WikiBuffer::Var < WikiBuffer
+ def default_functions(name,params)
+ case name
+ when "#if"
+ params.first.blank? ? params[2] : params[1]
+ when "#switch"
+ match = params.first
+ default = nil
+ for p in params[1..-1]
+ temp = p.split("=")
+ if p !~ /=/ && temp.length == 1 && p == params.last
+ return p
+ elsif temp.instance_of?(Array) && temp.length > 0
+ test = temp.first.strip
+ default = temp[1..-1].join("=").strip if test == "#default"
+ return temp[1..-1].join("=").strip if test == match || (test == "none" && match.blank?)
+ end
+ end
+ default.nil? ? "" : default
+ when "#expr"
+ begin
+ ExpressionParser::Parser.new.parse(params.first)
+ rescue RuntimeError
+ I18n.t('expression error', :error => $!)
+ end
+ when "#ifexpr"
+ val = false
+ begin
+ val = ExpressionParser::Parser.new.parse(params.first)
+ rescue RuntimeError
+ end
+ if val
+ params[1]
+ else
+ params[2]
+ end
+ when "#ifeq"
+ if params[0] =~ /^[0-9A-Fa-f]+$/ && params[1] =~ /^[0-9A-Fa-f]+$/
+ params[0].to_i == params[1].to_i ? params[2] : params[3]
+ else
+ params[0] == params[1] ? params[2] : params[3]
+ end
+ when "#len"
+ params.first.length
+ when "#sub"
+ params.first[params[1].to_i,params[2].to_i]
+ when "#pad"
+ case params[3]
+ when "right"
+ params[0].ljust(params[1].to_i,params[2])
+ when "center"
+ params[0].center(params[1].to_i,params[2])
+ else
+ params[0].rjust(params[1].to_i,params[2])
+ end
+ when "#iferror"
+ params.first =~ /error/ ? params[1] : params[2]
+ when "#capture"
+ @options[:params][params.first] = params[1]
+ ""
+ when "urlencode"
+ # This is the patched line from:
+ # https://github.com/nricciar/wikicloth/pull/110/files#diff-f262faf4fadb222cca87185be0fb65b3f49659abc840794cc83a736d41310fb1R170
+ URI.encode_www_form_component(params.first)
+ when "lc"
+ params.first.downcase
+ when "uc"
+ params.first.upcase
+ when "ucfirst"
+ params.first.capitalize
+ when "lcfirst"
+ params.first[0,1].downcase + params.first[1..-1]
+ when "anchorencode"
+ params.first.gsub(/\s+/,'_')
+ when "plural"
+ begin
+ expr_value = ExpressionParser::Parser.new.parse(params.first)
+ expr_value.to_i == 1 ? params[1] : params[2]
+ rescue RuntimeError
+ I18n.t('expression error', :error => $!)
+ end
+ when "ns"
+ values = {
+ "" => "", "0" => "",
+ "1" => localise_ns("Talk"), "talk" => localise_ns("Talk"),
+ "6" => localise_ns("File"), "file" => localise_ns("File"), "image" => localise_ns("File"),
+ "10" => localise_ns("Template"), "template" => localise_ns("Template"),
+ "14" => localise_ns("Category"), "category" => localise_ns("Category"),
+ "-1" => localise_ns("Special"), "special" => localise_ns("Special"),
+ "12" => localise_ns("Help"), "help" => localise_ns("Help"),
+ "-2" => localise_ns("Media"), "media" => localise_ns("Media") }
+
+ values[localise_ns(params.first,:en).gsub(/\s+/,'_').downcase]
+ when "#language"
+ WikiNamespaces.language_name(params.first)
+ when "#tag"
+ return "" if params.empty?
+ elem = Builder::XmlMarkup.new
+ return elem.tag!(params.first) if params.length == 1
+ return elem.tag!(params.first) { |e| e << params.last } if params.length == 2
+ tag_attrs = {}
+ params[1..-2].each do |attr|
+ tag_attrs[$1] = $2 if attr =~ /^\s*([\w]+)\s*=\s*"(.*)"\s*$/
+ end
+ elem.tag!(params.first,tag_attrs) { |e| e << params.last }
+ when "debug"
+ ret = nil
+ case params.first
+ when "param"
+ @options[:buffer].buffers.reverse.each do |b|
+ if b.instance_of?(WikiBuffer::HTMLElement) && b.element_name == "template"
+ ret = b.get_param(params[1])
+ end
+ end
+ ret
+ when "buffer"
+ ret = "<pre>"
+ buffer = @options[:buffer].buffers
+ buffer.each do |b|
+ ret += " --- #{b.class}"
+ ret += b.instance_of?(WikiBuffer::HTMLElement) ? " -- #{b.element_name}\n" : " -- #{b.data}\n"
+ end
+ "#{ret}</pre>"
+ end
+ end
+ end
+ end
+ end
+end
+# rubocop:enable Style/ClassAndModuleChildren
+# rubocop:enable Style/HashSyntax
+# rubocop:enable Layout/SpaceAfterComma
+# rubocop:enable Style/RescueStandardError
+# rubocop:enable Metrics/AbcSize
+# rubocop:enable Metrics/CyclomaticComplexity
+# rubocop:enable Metrics/PerceivedComplexity
+# rubocop:enable Cop/LineBreakAroundConditionalBlock
+# rubocop:enable Layout/EmptyLineAfterGuardClause
+# rubocop:enable Performance/ReverseEach
+# rubocop:enable Style/PerlBackrefs
+# rubocop:enable Style/RedundantRegexpCharacterClass
+# rubocop:enable Performance/StringInclude
+# rubocop:enable Style/IfUnlessModifier
+# rubocop:enable Layout/LineLength
+# rubocop:enable Lint/DeprecatedClassMethods
+# rubocop:enable Lint/UselessAssignment
+# rubocop:enable Lint/RedundantStringCoercion
+# rubocop:enable Style/StringLiteralsInInterpolation
+# rubocop:enable Lint/UriEscapeUnescape
+# rubocop:enable Style/For
+# rubocop:enable Style/SlicingWithRange
+# rubocop:enable Style/GuardClause
+# rubocop:enable Style/ZeroLengthPredicate
+# rubocop:enable Cop/LineBreakAfterGuardClauses
+# rubocop:enable Layout/MultilineHashBraceLayout
diff --git a/config/initializers/zz_metrics.rb b/config/initializers/zz_metrics.rb
index 5e6c1abdda6..940d8eed61f 100644
--- a/config/initializers/zz_metrics.rb
+++ b/config/initializers/zz_metrics.rb
@@ -17,7 +17,6 @@
if Gitlab::Metrics.enabled? && !Rails.env.test? && !(Rails.env.development? && defined?(Rails::Generators))
require 'pathname'
require 'connection_pool'
- require 'method_source'
# These are manually require'd so the classes are registered properly with
# ActiveSupport.
@@ -40,6 +39,9 @@ if Gitlab::Metrics.enabled? && !Rails.env.test? && !(Rails.env.development? && d
if Gitlab::Runtime.puma?
Gitlab::Metrics::RequestsRackMiddleware.initialize_metrics
+ Gitlab::Metrics::GlobalSearchSlis.initialize_slis!
+ elsif Gitlab.ee? && Gitlab::Runtime.sidekiq?
+ Gitlab::Metrics::GlobalSearchIndexingSlis.initialize_slis!
end
GC::Profiler.enable
diff --git a/config/initializers_before_autoloader/000_inflections.rb b/config/initializers_before_autoloader/000_inflections.rb
index 70c9ec0a0ba..dfd33938611 100644
--- a/config/initializers_before_autoloader/000_inflections.rb
+++ b/config/initializers_before_autoloader/000_inflections.rb
@@ -37,6 +37,7 @@ ActiveSupport::Inflector.inflections do |inflect|
vulnerabilities_feedback
vulnerability_feedback
)
+ inflect.acronym 'CDN'
inflect.acronym 'EE'
inflect.acronym 'JH'
inflect.acronym 'CSP'
diff --git a/config/initializers_before_autoloader/002_sidekiq.rb b/config/initializers_before_autoloader/002_sidekiq.rb
index 9ffcf39d6fb..929bdeda996 100644
--- a/config/initializers_before_autoloader/002_sidekiq.rb
+++ b/config/initializers_before_autoloader/002_sidekiq.rb
@@ -9,5 +9,5 @@
require 'sidekiq/web'
if Rails.env.development?
- Sidekiq.default_worker_options[:backtrace] = true
+ Sidekiq.default_job_options[:backtrace] = true
end
diff --git a/config/metrics/aggregates/code_review.yml b/config/metrics/aggregates/code_review.yml
index 2e1eab78fa3..e58707b20a5 100644
--- a/config/metrics/aggregates/code_review.yml
+++ b/config/metrics/aggregates/code_review.yml
@@ -116,6 +116,14 @@
- 'i_code_review_merge_request_widget_status_checks_expand_success'
- 'i_code_review_merge_request_widget_status_checks_expand_warning'
- 'i_code_review_merge_request_widget_status_checks_expand_failed'
+ - 'i_code_review_submit_review_approve'
+ - 'i_code_review_submit_review_comment'
+ - 'i_code_review_merge_request_widget_license_compliance_view'
+ - 'i_code_review_merge_request_widget_license_compliance_full_report_clicked'
+ - 'i_code_review_merge_request_widget_license_compliance_expand'
+ - 'i_code_review_merge_request_widget_license_compliance_expand_success'
+ - 'i_code_review_merge_request_widget_license_compliance_expand_warning'
+ - 'i_code_review_merge_request_widget_license_compliance_expand_failed'
- name: code_review_category_monthly_active_users
operator: OR
source: redis
@@ -220,6 +228,14 @@
- 'i_code_review_merge_request_widget_status_checks_expand_success'
- 'i_code_review_merge_request_widget_status_checks_expand_warning'
- 'i_code_review_merge_request_widget_status_checks_expand_failed'
+ - 'i_code_review_submit_review_approve'
+ - 'i_code_review_submit_review_comment'
+ - 'i_code_review_merge_request_widget_license_compliance_view'
+ - 'i_code_review_merge_request_widget_license_compliance_full_report_clicked'
+ - 'i_code_review_merge_request_widget_license_compliance_expand'
+ - 'i_code_review_merge_request_widget_license_compliance_expand_success'
+ - 'i_code_review_merge_request_widget_license_compliance_expand_warning'
+ - 'i_code_review_merge_request_widget_license_compliance_expand_failed'
- name: code_review_extension_category_monthly_active_users
operator: OR
source: redis
diff --git a/config/metrics/counts_28d/20210216174910_analytics_unique_visits_for_any_target_monthly.yml b/config/metrics/counts_28d/20210216174910_analytics_unique_visits_for_any_target_monthly.yml
index e766c555d3a..fbf4be136cb 100644
--- a/config/metrics/counts_28d/20210216174910_analytics_unique_visits_for_any_target_monthly.yml
+++ b/config/metrics/counts_28d/20210216174910_analytics_unique_visits_for_any_target_monthly.yml
@@ -48,7 +48,6 @@ tier:
- premium
- ultimate
performance_indicator_type:
-- smau
- gmau
- paid_gmau
milestone: "<13.9"
diff --git a/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml
index f2e72cb8fff..4d8e4409e73 100644
--- a/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20210216184454_code_review_total_unique_counts_monthly.yml
@@ -13,62 +13,122 @@ data_source: redis_hll
instrumentation_class: RedisHLLMetric
options:
events:
+ - i_code_review_click_diff_view_setting
+ - i_code_review_click_file_browser_setting
+ - i_code_review_click_single_file_mode_setting
+ - i_code_review_click_whitespace_setting
+ - i_code_review_create_note_in_ipynb_diff
+ - i_code_review_create_note_in_ipynb_diff_commit
+ - i_code_review_create_note_in_ipynb_diff_mr
+ - i_code_review_diff_hide_whitespace
+ - i_code_review_diff_multiple_files
+ - i_code_review_diff_show_whitespace
+ - i_code_review_diff_single_file
+ - i_code_review_diff_view_inline
+ - i_code_review_diff_view_parallel
+ - i_code_review_edit_mr_desc
+ - i_code_review_edit_mr_title
+ - i_code_review_file_browser_list_view
+ - i_code_review_file_browser_tree_view
+ - i_code_review_merge_request_widget_accessibility_expand
+ - i_code_review_merge_request_widget_accessibility_expand_failed
+ - i_code_review_merge_request_widget_accessibility_expand_success
+ - i_code_review_merge_request_widget_accessibility_expand_warning
+ - i_code_review_merge_request_widget_accessibility_full_report_clicked
+ - i_code_review_merge_request_widget_accessibility_view
+ - i_code_review_merge_request_widget_code_quality_expand
+ - i_code_review_merge_request_widget_code_quality_expand_failed
+ - i_code_review_merge_request_widget_code_quality_expand_success
+ - i_code_review_merge_request_widget_code_quality_expand_warning
+ - i_code_review_merge_request_widget_code_quality_full_report_clicked
+ - i_code_review_merge_request_widget_code_quality_view
+ - i_code_review_merge_request_widget_metrics_expand
+ - i_code_review_merge_request_widget_metrics_expand_failed
+ - i_code_review_merge_request_widget_metrics_expand_success
+ - i_code_review_merge_request_widget_metrics_expand_warning
+ - i_code_review_merge_request_widget_metrics_full_report_clicked
+ - i_code_review_merge_request_widget_metrics_view
+ - i_code_review_merge_request_widget_status_checks_expand
+ - i_code_review_merge_request_widget_status_checks_expand_failed
+ - i_code_review_merge_request_widget_status_checks_expand_success
+ - i_code_review_merge_request_widget_status_checks_expand_warning
+ - i_code_review_merge_request_widget_status_checks_full_report_clicked
+ - i_code_review_merge_request_widget_status_checks_view
+ - i_code_review_merge_request_widget_terraform_expand
+ - i_code_review_merge_request_widget_terraform_expand_failed
+ - i_code_review_merge_request_widget_terraform_expand_success
+ - i_code_review_merge_request_widget_terraform_expand_warning
+ - i_code_review_merge_request_widget_terraform_full_report_clicked
+ - i_code_review_merge_request_widget_terraform_view
+ - i_code_review_merge_request_widget_test_summary_expand
+ - i_code_review_merge_request_widget_test_summary_expand_failed
+ - i_code_review_merge_request_widget_test_summary_expand_success
+ - i_code_review_merge_request_widget_test_summary_expand_warning
+ - i_code_review_merge_request_widget_test_summary_full_report_clicked
+ - i_code_review_merge_request_widget_test_summary_view
+ - i_code_review_merge_request_widget_license_compliance_expand
+ - i_code_review_merge_request_widget_license_compliance_expand_failed
+ - i_code_review_merge_request_widget_license_compliance_expand_success
+ - i_code_review_merge_request_widget_license_compliance_warning
+ - i_code_review_merge_request_widget_license_compliance_full_report_clicked
+ - i_code_review_merge_request_widget_license_compliance_view
- i_code_review_mr_diffs
- - i_code_review_user_single_file_diffs
- i_code_review_mr_single_file_diffs
- - i_code_review_user_toggled_task_item_status
- - i_code_review_user_create_mr
- - i_code_review_user_close_mr
- - i_code_review_user_reopen_mr
- - i_code_review_user_approve_mr
- - i_code_review_user_unapprove_mr
- - i_code_review_user_resolve_thread
- - i_code_review_user_unresolve_thread
- - i_code_review_edit_mr_title
- - i_code_review_edit_mr_desc
- - i_code_review_user_merge_mr
- - i_code_review_user_create_mr_comment
- - i_code_review_user_edit_mr_comment
- - i_code_review_user_remove_mr_comment
- - i_code_review_user_create_review_note
- - i_code_review_user_publish_review
- - i_code_review_user_create_multiline_mr_comment
- - i_code_review_user_edit_multiline_mr_comment
- - i_code_review_user_remove_multiline_mr_comment
+ - i_code_review_mr_with_invalid_approvers
+ - i_code_review_post_merge_click_cherry_pick
+ - i_code_review_post_merge_click_revert
+ - i_code_review_post_merge_delete_branch
+ - i_code_review_post_merge_submit_cherry_pick_modal
+ - i_code_review_post_merge_submit_revert_modal
+ - i_code_review_total_suggestions_added
+ - i_code_review_total_suggestions_applied
- i_code_review_user_add_suggestion
- i_code_review_user_apply_suggestion
- - i_code_review_user_assigned
- - i_code_review_user_marked_as_draft
- - i_code_review_user_unmarked_as_draft
- - i_code_review_user_review_requested
- i_code_review_user_approval_rule_added
- i_code_review_user_approval_rule_deleted
- i_code_review_user_approval_rule_edited
- - i_code_review_user_vs_code_api_request
- - i_code_review_user_create_mr_from_issue
- - i_code_review_user_mr_discussion_locked
- - i_code_review_user_mr_discussion_unlocked
- - i_code_review_user_time_estimate_changed
- - i_code_review_user_time_spent_changed
+ - i_code_review_user_approve_mr
+ - i_code_review_user_assigned
- i_code_review_user_assignees_changed
- - i_code_review_user_reviewers_changed
- - i_code_review_user_milestone_changed
+ - i_code_review_user_close_mr
+ - i_code_review_user_create_mr
+ - i_code_review_user_create_mr_comment
+ - i_code_review_user_create_mr_from_issue
+ - i_code_review_user_create_multiline_mr_comment
+ - i_code_review_user_create_note_in_ipynb_diff
+ - i_code_review_user_create_note_in_ipynb_diff_commit
+ - i_code_review_user_create_note_in_ipynb_diff_mr
+ - i_code_review_user_create_review_note
+ - i_code_review_user_edit_mr_comment
+ - i_code_review_user_edit_multiline_mr_comment
+ - i_code_review_user_gitlab_cli_api_request
+ - i_code_review_user_jetbrains_api_request
- i_code_review_user_labels_changed
- - i_code_review_click_diff_view_setting
- - i_code_review_click_single_file_mode_setting
- - i_code_review_click_file_browser_setting
- - i_code_review_click_whitespace_setting
- - i_code_review_diff_view_inline
- - i_code_review_diff_view_parallel
- - i_code_review_file_browser_tree_view
- - i_code_review_file_browser_list_view
- - i_code_review_diff_show_whitespace
- - i_code_review_diff_hide_whitespace
- - i_code_review_diff_single_file
- - i_code_review_diff_multiple_files
- i_code_review_user_load_conflict_ui
+ - i_code_review_user_marked_as_draft
+ - i_code_review_user_merge_mr
+ - i_code_review_user_milestone_changed
+ - i_code_review_user_mr_discussion_locked
+ - i_code_review_user_mr_discussion_unlocked
+ - i_code_review_user_publish_review
+ - i_code_review_user_remove_mr_comment
+ - i_code_review_user_remove_multiline_mr_comment
+ - i_code_review_user_reopen_mr
- i_code_review_user_resolve_conflict
+ - i_code_review_user_resolve_thread
+ - i_code_review_user_resolve_thread_in_issue
+ - i_code_review_user_review_requested
+ - i_code_review_user_reviewers_changed
- i_code_review_user_searches_diff
+ - i_code_review_user_single_file_diffs
+ - i_code_review_user_time_estimate_changed
+ - i_code_review_user_time_spent_changed
+ - i_code_review_user_toggled_task_item_status
+ - i_code_review_user_unapprove_mr
+ - i_code_review_user_unmarked_as_draft
+ - i_code_review_user_unresolve_thread
+ - i_code_review_user_vs_code_api_request
+ - i_code_review_widget_nothing_merge_click_new_file
distribution:
- ce
- ee
diff --git a/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml
index a2a97eb7477..2c6b21b0f6f 100755
--- a/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20210216184559_ci_templates_total_unique_counts_monthly.yml
@@ -51,6 +51,7 @@ options:
- p_ci_templates_security_dast_api
- p_ci_templates_security_dast_api_latest
- p_ci_templates_security_container_scanning
+ - p_ci_templates_security_container_scanning_latest
- p_ci_templates_security_dast_latest
- p_ci_templates_security_dependency_scanning
- p_ci_templates_security_api_fuzzing
@@ -94,7 +95,9 @@ options:
- p_ci_templates_jobs_code_intelligence
- p_ci_templates_jobs_code_quality
- p_ci_templates_jobs_dependency_scanning
+ - p_ci_templates_jobs_dependency_scanning_latest
- p_ci_templates_jobs_license_scanning
+ - p_ci_templates_jobs_license_scanning_latest
- p_ci_templates_jobs_deploy_ecs
- p_ci_templates_jobs_deploy_ec2
- p_ci_templates_jobs_deploy
@@ -140,7 +143,9 @@ options:
- p_ci_templates_implicit_jobs_code_intelligence
- p_ci_templates_implicit_jobs_code_quality
- p_ci_templates_implicit_jobs_dependency_scanning
+ - p_ci_templates_implicit_jobs_dependency_scanning_latest
- p_ci_templates_implicit_jobs_license_scanning
+ - p_ci_templates_implicit_jobs_license_scanning_latest
- p_ci_templates_implicit_jobs_deploy_ecs
- p_ci_templates_implicit_jobs_deploy_ec2
- p_ci_templates_implicit_auto_devops_deploy
@@ -151,6 +156,7 @@ options:
- p_ci_templates_implicit_jobs_browser_performance_testing_latest
- p_ci_templates_implicit_jobs_cf_provision
- p_ci_templates_implicit_jobs_build_latest
+ - p_ci_templates_implicit_jobs_sast_iac
- p_ci_templates_implicit_security_sast
- p_ci_templates_implicit_security_dast_runner_validation
- p_ci_templates_implicit_security_dast_on_demand_scan
@@ -162,16 +168,19 @@ options:
- p_ci_templates_implicit_security_dast_api
- p_ci_templates_implicit_security_dast_api_latest
- p_ci_templates_implicit_security_container_scanning
+ - p_ci_templates_implicit_security_container_scanning_latest
- p_ci_templates_implicit_security_dast_latest
- p_ci_templates_implicit_security_dependency_scanning
- p_ci_templates_implicit_security_api_fuzzing
- p_ci_templates_implicit_security_dast
- p_ci_templates_implicit_security_cluster_image_scanning
+ - p_ci_templates_implicit_security_sast_iac
- p_ci_templates_kaniko
- p_ci_templates_qualys_iac_security
- p_ci_templates_liquibase
- p_ci_templates_matlab
- p_ci_templates_themekit
+ - p_ci_templates_katalon
distribution:
- ce
- ee
diff --git a/config/metrics/counts_28d/20210216184850_deploy_token_packages_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216184850_deploy_token_packages_total_unique_counts_monthly.yml
index 720165425fa..6b6c40495a6 100644
--- a/config/metrics/counts_28d/20210216184850_deploy_token_packages_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20210216184850_deploy_token_packages_total_unique_counts_monthly.yml
@@ -16,17 +16,13 @@ options:
events:
- i_package_composer_deploy_token
- i_package_conan_deploy_token
- - i_package_container_deploy_token
- - i_package_debian_deploy_token
- i_package_generic_deploy_token
- - i_package_golang_deploy_token
- i_package_helm_deploy_token
- i_package_maven_deploy_token
- i_package_npm_deploy_token
- i_package_nuget_deploy_token
- i_package_pypi_deploy_token
- i_package_rubygems_deploy_token
- - i_package_tag_deploy_token
- i_package_terraform_module_deploy_token
distribution:
- ee
diff --git a/config/metrics/counts_28d/20210216184937_user_packages_total_unique_counts_monthly.yml b/config/metrics/counts_28d/20210216184937_user_packages_total_unique_counts_monthly.yml
index 52e2eec71c5..e758f06bea9 100644
--- a/config/metrics/counts_28d/20210216184937_user_packages_total_unique_counts_monthly.yml
+++ b/config/metrics/counts_28d/20210216184937_user_packages_total_unique_counts_monthly.yml
@@ -15,17 +15,13 @@ options:
events:
- i_package_composer_user
- i_package_conan_user
- - i_package_container_user
- - i_package_debian_user
- i_package_generic_user
- - i_package_golang_user
- i_package_helm_user
- i_package_maven_user
- i_package_npm_user
- i_package_nuget_user
- i_package_pypi_user
- i_package_rubygems_user
- - i_package_tag_user
- i_package_terraform_module_user
distribution:
- ee
diff --git a/config/metrics/counts_28d/20220131143209_i_quickactions_attention_monthly.yml b/config/metrics/counts_28d/20220131143209_i_quickactions_attention_monthly.yml
index f3fa80b4f25..7be45e79f51 100644
--- a/config/metrics/counts_28d/20220131143209_i_quickactions_attention_monthly.yml
+++ b/config/metrics/counts_28d/20220131143209_i_quickactions_attention_monthly.yml
@@ -6,7 +6,9 @@ product_stage: create
product_group: code_review
product_category: code_review
value_type: number
-status: active
+status: removed
+removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95241/
+milestone_removed: '15.4'
milestone: '14.8'
introduced_by_url:
time_frame: 28d
diff --git a/config/metrics/counts_28d/20220131153230_i_quickactions_remove_attention_monthly.yml b/config/metrics/counts_28d/20220131153230_i_quickactions_remove_attention_monthly.yml
index 773fc5564bb..2b002bc3790 100644
--- a/config/metrics/counts_28d/20220131153230_i_quickactions_remove_attention_monthly.yml
+++ b/config/metrics/counts_28d/20220131153230_i_quickactions_remove_attention_monthly.yml
@@ -6,7 +6,9 @@ product_stage: create
product_group: code_review
product_category: code_review
value_type: number
-status: active
+status: removed
+removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95241/
+milestone_removed: '15.4'
milestone: '14.8'
introduced_by_url:
time_frame: 28d
diff --git a/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_commit_monthly.yml b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_commit_monthly.yml
new file mode 100644
index 00000000000..87ee4ff392b
--- /dev/null
+++ b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_commit_monthly.yml
@@ -0,0 +1,27 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_commit_monthly
+name: "count_notes_in_ipynb_diff_commit_monthly"
+description: Monthly notes on ipynb commit diffs
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.0"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398
+time_frame: 28d
+data_source: redis_hll
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_create_note_in_ipynb_diff_commit
+data_category: Optional
+performance_indicator_type: []
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_monthly.yml b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_monthly.yml
new file mode 100644
index 00000000000..8a5a50572d8
--- /dev/null
+++ b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_monthly.yml
@@ -0,0 +1,27 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_monthly
+name: "count_notes_in_ipynb_diff_monthly"
+description: Monthly notes on ipynb diffs
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.0"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398
+time_frame: 28d
+data_source: redis_hll
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_create_note_in_ipynb_diff
+data_category: Optional
+performance_indicator_type: []
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_mr_monthly.yml b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_mr_monthly.yml
new file mode 100644
index 00000000000..907c1459293
--- /dev/null
+++ b/config/metrics/counts_28d/20220504150641_count_notes_in_ipynb_diff_mr_monthly.yml
@@ -0,0 +1,27 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_mr_monthly
+name: "count_notes_in_ipynb_diff_mr_monthly"
+description: Monthly notes on ipynb MR diffs
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.0"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398
+time_frame: 28d
+data_source: redis_hll
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_create_note_in_ipynb_diff_mr
+data_category: Optional
+performance_indicator_type: []
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_monthly.yml b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_monthly.yml
new file mode 100644
index 00000000000..e33149db20f
--- /dev/null
+++ b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_monthly.yml
@@ -0,0 +1,27 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_commit_monthly
+name: "count_users_with_notes_in_ipynb_diff_commit_monthly"
+description: Monthly unique users with notes on ipynb commit diffs
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.0"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398
+time_frame: 28d
+data_source: redis_hll
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_user_create_note_in_ipynb_diff_commit
+data_category: Optional
+performance_indicator_type: []
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_monthly.yml b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_monthly.yml
new file mode 100644
index 00000000000..b6f8e09039e
--- /dev/null
+++ b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_monthly.yml
@@ -0,0 +1,27 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_monthly
+name: "count_users_with_notes_in_ipynb_diff_monthly"
+description: Monthly unique users with notes on ipynb diffs
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.0"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398
+time_frame: 28d
+data_source: redis_hll
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_user_create_note_in_ipynb_diff
+data_category: Optional
+performance_indicator_type: []
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_monthly.yml b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_monthly.yml
new file mode 100644
index 00000000000..732124e34f0
--- /dev/null
+++ b/config/metrics/counts_28d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_monthly.yml
@@ -0,0 +1,27 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_mr_monthly
+name: "count_users_with_notes_in_ipynb_diff_mr_monthly"
+description: Monthly unique users with notes on ipynb MR diffs
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.0"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398
+time_frame: 28d
+data_source: redis_hll
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_user_create_note_in_ipynb_diff_mr
+data_category: Optional
+performance_indicator_type: []
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_28d/20220531145023_p_ci_templates_katalon_monthly.yml b/config/metrics/counts_28d/20220531145023_p_ci_templates_katalon_monthly.yml
new file mode 100644
index 00000000000..abbc30a5d10
--- /dev/null
+++ b/config/metrics/counts_28d/20220531145023_p_ci_templates_katalon_monthly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_katalon_monthly
+description: 'Monthly counts of times users have executed katalon_tests jobs'
+product_section: 'ops'
+product_stage: 'analytics'
+product_group: 'pipeline_authoring'
+product_category: 'pipeline_authoring'
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86484
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - p_ci_templates_katalon
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_28d/20220627133135_i_code_review_submit_review_approve_monthly.yml b/config/metrics/counts_28d/20220627133135_i_code_review_submit_review_approve_monthly.yml
new file mode 100644
index 00000000000..389b9d3ace5
--- /dev/null
+++ b/config/metrics/counts_28d/20220627133135_i_code_review_submit_review_approve_monthly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_submit_review_approve_monthly
+description: Count of unique users per month who submit a review and approve
+product_stage: create
+product_group: code_review
+product_category: code_review
+product_section: dev
+value_type: number
+status: active
+milestone: '15.4'
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91073
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_submit_review_approve
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_28d/20220627134108_i_code_review_submit_review_comment_monthly.yml b/config/metrics/counts_28d/20220627134108_i_code_review_submit_review_comment_monthly.yml
new file mode 100644
index 00000000000..1891191bdcd
--- /dev/null
+++ b/config/metrics/counts_28d/20220627134108_i_code_review_submit_review_comment_monthly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_submit_review_comment_monthly
+description: Count of unique users per month who submit a review with a comment
+product_stage: create
+product_group: code_review
+product_category: code_review
+product_section: dev
+value_type: number
+status: active
+milestone: '15.4'
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91073
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_submit_review_comment
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_failed.yml b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_failed.yml
new file mode 100644
index 00000000000..3b19ef26a6a
--- /dev/null
+++ b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_failed.yml
@@ -0,0 +1,26 @@
+---
+data_category: optional
+key_path: usage_activity_by_stage_monthly.manage.group_imports.gitlab_migration_failed
+description: Count of group entities with failed status in GitLab Migration
+product_section: dev
+product_stage: manage
+product_group: import
+product_category: importers
+value_type: number
+status: active
+time_frame: 28d
+data_source: database
+instrumentation_class: CountBulkImportsEntitiesMetric
+options:
+ source_type: group_entity
+ status: -1
+performance_indicator_type: []
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96062"
diff --git a/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_finished.yml b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_finished.yml
new file mode 100644
index 00000000000..72af0e3e18b
--- /dev/null
+++ b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_finished.yml
@@ -0,0 +1,26 @@
+---
+data_category: optional
+key_path: usage_activity_by_stage_monthly.manage.group_imports.gitlab_migration_finished
+description: Count of group entities with finished status in GitLab Migration
+product_section: dev
+product_stage: manage
+product_group: import
+product_category: importers
+value_type: number
+status: active
+time_frame: 28d
+data_source: database
+instrumentation_class: CountBulkImportsEntitiesMetric
+options:
+ source_type: group_entity
+ status: 2
+performance_indicator_type: []
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96062"
diff --git a/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_timeout.yml b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_timeout.yml
new file mode 100644
index 00000000000..079fc328d73
--- /dev/null
+++ b/config/metrics/counts_28d/20220816202928_bulk_import_entities_group_timeout.yml
@@ -0,0 +1,26 @@
+---
+data_category: optional
+key_path: usage_activity_by_stage_monthly.manage.group_imports.gitlab_migration_timeout
+description: Count of group entities with timeout status in GitLab Migration
+product_section: dev
+product_stage: manage
+product_group: import
+product_category: importers
+value_type: number
+status: active
+time_frame: 28d
+data_source: database
+instrumentation_class: CountBulkImportsEntitiesMetric
+options:
+ source_type: group_entity
+ status: 3
+performance_indicator_type: []
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96062"
diff --git a/config/metrics/counts_28d/20220823125645_bulk_import_entities_project_timeout.yml b/config/metrics/counts_28d/20220823125645_bulk_import_entities_project_timeout.yml
new file mode 100644
index 00000000000..a9ead88577d
--- /dev/null
+++ b/config/metrics/counts_28d/20220823125645_bulk_import_entities_project_timeout.yml
@@ -0,0 +1,26 @@
+---
+data_category: optional
+key_path: usage_activity_by_stage_monthly.manage.project_imports.gitlab_migration_timeout
+description: Count of project entities with timeout status in GitLab Migration
+product_section: dev
+product_stage: manage
+product_group: import
+product_category: importers
+value_type: number
+status: active
+time_frame: 28d
+data_source: database
+instrumentation_class: CountBulkImportsEntitiesMetric
+options:
+ source_type: project_entity
+ status: 3
+performance_indicator_type: []
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96062"
diff --git a/config/metrics/counts_28d/20220823125924_bulk_import_entities_project_failed.yml b/config/metrics/counts_28d/20220823125924_bulk_import_entities_project_failed.yml
new file mode 100644
index 00000000000..74c45c05641
--- /dev/null
+++ b/config/metrics/counts_28d/20220823125924_bulk_import_entities_project_failed.yml
@@ -0,0 +1,26 @@
+---
+data_category: optional
+key_path: usage_activity_by_stage_monthly.manage.project_imports.gitlab_migration_failed
+description: Count of project entities with failed status in GitLab Migration
+product_section: dev
+product_stage: manage
+product_group: import
+product_category: importers
+value_type: number
+status: active
+time_frame: 28d
+data_source: database
+instrumentation_class: CountBulkImportsEntitiesMetric
+options:
+ source_type: project_entity
+ status: -1
+performance_indicator_type: []
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96062"
diff --git a/config/metrics/counts_28d/20220823130209_bulk_import_entities_project_finished.yml b/config/metrics/counts_28d/20220823130209_bulk_import_entities_project_finished.yml
new file mode 100644
index 00000000000..228d6851020
--- /dev/null
+++ b/config/metrics/counts_28d/20220823130209_bulk_import_entities_project_finished.yml
@@ -0,0 +1,26 @@
+---
+data_category: optional
+key_path: usage_activity_by_stage_monthly.manage.project_imports.gitlab_migration_finished
+description: Count of project entities with finished status in GitLab Migration
+product_section: dev
+product_stage: manage
+product_group: import
+product_category: importers
+value_type: number
+status: active
+time_frame: 28d
+data_source: database
+instrumentation_class: CountBulkImportsEntitiesMetric
+options:
+ source_type: project_entity
+ status: 2
+performance_indicator_type: []
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96062"
diff --git a/config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml b/config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml
new file mode 100644
index 00000000000..341d3810318
--- /dev/null
+++ b/config/metrics/counts_28d/20220825142533_i_testing_test_report_uploaded_monthly.yml
@@ -0,0 +1,26 @@
+---
+key_path: redis_hll_counters.testing.i_testing_test_report_uploaded_monthly
+description: "MAU of junit test reports uploaded by customers per pipeline"
+product_section: ops
+product_stage: verify
+product_group: pipeline_insights
+product_category: testing
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95112
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_testing_test_report_uploaded
+performance_indicator_type: []
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_28d/20220825232557_count_user_auth.yml b/config/metrics/counts_28d/20220825232557_count_user_auth.yml
new file mode 100644
index 00000000000..dbcd665d616
--- /dev/null
+++ b/config/metrics/counts_28d/20220825232557_count_user_auth.yml
@@ -0,0 +1,24 @@
+---
+key_path: usage_activity_by_stage_monthly.manage.count_user_auth
+description: Number of unique user logins
+product_section: dev
+product_stage: manage
+product_group: authentication_and_authorization
+product_category: system_access
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96321"
+time_frame: 28d
+data_source: database
+instrumentation_class: CountUserAuthMetric
+data_category: optional
+performance_indicator_type:
+- smau
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_28d/20220830104453_i_code_review_merge_request_widget_license_compliance_view_monthly.yml b/config/metrics/counts_28d/20220830104453_i_code_review_merge_request_widget_license_compliance_view_monthly.yml
new file mode 100644
index 00000000000..60567037303
--- /dev/null
+++ b/config/metrics/counts_28d/20220830104453_i_code_review_merge_request_widget_license_compliance_view_monthly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_view_monthly
+description: The count of unique users (monthly) who were able to see the License Compliance widget extension
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_view
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_28d/20220830104500_i_code_review_merge_request_widget_license_compliance_full_report_clicked_monthly.yml b/config/metrics/counts_28d/20220830104500_i_code_review_merge_request_widget_license_compliance_full_report_clicked_monthly.yml
new file mode 100644
index 00000000000..3b4c0012495
--- /dev/null
+++ b/config/metrics/counts_28d/20220830104500_i_code_review_merge_request_widget_license_compliance_full_report_clicked_monthly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_full_report_clicked_monthly
+description: The count of unique users (monthly) who clicked the Full Report button on the License Compliance widget extension
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_full_report_clicked
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_28d/20220830104507_i_code_review_merge_request_widget_license_compliance_expand_monthly.yml b/config/metrics/counts_28d/20220830104507_i_code_review_merge_request_widget_license_compliance_expand_monthly.yml
new file mode 100644
index 00000000000..7b0ec9d0518
--- /dev/null
+++ b/config/metrics/counts_28d/20220830104507_i_code_review_merge_request_widget_license_compliance_expand_monthly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_monthly
+description: The count of unique users (monthly) who expanded the License Compliance widget extension
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_expand
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_28d/20220830104514_i_code_review_merge_request_widget_license_compliance_expand_success_monthly.yml b/config/metrics/counts_28d/20220830104514_i_code_review_merge_request_widget_license_compliance_expand_success_monthly.yml
new file mode 100644
index 00000000000..c6b7689c844
--- /dev/null
+++ b/config/metrics/counts_28d/20220830104514_i_code_review_merge_request_widget_license_compliance_expand_success_monthly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_success_monthly
+description: The count of unique users (monthly) who expanded the License Compliance widget extension while it is in its Success state
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_expand_success
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_28d/20220830104521_i_code_review_merge_request_widget_license_compliance_expand_warning_monthly.yml b/config/metrics/counts_28d/20220830104521_i_code_review_merge_request_widget_license_compliance_expand_warning_monthly.yml
new file mode 100644
index 00000000000..5e164b5c3bf
--- /dev/null
+++ b/config/metrics/counts_28d/20220830104521_i_code_review_merge_request_widget_license_compliance_expand_warning_monthly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_warning_monthly
+description: The count of unique users (monthly) who expanded the License Compliance widget extension while it is in its Warning state
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_expand_warning
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_28d/20220830104528_i_code_review_merge_request_widget_license_compliance_expand_failed_monthly.yml b/config/metrics/counts_28d/20220830104528_i_code_review_merge_request_widget_license_compliance_expand_failed_monthly.yml
new file mode 100644
index 00000000000..69af6c70299
--- /dev/null
+++ b/config/metrics/counts_28d/20220830104528_i_code_review_merge_request_widget_license_compliance_expand_failed_monthly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_failed_monthly
+description: The count of unique users (monthly) who expanded the License Compliance widget extension while it is in its Failed state
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_expand_failed
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_28d/20220905210112_users_visiting_environments_pages_monthly.yml b/config/metrics/counts_28d/20220905210112_users_visiting_environments_pages_monthly.yml
new file mode 100644
index 00000000000..3eac5ca1c01
--- /dev/null
+++ b/config/metrics/counts_28d/20220905210112_users_visiting_environments_pages_monthly.yml
@@ -0,0 +1,26 @@
+---
+key_path: redis_hll_counters.environments.users_visiting_environments_pages_monthly
+description: Monthly count of unique users visiting environments pages
+product_section: ops
+product_stage: release
+product_group: release
+product_category: environment_management
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97063
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+performance_indicator_type: []
+options:
+ events:
+ - users_visiting_environments_pages
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_28d/20220907080630_i_quickactions_timeline_monthly.yml b/config/metrics/counts_28d/20220907080630_i_quickactions_timeline_monthly.yml
new file mode 100644
index 00000000000..f3f9499e9d9
--- /dev/null
+++ b/config/metrics/counts_28d/20220907080630_i_quickactions_timeline_monthly.yml
@@ -0,0 +1,27 @@
+---
+key_path: redis_hll_counters.quickactions.i_quickactions_timeline_monthly
+name: quickactions_timeline_monthly
+description: Count of MAU using the `/timeline` quick action
+product_section: ops
+product_stage: monitor
+product_group: respond
+product_category: incident_management
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97020
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_quickactions_timeline
+performance_indicator_type: []
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_28d/20220907084347_p_ci_templates_implicit_security_sast_iac_monthly.yml b/config/metrics/counts_28d/20220907084347_p_ci_templates_implicit_security_sast_iac_monthly.yml
new file mode 100644
index 00000000000..2f32d5a3569
--- /dev/null
+++ b/config/metrics/counts_28d/20220907084347_p_ci_templates_implicit_security_sast_iac_monthly.yml
@@ -0,0 +1,26 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_security_sast_iac_monthly
+description: Count of pipelines with implicit SAST runs using the stable SAST IaC template
+product_section: sec
+product_stage: secure
+product_group: "static_analysis"
+product_category: SAST
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86275
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+performance_indicator_type: []
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_implicit_jobs_sast_iac
diff --git a/config/metrics/counts_28d/20220907102714_p_ci_templates_implicit_jobs_sast_iac_monthly.yml b/config/metrics/counts_28d/20220907102714_p_ci_templates_implicit_jobs_sast_iac_monthly.yml
new file mode 100644
index 00000000000..368c15653e9
--- /dev/null
+++ b/config/metrics/counts_28d/20220907102714_p_ci_templates_implicit_jobs_sast_iac_monthly.yml
@@ -0,0 +1,26 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_jobs_sast_iac_monthly
+description: Count of pipelines with implicit SAST jobs using the stable SAST IaC template
+product_section: sec
+product_stage: secure
+product_group: "static_analysis"
+product_category: SAST
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86275
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+performance_indicator_type: []
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_implicit_jobs_sast_iac
diff --git a/config/metrics/counts_28d/20220907202807_p_ci_templates_jobs_dependency_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220907202807_p_ci_templates_jobs_dependency_scanning_latest_monthly.yml
new file mode 100644
index 00000000000..9cbfee008c3
--- /dev/null
+++ b/config/metrics/counts_28d/20220907202807_p_ci_templates_jobs_dependency_scanning_latest_monthly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_jobs_dependency_scanning_latest_monthly
+description: Monthly counts for Dependency Scanning CI Latest template (Jobs folder)
+product_section: sec
+product_stage: secure
+product_group: composition_analysis
+product_category: dependency_scanning
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323'
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_jobs_dependency_scanning_latest
diff --git a/config/metrics/counts_28d/20220907212005_p_ci_templates_security_container_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220907212005_p_ci_templates_security_container_scanning_latest_monthly.yml
new file mode 100644
index 00000000000..fbf263cd6bc
--- /dev/null
+++ b/config/metrics/counts_28d/20220907212005_p_ci_templates_security_container_scanning_latest_monthly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_security_container_scanning_latest_monthly
+description: Monthly counts for Container Scanning CI Latest template (Security folder)
+product_section: sec
+product_stage: secure
+product_group: composition_analysis
+product_category: container_scanning
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323'
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_security_container_scanning_latest
diff --git a/config/metrics/counts_28d/20220907215635_p_ci_templates_jobs_license_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220907215635_p_ci_templates_jobs_license_scanning_latest_monthly.yml
new file mode 100644
index 00000000000..b78e5bc65fa
--- /dev/null
+++ b/config/metrics/counts_28d/20220907215635_p_ci_templates_jobs_license_scanning_latest_monthly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_jobs_license_scanning_latest_monthly
+description: Monthly counts for License Scanning CI Latest template (Jobs folder)
+product_section: sec
+product_stage: secure
+product_group: composition_analysis
+product_category: license_scanning
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323'
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_jobs_license_scanning_latest
diff --git a/config/metrics/counts_28d/20220912161240_p_ci_templates_implicit_jobs_dependency_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220912161240_p_ci_templates_implicit_jobs_dependency_scanning_latest_monthly.yml
new file mode 100644
index 00000000000..a3a435fca09
--- /dev/null
+++ b/config/metrics/counts_28d/20220912161240_p_ci_templates_implicit_jobs_dependency_scanning_latest_monthly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_jobs_dependency_scanning_latest_monthly
+description: Monthly counts for implicit Dependency Scanning CI Latest template (Jobs folder)
+product_section: sec
+product_stage: secure
+product_group: composition_analysis
+product_category: dependency_scanning
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323'
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_implicit_jobs_dependency_scanning_latest
diff --git a/config/metrics/counts_28d/20220912162308_p_ci_templates_implicit_jobs_license_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220912162308_p_ci_templates_implicit_jobs_license_scanning_latest_monthly.yml
new file mode 100644
index 00000000000..acc48ff2a44
--- /dev/null
+++ b/config/metrics/counts_28d/20220912162308_p_ci_templates_implicit_jobs_license_scanning_latest_monthly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_jobs_license_scanning_latest_monthly
+description: Monthly counts for implicit License Scanning CI Latest template (Jobs folder)
+product_section: sec
+product_stage: secure
+product_group: composition_analysis
+product_category: license_scanning
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323'
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_implicit_jobs_license_scanning_latest
diff --git a/config/metrics/counts_28d/20220912162752_p_ci_templates_implicit_security_container_scanning_latest_monthly.yml b/config/metrics/counts_28d/20220912162752_p_ci_templates_implicit_security_container_scanning_latest_monthly.yml
new file mode 100644
index 00000000000..2aebbc3a9eb
--- /dev/null
+++ b/config/metrics/counts_28d/20220912162752_p_ci_templates_implicit_security_container_scanning_latest_monthly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_security_container_scanning_latest_monthly
+description: Monthly counts for implicit Container Scanning CI Latest template (Security folder)
+product_section: sec
+product_stage: secure
+product_group: composition_analysis
+product_category: container_scanning
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323'
+time_frame: 28d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_implicit_security_container_scanning_latest
diff --git a/config/metrics/counts_7d/20210216184452_code_review_total_unique_counts_weekly.yml b/config/metrics/counts_7d/20210216184452_code_review_total_unique_counts_weekly.yml
index ab39318eb0d..60619deb786 100644
--- a/config/metrics/counts_7d/20210216184452_code_review_total_unique_counts_weekly.yml
+++ b/config/metrics/counts_7d/20210216184452_code_review_total_unique_counts_weekly.yml
@@ -13,62 +13,122 @@ data_source: redis_hll
instrumentation_class: RedisHLLMetric
options:
events:
- - i_code_review_mr_diffs
- - i_code_review_user_single_file_diffs
- - i_code_review_mr_single_file_diffs
- - i_code_review_user_toggled_task_item_status
- - i_code_review_user_create_mr
- - i_code_review_user_close_mr
- - i_code_review_user_reopen_mr
- - i_code_review_user_approve_mr
- - i_code_review_user_unapprove_mr
- - i_code_review_user_resolve_thread
- - i_code_review_user_unresolve_thread
- - i_code_review_edit_mr_title
- - i_code_review_edit_mr_desc
- - i_code_review_user_merge_mr
- - i_code_review_user_create_mr_comment
- - i_code_review_user_edit_mr_comment
- - i_code_review_user_remove_mr_comment
- - i_code_review_user_create_review_note
- - i_code_review_user_publish_review
- - i_code_review_user_create_multiline_mr_comment
- - i_code_review_user_edit_multiline_mr_comment
- - i_code_review_user_remove_multiline_mr_comment
- - i_code_review_user_add_suggestion
- - i_code_review_user_apply_suggestion
- - i_code_review_user_assigned
- - i_code_review_user_marked_as_draft
- - i_code_review_user_unmarked_as_draft
- - i_code_review_user_review_requested
- - i_code_review_user_approval_rule_added
- - i_code_review_user_approval_rule_deleted
- - i_code_review_user_approval_rule_edited
- - i_code_review_user_vs_code_api_request
- - i_code_review_user_create_mr_from_issue
- - i_code_review_user_mr_discussion_locked
- - i_code_review_user_mr_discussion_unlocked
- - i_code_review_user_time_estimate_changed
- - i_code_review_user_time_spent_changed
- - i_code_review_user_assignees_changed
- - i_code_review_user_reviewers_changed
- - i_code_review_user_milestone_changed
- - i_code_review_user_labels_changed
- - i_code_review_click_diff_view_setting
- - i_code_review_click_single_file_mode_setting
- - i_code_review_click_file_browser_setting
- - i_code_review_click_whitespace_setting
- - i_code_review_diff_view_inline
- - i_code_review_diff_view_parallel
- - i_code_review_file_browser_tree_view
- - i_code_review_file_browser_list_view
- - i_code_review_diff_show_whitespace
- - i_code_review_diff_hide_whitespace
- - i_code_review_diff_single_file
- - i_code_review_diff_multiple_files
- - i_code_review_user_load_conflict_ui
- - i_code_review_user_resolve_conflict
- - i_code_review_user_searches_diff
+ - i_code_review_click_diff_view_setting
+ - i_code_review_click_file_browser_setting
+ - i_code_review_click_single_file_mode_setting
+ - i_code_review_click_whitespace_setting
+ - i_code_review_create_note_in_ipynb_diff
+ - i_code_review_create_note_in_ipynb_diff_commit
+ - i_code_review_create_note_in_ipynb_diff_mr
+ - i_code_review_diff_hide_whitespace
+ - i_code_review_diff_multiple_files
+ - i_code_review_diff_show_whitespace
+ - i_code_review_diff_single_file
+ - i_code_review_diff_view_inline
+ - i_code_review_diff_view_parallel
+ - i_code_review_edit_mr_desc
+ - i_code_review_edit_mr_title
+ - i_code_review_file_browser_list_view
+ - i_code_review_file_browser_tree_view
+ - i_code_review_merge_request_widget_accessibility_expand
+ - i_code_review_merge_request_widget_accessibility_expand_failed
+ - i_code_review_merge_request_widget_accessibility_expand_success
+ - i_code_review_merge_request_widget_accessibility_expand_warning
+ - i_code_review_merge_request_widget_accessibility_full_report_clicked
+ - i_code_review_merge_request_widget_accessibility_view
+ - i_code_review_merge_request_widget_code_quality_expand
+ - i_code_review_merge_request_widget_code_quality_expand_failed
+ - i_code_review_merge_request_widget_code_quality_expand_success
+ - i_code_review_merge_request_widget_code_quality_expand_warning
+ - i_code_review_merge_request_widget_code_quality_full_report_clicked
+ - i_code_review_merge_request_widget_code_quality_view
+ - i_code_review_merge_request_widget_metrics_expand
+ - i_code_review_merge_request_widget_metrics_expand_failed
+ - i_code_review_merge_request_widget_metrics_expand_success
+ - i_code_review_merge_request_widget_metrics_expand_warning
+ - i_code_review_merge_request_widget_metrics_full_report_clicked
+ - i_code_review_merge_request_widget_metrics_view
+ - i_code_review_merge_request_widget_status_checks_expand
+ - i_code_review_merge_request_widget_status_checks_expand_failed
+ - i_code_review_merge_request_widget_status_checks_expand_success
+ - i_code_review_merge_request_widget_status_checks_expand_warning
+ - i_code_review_merge_request_widget_status_checks_full_report_clicked
+ - i_code_review_merge_request_widget_status_checks_view
+ - i_code_review_merge_request_widget_terraform_expand
+ - i_code_review_merge_request_widget_terraform_expand_failed
+ - i_code_review_merge_request_widget_terraform_expand_success
+ - i_code_review_merge_request_widget_terraform_expand_warning
+ - i_code_review_merge_request_widget_terraform_full_report_clicked
+ - i_code_review_merge_request_widget_terraform_view
+ - i_code_review_merge_request_widget_test_summary_expand
+ - i_code_review_merge_request_widget_test_summary_expand_failed
+ - i_code_review_merge_request_widget_test_summary_expand_success
+ - i_code_review_merge_request_widget_test_summary_expand_warning
+ - i_code_review_merge_request_widget_test_summary_full_report_clicked
+ - i_code_review_merge_request_widget_test_summary_view
+ - i_code_review_merge_request_widget_license_compliance_expand
+ - i_code_review_merge_request_widget_license_compliance_expand_failed
+ - i_code_review_merge_request_widget_license_compliance_expand_success
+ - i_code_review_merge_request_widget_license_compliance_warning
+ - i_code_review_merge_request_widget_license_compliance_full_report_clicked
+ - i_code_review_merge_request_widget_license_compliance_view
+ - i_code_review_mr_diffs
+ - i_code_review_mr_single_file_diffs
+ - i_code_review_mr_with_invalid_approvers
+ - i_code_review_post_merge_click_cherry_pick
+ - i_code_review_post_merge_click_revert
+ - i_code_review_post_merge_delete_branch
+ - i_code_review_post_merge_submit_cherry_pick_modal
+ - i_code_review_post_merge_submit_revert_modal
+ - i_code_review_total_suggestions_added
+ - i_code_review_total_suggestions_applied
+ - i_code_review_user_add_suggestion
+ - i_code_review_user_apply_suggestion
+ - i_code_review_user_approval_rule_added
+ - i_code_review_user_approval_rule_deleted
+ - i_code_review_user_approval_rule_edited
+ - i_code_review_user_approve_mr
+ - i_code_review_user_assigned
+ - i_code_review_user_assignees_changed
+ - i_code_review_user_close_mr
+ - i_code_review_user_create_mr
+ - i_code_review_user_create_mr_comment
+ - i_code_review_user_create_mr_from_issue
+ - i_code_review_user_create_multiline_mr_comment
+ - i_code_review_user_create_note_in_ipynb_diff
+ - i_code_review_user_create_note_in_ipynb_diff_commit
+ - i_code_review_user_create_note_in_ipynb_diff_mr
+ - i_code_review_user_create_review_note
+ - i_code_review_user_edit_mr_comment
+ - i_code_review_user_edit_multiline_mr_comment
+ - i_code_review_user_gitlab_cli_api_request
+ - i_code_review_user_jetbrains_api_request
+ - i_code_review_user_labels_changed
+ - i_code_review_user_load_conflict_ui
+ - i_code_review_user_marked_as_draft
+ - i_code_review_user_merge_mr
+ - i_code_review_user_milestone_changed
+ - i_code_review_user_mr_discussion_locked
+ - i_code_review_user_mr_discussion_unlocked
+ - i_code_review_user_publish_review
+ - i_code_review_user_remove_mr_comment
+ - i_code_review_user_remove_multiline_mr_comment
+ - i_code_review_user_reopen_mr
+ - i_code_review_user_resolve_conflict
+ - i_code_review_user_resolve_thread
+ - i_code_review_user_resolve_thread_in_issue
+ - i_code_review_user_review_requested
+ - i_code_review_user_reviewers_changed
+ - i_code_review_user_searches_diff
+ - i_code_review_user_single_file_diffs
+ - i_code_review_user_time_estimate_changed
+ - i_code_review_user_time_spent_changed
+ - i_code_review_user_toggled_task_item_status
+ - i_code_review_user_unapprove_mr
+ - i_code_review_user_unmarked_as_draft
+ - i_code_review_user_unresolve_thread
+ - i_code_review_user_vs_code_api_request
+ - i_code_review_widget_nothing_merge_click_new_file
distribution:
- ce
- ee
diff --git a/config/metrics/counts_7d/20210216184557_ci_templates_total_unique_counts_weekly.yml b/config/metrics/counts_7d/20210216184557_ci_templates_total_unique_counts_weekly.yml
index aa25ab379b9..16186a412b8 100755
--- a/config/metrics/counts_7d/20210216184557_ci_templates_total_unique_counts_weekly.yml
+++ b/config/metrics/counts_7d/20210216184557_ci_templates_total_unique_counts_weekly.yml
@@ -51,6 +51,7 @@ options:
- p_ci_templates_security_dast_api
- p_ci_templates_security_dast_api_latest
- p_ci_templates_security_container_scanning
+ - p_ci_templates_security_container_scanning_latest
- p_ci_templates_security_dast_latest
- p_ci_templates_security_dependency_scanning
- p_ci_templates_security_api_fuzzing
@@ -94,7 +95,9 @@ options:
- p_ci_templates_jobs_code_intelligence
- p_ci_templates_jobs_code_quality
- p_ci_templates_jobs_dependency_scanning
+ - p_ci_templates_jobs_dependency_scanning_latest
- p_ci_templates_jobs_license_scanning
+ - p_ci_templates_jobs_license_scanning_latest
- p_ci_templates_jobs_deploy_ecs
- p_ci_templates_jobs_deploy_ec2
- p_ci_templates_jobs_deploy
@@ -172,6 +175,7 @@ options:
- p_ci_templates_liquibase
- p_ci_templates_matlab
- p_ci_templates_themekit
+ - p_ci_templates_katalon
distribution:
- ce
- ee
diff --git a/config/metrics/counts_7d/20210216184848_deploy_token_packages_total_unique_counts_weekly.yml b/config/metrics/counts_7d/20210216184848_deploy_token_packages_total_unique_counts_weekly.yml
index 671b8a1785a..28adf6d6d01 100644
--- a/config/metrics/counts_7d/20210216184848_deploy_token_packages_total_unique_counts_weekly.yml
+++ b/config/metrics/counts_7d/20210216184848_deploy_token_packages_total_unique_counts_weekly.yml
@@ -15,17 +15,13 @@ options:
events:
- i_package_composer_deploy_token
- i_package_conan_deploy_token
- - i_package_container_deploy_token
- - i_package_debian_deploy_token
- i_package_generic_deploy_token
- - i_package_golang_deploy_token
- i_package_helm_deploy_token
- i_package_maven_deploy_token
- i_package_npm_deploy_token
- i_package_nuget_deploy_token
- i_package_pypi_deploy_token
- i_package_rubygems_deploy_token
- - i_package_tag_deploy_token
- i_package_terraform_module_deploy_token
distribution:
- ee
diff --git a/config/metrics/counts_7d/20210216184935_user_packages_total_unique_counts_weekly.yml b/config/metrics/counts_7d/20210216184935_user_packages_total_unique_counts_weekly.yml
index 81181baa4ee..e7465b79667 100644
--- a/config/metrics/counts_7d/20210216184935_user_packages_total_unique_counts_weekly.yml
+++ b/config/metrics/counts_7d/20210216184935_user_packages_total_unique_counts_weekly.yml
@@ -15,17 +15,13 @@ options:
events:
- i_package_composer_user
- i_package_conan_user
- - i_package_container_user
- - i_package_debian_user
- i_package_generic_user
- - i_package_golang_user
- i_package_helm_user
- i_package_maven_user
- i_package_npm_user
- i_package_nuget_user
- i_package_pypi_user
- i_package_rubygems_user
- - i_package_tag_user
- i_package_terraform_module_user
distribution:
- ee
diff --git a/config/metrics/counts_7d/20220131143201_i_quickactions_attention_weekly.yml b/config/metrics/counts_7d/20220131143201_i_quickactions_attention_weekly.yml
index 3e47fca1265..ec725e331e9 100644
--- a/config/metrics/counts_7d/20220131143201_i_quickactions_attention_weekly.yml
+++ b/config/metrics/counts_7d/20220131143201_i_quickactions_attention_weekly.yml
@@ -6,7 +6,9 @@ product_stage: create
product_group: code_review
product_category: code_review
value_type: number
-status: active
+status: removed
+removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95241/
+milestone_removed: '15.4'
milestone: '14.8'
introduced_by_url:
time_frame: 7d
diff --git a/config/metrics/counts_7d/20220131153223_i_quickactions_remove_attention_weekly.yml b/config/metrics/counts_7d/20220131153223_i_quickactions_remove_attention_weekly.yml
index 315cac183d1..275776eb793 100644
--- a/config/metrics/counts_7d/20220131153223_i_quickactions_remove_attention_weekly.yml
+++ b/config/metrics/counts_7d/20220131153223_i_quickactions_remove_attention_weekly.yml
@@ -6,7 +6,9 @@ product_stage: create
product_group: code_review
product_category: code_review
value_type: number
-status: active
+status: removed
+removed_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95241/
+milestone_removed: '15.4'
milestone: '14.8'
introduced_by_url:
time_frame: 7d
diff --git a/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_commit_weekly.yml b/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_commit_weekly.yml
new file mode 100644
index 00000000000..b59129cea27
--- /dev/null
+++ b/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_commit_weekly.yml
@@ -0,0 +1,27 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_commit_weekly
+name: "count_notes_in_ipynb_diff_commit_weekly"
+description: Weekly notes on ipynb commit diffs
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.0"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398
+time_frame: 7d
+data_source: redis_hll
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_create_note_in_ipynb_diff_commit
+data_category: Optional
+performance_indicator_type: []
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_mr_weekly.yml b/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_mr_weekly.yml
new file mode 100644
index 00000000000..30947b412fe
--- /dev/null
+++ b/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_mr_weekly.yml
@@ -0,0 +1,27 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_mr_weekly
+name: "count_notes_in_ipynb_diff_mr_weekly"
+description: Weekly notes on ipynb MR diffs
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.0"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398
+time_frame: 7d
+data_source: redis_hll
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_create_note_in_ipynb_diff_mr
+data_category: Optional
+performance_indicator_type: []
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_weekly.yml b/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_weekly.yml
new file mode 100644
index 00000000000..d1f331ac1e1
--- /dev/null
+++ b/config/metrics/counts_7d/20220504150641_count_notes_in_ipynb_diff_weekly.yml
@@ -0,0 +1,27 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_count_notes_in_ipynb_diff_weekly
+name: "count_notes_in_ipynb_diff_weekly"
+description: Weekly notes on ipynb diffs
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.0"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398
+time_frame: 7d
+data_source: redis_hll
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_create_note_in_ipynb_diff
+data_category: Optional
+performance_indicator_type: []
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_weekly.yml b/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_weekly.yml
new file mode 100644
index 00000000000..d57c100ec1e
--- /dev/null
+++ b/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_commit_weekly.yml
@@ -0,0 +1,27 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_commit_weekly
+name: "count_users_with_notes_in_ipynb_diff_commit_weekly"
+description: Weekly unique users with notes on ipynb commit diffs
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.0"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398
+time_frame: 7d
+data_source: redis_hll
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_user_create_note_in_ipynb_diff_commit
+data_category: Optional
+performance_indicator_type: []
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_weekly.yml b/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_weekly.yml
new file mode 100644
index 00000000000..64d856782c2
--- /dev/null
+++ b/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_mr_weekly.yml
@@ -0,0 +1,27 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_mr_weekly
+name: "count_users_with_notes_in_ipynb_diff_mr_weekly"
+description: Weekly unique users with notes on ipynb MR diffs
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.0"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398
+time_frame: 7d
+data_source: redis_hll
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_user_create_note_in_ipynb_diff_mr
+data_category: Optional
+performance_indicator_type: []
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_weekly.yml b/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_weekly.yml
new file mode 100644
index 00000000000..3d01988de75
--- /dev/null
+++ b/config/metrics/counts_7d/20220504150641_count_users_with_notes_in_ipynb_diff_weekly.yml
@@ -0,0 +1,27 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_count_users_with_notes_in_ipynb_diff_weekly
+name: "count_users_with_notes_in_ipynb_diff_weekly"
+description: Weekly unique users with notes on ipynb diffs
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.0"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85398
+time_frame: 7d
+data_source: redis_hll
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_user_create_note_in_ipynb_diff
+data_category: Optional
+performance_indicator_type: []
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_7d/20220531145014_p_ci_templates_katalon_weekly.yml b/config/metrics/counts_7d/20220531145014_p_ci_templates_katalon_weekly.yml
new file mode 100644
index 00000000000..f668646eacb
--- /dev/null
+++ b/config/metrics/counts_7d/20220531145014_p_ci_templates_katalon_weekly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_katalon_weekly
+description: 'Weekly counts of times users have executed katalon_tests jobs'
+product_section: 'ops'
+product_stage: 'analytics'
+product_group: 'pipeline_authoring'
+product_category: 'pipeline_authoring'
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86484
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - p_ci_templates_katalon
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_7d/20220627133128_i_code_review_submit_review_approve_weekly.yml b/config/metrics/counts_7d/20220627133128_i_code_review_submit_review_approve_weekly.yml
new file mode 100644
index 00000000000..2275bf185d8
--- /dev/null
+++ b/config/metrics/counts_7d/20220627133128_i_code_review_submit_review_approve_weekly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_submit_review_approve_weekly
+description: Count of unique users per week who submit a review and approve
+product_stage: create
+product_group: code_review
+product_category: code_review
+product_section: dev
+value_type: number
+status: active
+milestone: '15.4'
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91073
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_submit_review_approve
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_7d/20220627134100_i_code_review_submit_review_comment_weekly.yml b/config/metrics/counts_7d/20220627134100_i_code_review_submit_review_comment_weekly.yml
new file mode 100644
index 00000000000..16029f05626
--- /dev/null
+++ b/config/metrics/counts_7d/20220627134100_i_code_review_submit_review_comment_weekly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_submit_review_comment_weekly
+description: Count of unique users per week who submit a review with a comment
+product_stage: create
+product_group: code_review
+product_category: code_review
+product_section: dev
+value_type: number
+status: active
+milestone: '15.4'
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/91073
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_submit_review_comment
+distribution:
+ - ce
+ - ee
+tier:
+ - free
+ - premium
+ - ultimate
diff --git a/config/metrics/counts_7d/20220825142528_i_testing_test_report_uploaded_weekly.yml b/config/metrics/counts_7d/20220825142528_i_testing_test_report_uploaded_weekly.yml
new file mode 100644
index 00000000000..814a50554c1
--- /dev/null
+++ b/config/metrics/counts_7d/20220825142528_i_testing_test_report_uploaded_weekly.yml
@@ -0,0 +1,26 @@
+---
+key_path: redis_hll_counters.testing.i_testing_test_report_uploaded_weekly
+description: "MAU of junit test reports uploaded by customers per pipeline"
+product_section: ops
+product_stage: verify
+product_group: pipeline_insights
+product_category: testing
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/95112
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_testing_test_report_uploaded
+performance_indicator_type: []
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_7d/20220830104410_i_code_review_merge_request_widget_license_compliance_view_weekly.yml b/config/metrics/counts_7d/20220830104410_i_code_review_merge_request_widget_license_compliance_view_weekly.yml
new file mode 100644
index 00000000000..6e9415bdc42
--- /dev/null
+++ b/config/metrics/counts_7d/20220830104410_i_code_review_merge_request_widget_license_compliance_view_weekly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_view_weekly
+description: The count of unique users (weekly) who were able to see the License Compliance widget extension
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_view
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_7d/20220830104418_i_code_review_merge_request_widget_license_compliance_full_report_clicked_weekly.yml b/config/metrics/counts_7d/20220830104418_i_code_review_merge_request_widget_license_compliance_full_report_clicked_weekly.yml
new file mode 100644
index 00000000000..c3a8d7bfdfb
--- /dev/null
+++ b/config/metrics/counts_7d/20220830104418_i_code_review_merge_request_widget_license_compliance_full_report_clicked_weekly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_full_report_clicked_weekly
+description: The count of unique users (weekly) who clicked the Full Report button on the License Compliance widget extension
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_full_report_clicked
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_7d/20220830104424_i_code_review_merge_request_widget_license_compliance_expand_weekly.yml b/config/metrics/counts_7d/20220830104424_i_code_review_merge_request_widget_license_compliance_expand_weekly.yml
new file mode 100644
index 00000000000..69083c5ca2c
--- /dev/null
+++ b/config/metrics/counts_7d/20220830104424_i_code_review_merge_request_widget_license_compliance_expand_weekly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_weekly
+description: The count of unique users (weekly) who expanded the License Compliance widget extension
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_expand
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_7d/20220830104431_i_code_review_merge_request_widget_license_compliance_expand_success_weekly.yml b/config/metrics/counts_7d/20220830104431_i_code_review_merge_request_widget_license_compliance_expand_success_weekly.yml
new file mode 100644
index 00000000000..d145ae31f38
--- /dev/null
+++ b/config/metrics/counts_7d/20220830104431_i_code_review_merge_request_widget_license_compliance_expand_success_weekly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_success_weekly
+description: The count of unique users (weekly) who expanded the License Compliance widget extension while it is in its Success state
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_expand_success
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_7d/20220830104438_i_code_review_merge_request_widget_license_compliance_expand_warning_weekly.yml b/config/metrics/counts_7d/20220830104438_i_code_review_merge_request_widget_license_compliance_expand_warning_weekly.yml
new file mode 100644
index 00000000000..58c3d89497f
--- /dev/null
+++ b/config/metrics/counts_7d/20220830104438_i_code_review_merge_request_widget_license_compliance_expand_warning_weekly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_warning_weekly
+description: The count of unique users (weekly) who expanded the License Compliance widget extension while it is in its Warning state
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_expand_warning
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_7d/20220830104446_i_code_review_merge_request_widget_license_compliance_expand_failed_weekly.yml b/config/metrics/counts_7d/20220830104446_i_code_review_merge_request_widget_license_compliance_expand_failed_weekly.yml
new file mode 100644
index 00000000000..d8d9637f920
--- /dev/null
+++ b/config/metrics/counts_7d/20220830104446_i_code_review_merge_request_widget_license_compliance_expand_failed_weekly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.code_review.i_code_review_merge_request_widget_license_compliance_expand_failed_weekly
+description: The count of unique users (weekly) who expanded the License Compliance widget extension while it is in its Failed state
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_expand_failed
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_7d/20220907080626_i_quickactions_timeline_weekly.yml b/config/metrics/counts_7d/20220907080626_i_quickactions_timeline_weekly.yml
new file mode 100644
index 00000000000..5b10a9a93d4
--- /dev/null
+++ b/config/metrics/counts_7d/20220907080626_i_quickactions_timeline_weekly.yml
@@ -0,0 +1,27 @@
+---
+key_path: redis_hll_counters.quickactions.i_quickactions_timeline_weekly
+name: quickactions_timeline_weekly
+description: Count of WAU using the `/timeline` quick action
+product_section: ops
+product_stage: monitor
+product_group: respond
+product_category: incident_management
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97020
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+options:
+ events:
+ - i_quickactions_timeline
+performance_indicator_type: []
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_7d/20220907084343_p_ci_templates_implicit_security_sast_iac_weekly.yml b/config/metrics/counts_7d/20220907084343_p_ci_templates_implicit_security_sast_iac_weekly.yml
new file mode 100644
index 00000000000..c8e4c285492
--- /dev/null
+++ b/config/metrics/counts_7d/20220907084343_p_ci_templates_implicit_security_sast_iac_weekly.yml
@@ -0,0 +1,26 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_security_sast_iac_weekly
+description: Count of pipelines with implicit SAST runs using the stable SAST IaC template
+product_section: sec
+product_stage: secure
+product_group: "static_analysis"
+product_category: SAST
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86275
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+performance_indicator_type: []
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_implicit_jobs_sast_iac
diff --git a/config/metrics/counts_7d/20220907102710_p_ci_templates_implicit_jobs_sast_iac_weekly.yml b/config/metrics/counts_7d/20220907102710_p_ci_templates_implicit_jobs_sast_iac_weekly.yml
new file mode 100644
index 00000000000..faf4df4b772
--- /dev/null
+++ b/config/metrics/counts_7d/20220907102710_p_ci_templates_implicit_jobs_sast_iac_weekly.yml
@@ -0,0 +1,26 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_jobs_sast_iac_weekly
+description: Count of pipelines with implicit SAST jobs using the stable SAST IaC template
+product_section: sec
+product_stage: secure
+product_group: "static_analysis"
+product_category: SAST
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86275
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+performance_indicator_type: []
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_implicit_jobs_sast_iac
diff --git a/config/metrics/counts_7d/20220907202801_p_ci_templates_jobs_dependency_scanning_latest_weekly.yml b/config/metrics/counts_7d/20220907202801_p_ci_templates_jobs_dependency_scanning_latest_weekly.yml
new file mode 100644
index 00000000000..c2a9f72ec8b
--- /dev/null
+++ b/config/metrics/counts_7d/20220907202801_p_ci_templates_jobs_dependency_scanning_latest_weekly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_jobs_dependency_scanning_latest_weekly
+description: Weekly counts for Dependency Scanning CI Latest template (Jobs folder)
+product_section: sec
+product_stage: secure
+product_group: composition_analysis
+product_category: dependency_scanning
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323'
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_jobs_dependency_scanning_latest
diff --git a/config/metrics/counts_7d/20220907211959_p_ci_templates_security_container_scanning_latest_weekly.yml b/config/metrics/counts_7d/20220907211959_p_ci_templates_security_container_scanning_latest_weekly.yml
new file mode 100644
index 00000000000..8e7c6e8cbaf
--- /dev/null
+++ b/config/metrics/counts_7d/20220907211959_p_ci_templates_security_container_scanning_latest_weekly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_security_container_scanning_latest_weekly
+description: Weekly counts for Container Scanning CI Latest template (Security folder)
+product_section: sec
+product_stage: secure
+product_group: composition_analysis
+product_category: container_scanning
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323'
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_security_container_scanning_latest
diff --git a/config/metrics/counts_7d/20220907215629_p_ci_templates_jobs_license_scanning_latest_weekly.yml b/config/metrics/counts_7d/20220907215629_p_ci_templates_jobs_license_scanning_latest_weekly.yml
new file mode 100644
index 00000000000..f3cb628da5a
--- /dev/null
+++ b/config/metrics/counts_7d/20220907215629_p_ci_templates_jobs_license_scanning_latest_weekly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_jobs_license_scanning_latest_weekly
+description: Weekly counts for License Scanning CI Latest template (Jobs folder)
+product_section: sec
+product_stage: secure
+product_group: composition_analysis
+product_category: license_scanning
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323'
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_jobs_license_scanning_latest
diff --git a/config/metrics/counts_7d/20220912161233_p_ci_templates_implicit_jobs_dependency_scanning_latest_weekly.yml b/config/metrics/counts_7d/20220912161233_p_ci_templates_implicit_jobs_dependency_scanning_latest_weekly.yml
new file mode 100644
index 00000000000..243d24bcf50
--- /dev/null
+++ b/config/metrics/counts_7d/20220912161233_p_ci_templates_implicit_jobs_dependency_scanning_latest_weekly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_jobs_dependency_scanning_latest_weekly
+description: Weekly counts for implicit Dependency Scanning CI Latest template (Jobs folder)
+product_section: sec
+product_stage: secure
+product_group: composition_analysis
+product_category: dependency_scanning
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323'
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_implicit_jobs_dependency_scanning_latest
diff --git a/config/metrics/counts_7d/20220912162301_p_ci_templates_implicit_jobs_license_scanning_latest_weekly.yml b/config/metrics/counts_7d/20220912162301_p_ci_templates_implicit_jobs_license_scanning_latest_weekly.yml
new file mode 100644
index 00000000000..8fdd6c15c1d
--- /dev/null
+++ b/config/metrics/counts_7d/20220912162301_p_ci_templates_implicit_jobs_license_scanning_latest_weekly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_jobs_license_scanning_latest_weekly
+description: Weekly counts for implicit License Scanning CI Latest template (Jobs folder)
+product_section: sec
+product_stage: secure
+product_group: composition_analysis
+product_category: license_scanning
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323'
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_implicit_jobs_license_scanning_latest
diff --git a/config/metrics/counts_7d/20220912162745_p_ci_templates_implicit_security_container_scanning_latest_weekly.yml b/config/metrics/counts_7d/20220912162745_p_ci_templates_implicit_security_container_scanning_latest_weekly.yml
new file mode 100644
index 00000000000..c3818fb819c
--- /dev/null
+++ b/config/metrics/counts_7d/20220912162745_p_ci_templates_implicit_security_container_scanning_latest_weekly.yml
@@ -0,0 +1,25 @@
+---
+key_path: redis_hll_counters.ci_templates.p_ci_templates_implicit_security_container_scanning_latest_weekly
+description: Weekly counts for implicit Container Scanning CI Latest template (Security folder)
+product_section: sec
+product_stage: secure
+product_group: composition_analysis
+product_category: container_scanning
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: 'https://gitlab.com/gitlab-org/gitlab/-/merge_requests/97323'
+time_frame: 7d
+data_source: redis_hll
+data_category: optional
+instrumentation_class: RedisHLLMetric
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
+options:
+ events:
+ - p_ci_templates_implicit_security_container_scanning_latest
diff --git a/config/metrics/counts_all/20210216175043_merge_request_create.yml b/config/metrics/counts_all/20210216175043_merge_request_create.yml
index 3c2eb359f93..c71cfdcc3c0 100644
--- a/config/metrics/counts_all/20210216175043_merge_request_create.yml
+++ b/config/metrics/counts_all/20210216175043_merge_request_create.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: merge_request
+ event: create
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210216180242_web_ide_commits.yml b/config/metrics/counts_all/20210216180242_web_ide_commits.yml
index 3d1d416a7c2..f86b5bd5f84 100644
--- a/config/metrics/counts_all/20210216180242_web_ide_commits.yml
+++ b/config/metrics/counts_all/20210216180242_web_ide_commits.yml
@@ -10,6 +10,11 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: web_ide
+ event: commits_count
+ include_usage_prefix: false
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210216180244_web_ide_views.yml b/config/metrics/counts_all/20210216180244_web_ide_views.yml
index 7bc32b3dbc9..63149b86e0f 100644
--- a/config/metrics/counts_all/20210216180244_web_ide_views.yml
+++ b/config/metrics/counts_all/20210216180244_web_ide_views.yml
@@ -10,6 +10,11 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: web_ide
+ event: views_count
+ include_usage_prefix: false
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210216180246_web_ide_merge_requests.yml b/config/metrics/counts_all/20210216180246_web_ide_merge_requests.yml
index eb02d98dc85..f620447e615 100644
--- a/config/metrics/counts_all/20210216180246_web_ide_merge_requests.yml
+++ b/config/metrics/counts_all/20210216180246_web_ide_merge_requests.yml
@@ -10,6 +10,11 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: web_ide
+ event: merge_requests_count
+ include_usage_prefix: false
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210216180248_web_ide_previews.yml b/config/metrics/counts_all/20210216180248_web_ide_previews.yml
index 4d581fc7f7e..c785e95e105 100644
--- a/config/metrics/counts_all/20210216180248_web_ide_previews.yml
+++ b/config/metrics/counts_all/20210216180248_web_ide_previews.yml
@@ -10,6 +10,11 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: web_ide
+ event: previews_count
+ include_usage_prefix: false
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210216180250_web_ide_terminals.yml b/config/metrics/counts_all/20210216180250_web_ide_terminals.yml
index e8c1f425639..cd64a877341 100644
--- a/config/metrics/counts_all/20210216180250_web_ide_terminals.yml
+++ b/config/metrics/counts_all/20210216180250_web_ide_terminals.yml
@@ -10,6 +10,11 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: web_ide
+ event: terminals_count
+ include_usage_prefix: false
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210216180252_web_ide_pipelines.yml b/config/metrics/counts_all/20210216180252_web_ide_pipelines.yml
index ae891775bf9..bfd0b69401e 100644
--- a/config/metrics/counts_all/20210216180252_web_ide_pipelines.yml
+++ b/config/metrics/counts_all/20210216180252_web_ide_pipelines.yml
@@ -10,6 +10,11 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: web_ide
+ event: pipelines_count
+ include_usage_prefix: false
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210216180740_design_management_designs_create.yml b/config/metrics/counts_all/20210216180740_design_management_designs_create.yml
index 42f06ef563f..a6f04c56d56 100644
--- a/config/metrics/counts_all/20210216180740_design_management_designs_create.yml
+++ b/config/metrics/counts_all/20210216180740_design_management_designs_create.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: design_management_designs
+ event: create
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210216180741_design_management_designs_update.yml b/config/metrics/counts_all/20210216180741_design_management_designs_update.yml
index a4e526214aa..aedfed669a6 100644
--- a/config/metrics/counts_all/20210216180741_design_management_designs_update.yml
+++ b/config/metrics/counts_all/20210216180741_design_management_designs_update.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: design_management_designs
+ event: update
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210216180743_design_management_designs_delete.yml b/config/metrics/counts_all/20210216180743_design_management_designs_delete.yml
index 4eff2b1b0ff..0fee24ec9e2 100644
--- a/config/metrics/counts_all/20210216180743_design_management_designs_delete.yml
+++ b/config/metrics/counts_all/20210216180743_design_management_designs_delete.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: design_management_designs
+ event: delete
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210216182006_source_code_pushes.yml b/config/metrics/counts_all/20210216182006_source_code_pushes.yml
index 5c3c70f2496..3e4ef3ec76c 100644
--- a/config/metrics/counts_all/20210216182006_source_code_pushes.yml
+++ b/config/metrics/counts_all/20210216182006_source_code_pushes.yml
@@ -12,7 +12,7 @@ time_frame: all
data_source: redis
instrumentation_class: RedisMetric
options:
- counter_class: SourceCodeCounter
+ prefix: source_code
event: pushes
distribution:
- ce
diff --git a/config/metrics/counts_all/20210216182855_package_events_i_package_composer_delete_package.yml b/config/metrics/counts_all/20210216182855_package_events_i_package_composer_delete_package.yml
index 4db8a831afc..2db1ff225d8 100644
--- a/config/metrics/counts_all/20210216182855_package_events_i_package_composer_delete_package.yml
+++ b/config/metrics/counts_all/20210216182855_package_events_i_package_composer_delete_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_composer_delete_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182857_package_events_i_package_composer_pull_package.yml b/config/metrics/counts_all/20210216182857_package_events_i_package_composer_pull_package.yml
index cb1e984786c..81b381e7337 100644
--- a/config/metrics/counts_all/20210216182857_package_events_i_package_composer_pull_package.yml
+++ b/config/metrics/counts_all/20210216182857_package_events_i_package_composer_pull_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_composer_pull_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182859_package_events_i_package_composer_push_package.yml b/config/metrics/counts_all/20210216182859_package_events_i_package_composer_push_package.yml
index 0296f58dfb0..27e2b6ce535 100644
--- a/config/metrics/counts_all/20210216182859_package_events_i_package_composer_push_package.yml
+++ b/config/metrics/counts_all/20210216182859_package_events_i_package_composer_push_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_composer_push_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182901_package_events_i_package_conan_delete_package.yml b/config/metrics/counts_all/20210216182901_package_events_i_package_conan_delete_package.yml
index 7617489c5f4..90f0a59f58b 100644
--- a/config/metrics/counts_all/20210216182901_package_events_i_package_conan_delete_package.yml
+++ b/config/metrics/counts_all/20210216182901_package_events_i_package_conan_delete_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_conan_delete_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182903_package_events_i_package_conan_pull_package.yml b/config/metrics/counts_all/20210216182903_package_events_i_package_conan_pull_package.yml
index 125ef341824..be07d3a67c8 100644
--- a/config/metrics/counts_all/20210216182903_package_events_i_package_conan_pull_package.yml
+++ b/config/metrics/counts_all/20210216182903_package_events_i_package_conan_pull_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_conan_pull_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182905_package_events_i_package_conan_push_package.yml b/config/metrics/counts_all/20210216182905_package_events_i_package_conan_push_package.yml
index 3225658d982..deb3e1b4d0f 100644
--- a/config/metrics/counts_all/20210216182905_package_events_i_package_conan_push_package.yml
+++ b/config/metrics/counts_all/20210216182905_package_events_i_package_conan_push_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_conan_push_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182913_package_events_i_package_debian_delete_package.yml b/config/metrics/counts_all/20210216182913_package_events_i_package_debian_delete_package.yml
index 453f55a5e6a..e95a140aec9 100644
--- a/config/metrics/counts_all/20210216182913_package_events_i_package_debian_delete_package.yml
+++ b/config/metrics/counts_all/20210216182913_package_events_i_package_debian_delete_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_debian_delete_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182915_package_events_i_package_debian_pull_package.yml b/config/metrics/counts_all/20210216182915_package_events_i_package_debian_pull_package.yml
index 2949e819dff..f416d00ab4b 100644
--- a/config/metrics/counts_all/20210216182915_package_events_i_package_debian_pull_package.yml
+++ b/config/metrics/counts_all/20210216182915_package_events_i_package_debian_pull_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_debian_pull_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182919_package_events_i_package_delete_package.yml b/config/metrics/counts_all/20210216182919_package_events_i_package_delete_package.yml
index eeb5198e028..c5e999ae8f6 100644
--- a/config/metrics/counts_all/20210216182919_package_events_i_package_delete_package.yml
+++ b/config/metrics/counts_all/20210216182919_package_events_i_package_delete_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_delete_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182921_package_events_i_package_delete_package_by_deploy_token.yml b/config/metrics/counts_all/20210216182921_package_events_i_package_delete_package_by_deploy_token.yml
index 4d688af3908..7c160f02fee 100644
--- a/config/metrics/counts_all/20210216182921_package_events_i_package_delete_package_by_deploy_token.yml
+++ b/config/metrics/counts_all/20210216182921_package_events_i_package_delete_package_by_deploy_token.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_delete_package_by_deploy_token
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182923_package_events_i_package_delete_package_by_guest.yml b/config/metrics/counts_all/20210216182923_package_events_i_package_delete_package_by_guest.yml
index 9978595cb0a..b631d667ff0 100644
--- a/config/metrics/counts_all/20210216182923_package_events_i_package_delete_package_by_guest.yml
+++ b/config/metrics/counts_all/20210216182923_package_events_i_package_delete_package_by_guest.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_delete_package_by_guest
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182925_package_events_i_package_delete_package_by_user.yml b/config/metrics/counts_all/20210216182925_package_events_i_package_delete_package_by_user.yml
index 1e348c18943..3f62b79e9f1 100644
--- a/config/metrics/counts_all/20210216182925_package_events_i_package_delete_package_by_user.yml
+++ b/config/metrics/counts_all/20210216182925_package_events_i_package_delete_package_by_user.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_delete_package_by_user
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182927_package_events_i_package_generic_delete_package.yml b/config/metrics/counts_all/20210216182927_package_events_i_package_generic_delete_package.yml
index b88a0fe1622..82584ecd920 100644
--- a/config/metrics/counts_all/20210216182927_package_events_i_package_generic_delete_package.yml
+++ b/config/metrics/counts_all/20210216182927_package_events_i_package_generic_delete_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_generic_delete_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182929_package_events_i_package_generic_pull_package.yml b/config/metrics/counts_all/20210216182929_package_events_i_package_generic_pull_package.yml
index b2bcf1baffe..0eca0f41708 100644
--- a/config/metrics/counts_all/20210216182929_package_events_i_package_generic_pull_package.yml
+++ b/config/metrics/counts_all/20210216182929_package_events_i_package_generic_pull_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_generic_pull_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182931_package_events_i_package_generic_push_package.yml b/config/metrics/counts_all/20210216182931_package_events_i_package_generic_push_package.yml
index 54063d11b9f..1e3577820a4 100644
--- a/config/metrics/counts_all/20210216182931_package_events_i_package_generic_push_package.yml
+++ b/config/metrics/counts_all/20210216182931_package_events_i_package_generic_push_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_generic_push_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182933_package_events_i_package_golang_delete_package.yml b/config/metrics/counts_all/20210216182933_package_events_i_package_golang_delete_package.yml
index 0ea0007c525..8c0cfd62490 100644
--- a/config/metrics/counts_all/20210216182933_package_events_i_package_golang_delete_package.yml
+++ b/config/metrics/counts_all/20210216182933_package_events_i_package_golang_delete_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_golang_delete_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182934_package_events_i_package_golang_pull_package.yml b/config/metrics/counts_all/20210216182934_package_events_i_package_golang_pull_package.yml
index 1b68386e3fe..bd8b5ec54b7 100644
--- a/config/metrics/counts_all/20210216182934_package_events_i_package_golang_pull_package.yml
+++ b/config/metrics/counts_all/20210216182934_package_events_i_package_golang_pull_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_golang_pull_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182936_package_events_i_package_golang_push_package.yml b/config/metrics/counts_all/20210216182936_package_events_i_package_golang_push_package.yml
index be3f7974a44..0610ac36fab 100644
--- a/config/metrics/counts_all/20210216182936_package_events_i_package_golang_push_package.yml
+++ b/config/metrics/counts_all/20210216182936_package_events_i_package_golang_push_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_golang_push_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182938_package_events_i_package_maven_delete_package.yml b/config/metrics/counts_all/20210216182938_package_events_i_package_maven_delete_package.yml
index 676748442a5..1dfbdebfdc8 100644
--- a/config/metrics/counts_all/20210216182938_package_events_i_package_maven_delete_package.yml
+++ b/config/metrics/counts_all/20210216182938_package_events_i_package_maven_delete_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_maven_delete_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182940_package_events_i_package_maven_pull_package.yml b/config/metrics/counts_all/20210216182940_package_events_i_package_maven_pull_package.yml
index f035edcc74c..7e8891faa7a 100644
--- a/config/metrics/counts_all/20210216182940_package_events_i_package_maven_pull_package.yml
+++ b/config/metrics/counts_all/20210216182940_package_events_i_package_maven_pull_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_maven_pull_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182942_package_events_i_package_maven_push_package.yml b/config/metrics/counts_all/20210216182942_package_events_i_package_maven_push_package.yml
index 92521cc1fda..7685a116b9f 100644
--- a/config/metrics/counts_all/20210216182942_package_events_i_package_maven_push_package.yml
+++ b/config/metrics/counts_all/20210216182942_package_events_i_package_maven_push_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_maven_push_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182944_package_events_i_package_npm_delete_package.yml b/config/metrics/counts_all/20210216182944_package_events_i_package_npm_delete_package.yml
index 24188860b45..104576a8f32 100644
--- a/config/metrics/counts_all/20210216182944_package_events_i_package_npm_delete_package.yml
+++ b/config/metrics/counts_all/20210216182944_package_events_i_package_npm_delete_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_npm_delete_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182946_package_events_i_package_npm_pull_package.yml b/config/metrics/counts_all/20210216182946_package_events_i_package_npm_pull_package.yml
index 5dc94ab61fb..fe04fafc3c8 100644
--- a/config/metrics/counts_all/20210216182946_package_events_i_package_npm_pull_package.yml
+++ b/config/metrics/counts_all/20210216182946_package_events_i_package_npm_pull_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_npm_pull_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182948_package_events_i_package_npm_push_package.yml b/config/metrics/counts_all/20210216182948_package_events_i_package_npm_push_package.yml
index 0878ec9ade8..5f8ccc277f8 100644
--- a/config/metrics/counts_all/20210216182948_package_events_i_package_npm_push_package.yml
+++ b/config/metrics/counts_all/20210216182948_package_events_i_package_npm_push_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_npm_push_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182950_package_events_i_package_nuget_delete_package.yml b/config/metrics/counts_all/20210216182950_package_events_i_package_nuget_delete_package.yml
index bd45f8fd652..3570e509ce9 100644
--- a/config/metrics/counts_all/20210216182950_package_events_i_package_nuget_delete_package.yml
+++ b/config/metrics/counts_all/20210216182950_package_events_i_package_nuget_delete_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_nuget_delete_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182952_package_events_i_package_nuget_pull_package.yml b/config/metrics/counts_all/20210216182952_package_events_i_package_nuget_pull_package.yml
index e175f9ea64c..2eddb4af420 100644
--- a/config/metrics/counts_all/20210216182952_package_events_i_package_nuget_pull_package.yml
+++ b/config/metrics/counts_all/20210216182952_package_events_i_package_nuget_pull_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_nuget_pull_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182954_package_events_i_package_nuget_push_package.yml b/config/metrics/counts_all/20210216182954_package_events_i_package_nuget_push_package.yml
index 5e3c4d13177..02f45dad580 100644
--- a/config/metrics/counts_all/20210216182954_package_events_i_package_nuget_push_package.yml
+++ b/config/metrics/counts_all/20210216182954_package_events_i_package_nuget_push_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_nuget_push_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182956_package_events_i_package_pull_package.yml b/config/metrics/counts_all/20210216182956_package_events_i_package_pull_package.yml
index b059c11bf40..aa459c6db2c 100644
--- a/config/metrics/counts_all/20210216182956_package_events_i_package_pull_package.yml
+++ b/config/metrics/counts_all/20210216182956_package_events_i_package_pull_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_pull_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216182958_package_events_i_package_pull_package_by_deploy_token.yml b/config/metrics/counts_all/20210216182958_package_events_i_package_pull_package_by_deploy_token.yml
index 532546fd7f3..a527379fe00 100644
--- a/config/metrics/counts_all/20210216182958_package_events_i_package_pull_package_by_deploy_token.yml
+++ b/config/metrics/counts_all/20210216182958_package_events_i_package_pull_package_by_deploy_token.yml
@@ -11,6 +11,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_pull_package_by_deploy_token
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216183000_package_events_i_package_pull_package_by_guest.yml b/config/metrics/counts_all/20210216183000_package_events_i_package_pull_package_by_guest.yml
index d402d29612f..45dcd531484 100644
--- a/config/metrics/counts_all/20210216183000_package_events_i_package_pull_package_by_guest.yml
+++ b/config/metrics/counts_all/20210216183000_package_events_i_package_pull_package_by_guest.yml
@@ -11,6 +11,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_pull_package_by_guest
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216183002_package_events_i_package_pull_package_by_user.yml b/config/metrics/counts_all/20210216183002_package_events_i_package_pull_package_by_user.yml
index 21076556ce4..69983e77d5f 100644
--- a/config/metrics/counts_all/20210216183002_package_events_i_package_pull_package_by_user.yml
+++ b/config/metrics/counts_all/20210216183002_package_events_i_package_pull_package_by_user.yml
@@ -11,6 +11,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_pull_package_by_user
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216183004_package_events_i_package_push_package.yml b/config/metrics/counts_all/20210216183004_package_events_i_package_push_package.yml
index c9f52de010b..22c4969ad7d 100644
--- a/config/metrics/counts_all/20210216183004_package_events_i_package_push_package.yml
+++ b/config/metrics/counts_all/20210216183004_package_events_i_package_push_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_push_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216183005_package_events_i_package_push_package_by_deploy_token.yml b/config/metrics/counts_all/20210216183005_package_events_i_package_push_package_by_deploy_token.yml
index cf0c42dce28..252474155c1 100644
--- a/config/metrics/counts_all/20210216183005_package_events_i_package_push_package_by_deploy_token.yml
+++ b/config/metrics/counts_all/20210216183005_package_events_i_package_push_package_by_deploy_token.yml
@@ -11,6 +11,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_push_package_by_deploy_token
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216183007_package_events_i_package_push_package_by_guest.yml b/config/metrics/counts_all/20210216183007_package_events_i_package_push_package_by_guest.yml
index 92d31d03faa..8fa5f2b877c 100644
--- a/config/metrics/counts_all/20210216183007_package_events_i_package_push_package_by_guest.yml
+++ b/config/metrics/counts_all/20210216183007_package_events_i_package_push_package_by_guest.yml
@@ -11,6 +11,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_push_package_by_guest
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216183009_package_events_i_package_push_package_by_user.yml b/config/metrics/counts_all/20210216183009_package_events_i_package_push_package_by_user.yml
index 1a3b14e8a0b..42b0b0130ad 100644
--- a/config/metrics/counts_all/20210216183009_package_events_i_package_push_package_by_user.yml
+++ b/config/metrics/counts_all/20210216183009_package_events_i_package_push_package_by_user.yml
@@ -11,6 +11,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_push_package_by_user
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216183011_package_events_i_package_pypi_delete_package.yml b/config/metrics/counts_all/20210216183011_package_events_i_package_pypi_delete_package.yml
index 6c0e86090ae..d1c7f71e593 100644
--- a/config/metrics/counts_all/20210216183011_package_events_i_package_pypi_delete_package.yml
+++ b/config/metrics/counts_all/20210216183011_package_events_i_package_pypi_delete_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_pypi_delete_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216183013_package_events_i_package_pypi_pull_package.yml b/config/metrics/counts_all/20210216183013_package_events_i_package_pypi_pull_package.yml
index 2512818a4e1..e47231a30bd 100644
--- a/config/metrics/counts_all/20210216183013_package_events_i_package_pypi_pull_package.yml
+++ b/config/metrics/counts_all/20210216183013_package_events_i_package_pypi_pull_package.yml
@@ -11,6 +11,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_pypi_pull_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210216183015_package_events_i_package_pypi_push_package.yml b/config/metrics/counts_all/20210216183015_package_events_i_package_pypi_push_package.yml
index 4234dd52964..4edd359cc1e 100644
--- a/config/metrics/counts_all/20210216183015_package_events_i_package_pypi_push_package.yml
+++ b/config/metrics/counts_all/20210216183015_package_events_i_package_pypi_push_package.yml
@@ -10,6 +10,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_pypi_push_package
distribution:
- ee
- ce
diff --git a/config/metrics/counts_all/20210303153000_package_events_i_package_rubygems_delete_package.yml b/config/metrics/counts_all/20210303153000_package_events_i_package_rubygems_delete_package.yml
index 15f3003f5d6..2265eff7393 100644
--- a/config/metrics/counts_all/20210303153000_package_events_i_package_rubygems_delete_package.yml
+++ b/config/metrics/counts_all/20210303153000_package_events_i_package_rubygems_delete_package.yml
@@ -12,6 +12,10 @@ milestone: '13.10'
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/53480
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_rubygems_delete_package
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210303153002_package_events_i_package_rubygems_pull_package.yml b/config/metrics/counts_all/20210303153002_package_events_i_package_rubygems_pull_package.yml
index 5c825c76296..20af7e2a564 100644
--- a/config/metrics/counts_all/20210303153002_package_events_i_package_rubygems_pull_package.yml
+++ b/config/metrics/counts_all/20210303153002_package_events_i_package_rubygems_pull_package.yml
@@ -12,6 +12,10 @@ milestone: '13.10'
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/53480
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_rubygems_pull_package
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210303153004_package_events_i_package_rubygems_push_package.yml b/config/metrics/counts_all/20210303153004_package_events_i_package_rubygems_push_package.yml
index f8a8fcf8abd..6c7150b3f44 100644
--- a/config/metrics/counts_all/20210303153004_package_events_i_package_rubygems_push_package.yml
+++ b/config/metrics/counts_all/20210303153004_package_events_i_package_rubygems_push_package.yml
@@ -12,6 +12,10 @@ time_frame: all
milestone: '13.10'
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/53480
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_rubygems_push_package
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210410012200_package_events_i_package_terraform_module_delete_package.yml b/config/metrics/counts_all/20210410012200_package_events_i_package_terraform_module_delete_package.yml
index b914a60050d..2dd4576a0fc 100644
--- a/config/metrics/counts_all/20210410012200_package_events_i_package_terraform_module_delete_package.yml
+++ b/config/metrics/counts_all/20210410012200_package_events_i_package_terraform_module_delete_package.yml
@@ -12,6 +12,10 @@ milestone: '13.11'
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/55018
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_terraform_module_delete_package
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210410012202_package_events_i_package_terraform_module_pull_package.yml b/config/metrics/counts_all/20210410012202_package_events_i_package_terraform_module_pull_package.yml
index 85258f27878..21b36947f1a 100644
--- a/config/metrics/counts_all/20210410012202_package_events_i_package_terraform_module_pull_package.yml
+++ b/config/metrics/counts_all/20210410012202_package_events_i_package_terraform_module_pull_package.yml
@@ -12,6 +12,10 @@ milestone: '13.11'
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/55018
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_terraform_module_pull_package
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210410012204_package_events_i_package_terraform_module_push_package.yml b/config/metrics/counts_all/20210410012204_package_events_i_package_terraform_module_push_package.yml
index f8d0643ab3a..bd7a26f022b 100644
--- a/config/metrics/counts_all/20210410012204_package_events_i_package_terraform_module_push_package.yml
+++ b/config/metrics/counts_all/20210410012204_package_events_i_package_terraform_module_push_package.yml
@@ -12,6 +12,10 @@ milestone: '13.11'
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/55018
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_terraform_module_push_package
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210517073546_package_events_i_package_helm_pull_package.yml b/config/metrics/counts_all/20210517073546_package_events_i_package_helm_pull_package.yml
index 04cc4a17b45..f2bbac01b47 100644
--- a/config/metrics/counts_all/20210517073546_package_events_i_package_helm_pull_package.yml
+++ b/config/metrics/counts_all/20210517073546_package_events_i_package_helm_pull_package.yml
@@ -12,6 +12,10 @@ milestone: "14.0"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61014
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_helm_pull_package
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20210625095025_package_events_i_package_helm_push_package.yml b/config/metrics/counts_all/20210625095025_package_events_i_package_helm_push_package.yml
index c529f1ecb8a..5be5a703ad4 100644
--- a/config/metrics/counts_all/20210625095025_package_events_i_package_helm_push_package.yml
+++ b/config/metrics/counts_all/20210625095025_package_events_i_package_helm_push_package.yml
@@ -11,6 +11,10 @@ milestone: "14.1"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64814
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_helm_push_package
data_category: optional
distribution:
- ce
diff --git a/config/metrics/counts_all/20210709191135_package_events_i_package_nuget_pull_symbol_package.yml b/config/metrics/counts_all/20210709191135_package_events_i_package_nuget_pull_symbol_package.yml
index 164cdd477cb..9924df439b0 100644
--- a/config/metrics/counts_all/20210709191135_package_events_i_package_nuget_pull_symbol_package.yml
+++ b/config/metrics/counts_all/20210709191135_package_events_i_package_nuget_pull_symbol_package.yml
@@ -12,6 +12,10 @@ milestone: "14.1"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_nuget_pull_symbol_package
data_category: optional
distribution:
- ce
diff --git a/config/metrics/counts_all/20210709191829_package_events_i_package_nuget_push_symbol_package.yml b/config/metrics/counts_all/20210709191829_package_events_i_package_nuget_push_symbol_package.yml
index eb9576c864c..ecff5ad53e0 100644
--- a/config/metrics/counts_all/20210709191829_package_events_i_package_nuget_push_symbol_package.yml
+++ b/config/metrics/counts_all/20210709191829_package_events_i_package_nuget_push_symbol_package.yml
@@ -12,6 +12,10 @@ milestone: "14.1"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_nuget_push_symbol_package
data_category: optional
distribution:
- ce
diff --git a/config/metrics/counts_all/20210709210941_package_events_i_package_pull_symbol_package.yml b/config/metrics/counts_all/20210709210941_package_events_i_package_pull_symbol_package.yml
index 712eeb644cc..e7f3491aa09 100644
--- a/config/metrics/counts_all/20210709210941_package_events_i_package_pull_symbol_package.yml
+++ b/config/metrics/counts_all/20210709210941_package_events_i_package_pull_symbol_package.yml
@@ -12,6 +12,10 @@ milestone: "14.1"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_pull_symbol_package
data_category: optional
distribution:
- ce
diff --git a/config/metrics/counts_all/20210709211058_package_events_i_package_pull_symbol_package_by_deploy_token.yml b/config/metrics/counts_all/20210709211058_package_events_i_package_pull_symbol_package_by_deploy_token.yml
index d4ebb18d006..6aaf9bc2978 100644
--- a/config/metrics/counts_all/20210709211058_package_events_i_package_pull_symbol_package_by_deploy_token.yml
+++ b/config/metrics/counts_all/20210709211058_package_events_i_package_pull_symbol_package_by_deploy_token.yml
@@ -12,6 +12,10 @@ milestone: "14.1"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_pull_symbol_package_by_deploy_token
data_category: optional
distribution:
- ce
diff --git a/config/metrics/counts_all/20210709211248_package_events_i_package_pull_symbol_package_by_guest.yml b/config/metrics/counts_all/20210709211248_package_events_i_package_pull_symbol_package_by_guest.yml
index d84a218e88e..936e245c240 100644
--- a/config/metrics/counts_all/20210709211248_package_events_i_package_pull_symbol_package_by_guest.yml
+++ b/config/metrics/counts_all/20210709211248_package_events_i_package_pull_symbol_package_by_guest.yml
@@ -12,6 +12,10 @@ milestone: "14.1"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_pull_symbol_package_by_guest
data_category: optional
distribution:
- ce
diff --git a/config/metrics/counts_all/20210709211341_package_events_i_package_pull_symbol_package_by_user.yml b/config/metrics/counts_all/20210709211341_package_events_i_package_pull_symbol_package_by_user.yml
index b91dfa334a5..373c23a4016 100644
--- a/config/metrics/counts_all/20210709211341_package_events_i_package_pull_symbol_package_by_user.yml
+++ b/config/metrics/counts_all/20210709211341_package_events_i_package_pull_symbol_package_by_user.yml
@@ -12,6 +12,10 @@ milestone: "14.1"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_pull_symbol_package_by_user
data_category: optional
distribution:
- ce
diff --git a/config/metrics/counts_all/20210709211439_package_events_i_package_push_symbol_package.yml b/config/metrics/counts_all/20210709211439_package_events_i_package_push_symbol_package.yml
index a6335011ddd..e1c08134dec 100644
--- a/config/metrics/counts_all/20210709211439_package_events_i_package_push_symbol_package.yml
+++ b/config/metrics/counts_all/20210709211439_package_events_i_package_push_symbol_package.yml
@@ -12,6 +12,10 @@ milestone: "14.1"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_push_symbol_package
data_category: optional
distribution:
- ce
diff --git a/config/metrics/counts_all/20210709211636_package_events_i_package_push_symbol_package_by_deploy_token.yml b/config/metrics/counts_all/20210709211636_package_events_i_package_push_symbol_package_by_deploy_token.yml
index acc00f50744..2cdfc6f86d0 100644
--- a/config/metrics/counts_all/20210709211636_package_events_i_package_push_symbol_package_by_deploy_token.yml
+++ b/config/metrics/counts_all/20210709211636_package_events_i_package_push_symbol_package_by_deploy_token.yml
@@ -12,6 +12,10 @@ milestone: "14.1"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_push_symbol_package_by_deploy_token
data_category: optional
distribution:
- ce
diff --git a/config/metrics/counts_all/20210709211731_package_events_i_package_push_symbol_package_by_guest.yml b/config/metrics/counts_all/20210709211731_package_events_i_package_push_symbol_package_by_guest.yml
index 16635a5f6a9..69db39047c7 100644
--- a/config/metrics/counts_all/20210709211731_package_events_i_package_push_symbol_package_by_guest.yml
+++ b/config/metrics/counts_all/20210709211731_package_events_i_package_push_symbol_package_by_guest.yml
@@ -12,6 +12,10 @@ milestone: "14.1"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_push_symbol_package_by_guest
data_category: optional
distribution:
- ce
diff --git a/config/metrics/counts_all/20210709211831_package_events_i_package_push_symbol_package_by_user.yml b/config/metrics/counts_all/20210709211831_package_events_i_package_push_symbol_package_by_user.yml
index 653814c4bf0..d7fd850a24f 100644
--- a/config/metrics/counts_all/20210709211831_package_events_i_package_push_symbol_package_by_user.yml
+++ b/config/metrics/counts_all/20210709211831_package_events_i_package_push_symbol_package_by_user.yml
@@ -12,6 +12,10 @@ milestone: "14.1"
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/64554
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: package_events
+ event: i_package_push_symbol_package_by_user
data_category: optional
distribution:
- ce
diff --git a/config/metrics/counts_all/20210723075525_diff_searches.yml b/config/metrics/counts_all/20210723075525_diff_searches.yml
index 0cce12a8659..54deaba0406 100644
--- a/config/metrics/counts_all/20210723075525_diff_searches.yml
+++ b/config/metrics/counts_all/20210723075525_diff_searches.yml
@@ -1,4 +1,5 @@
---
+data_category: optional
key_path: counts.diff_searches
description: Total count of merge request diff searches
product_section: dev
@@ -11,7 +12,10 @@ milestone: '14.2'
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/66522
time_frame: all
data_source: redis
-data_category: optional
+instrumentation_class: RedisMetric
+options:
+ prefix: diff
+ event: searches
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20220122022215_web_ide_previews_success.yml b/config/metrics/counts_all/20220122022215_web_ide_previews_success.yml
index 203201e9174..e2d617dba16 100644
--- a/config/metrics/counts_all/20220122022215_web_ide_previews_success.yml
+++ b/config/metrics/counts_all/20220122022215_web_ide_previews_success.yml
@@ -10,6 +10,11 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: web_ide
+ event: previews_success_count
+ include_usage_prefix: false
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20220314362302_service_usage_data_download_payload.yml b/config/metrics/counts_all/20220314362302_service_usage_data_download_payload.yml
index 1b26202c5ef..5a330eea78b 100644
--- a/config/metrics/counts_all/20220314362302_service_usage_data_download_payload.yml
+++ b/config/metrics/counts_all/20220314362302_service_usage_data_download_payload.yml
@@ -11,6 +11,10 @@ value_type: number
status: active
time_frame: all
data_source: redis
+instrumentation_class: RedisMetric
+options:
+ prefix: service_usage_data
+ event: download_payload_click
distribution:
- ce
- ee
diff --git a/config/metrics/counts_all/20220825115210_i_merge_request_widget_license_compliance_count_view.yml b/config/metrics/counts_all/20220825115210_i_merge_request_widget_license_compliance_count_view.yml
new file mode 100644
index 00000000000..3542f4fd8ac
--- /dev/null
+++ b/config/metrics/counts_all/20220825115210_i_merge_request_widget_license_compliance_count_view.yml
@@ -0,0 +1,24 @@
+---
+key_path: counts.i_code_review_merge_request_widget_license_compliance_count_view
+description: Total number of times the License Compliance widget extension was viewed (rendered to the screen)
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: all
+data_source: redis
+data_category: optional
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_count_view
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_all/20220825115217_i_merge_request_widget_license_compliance_count_full_report_clicked.yml b/config/metrics/counts_all/20220825115217_i_merge_request_widget_license_compliance_count_full_report_clicked.yml
new file mode 100644
index 00000000000..580d0d4dff3
--- /dev/null
+++ b/config/metrics/counts_all/20220825115217_i_merge_request_widget_license_compliance_count_full_report_clicked.yml
@@ -0,0 +1,24 @@
+---
+key_path: counts.i_code_review_merge_request_widget_license_compliance_count_full_report_clicked
+description: Total number of times the License Compliance widget extension Full Report button was clicked
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: all
+data_source: redis
+data_category: optional
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_count_full_report_clicked
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_all/20220825115224_i_merge_request_widget_license_compliance_count_expand.yml b/config/metrics/counts_all/20220825115224_i_merge_request_widget_license_compliance_count_expand.yml
new file mode 100644
index 00000000000..1829e1c87c0
--- /dev/null
+++ b/config/metrics/counts_all/20220825115224_i_merge_request_widget_license_compliance_count_expand.yml
@@ -0,0 +1,24 @@
+---
+key_path: counts.i_code_review_merge_request_widget_license_compliance_count_expand
+description: Total number of times the License Compliance widget extension was expanded (in any state)
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: all
+data_source: redis
+data_category: optional
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_count_expand
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_all/20220825115230_i_merge_request_widget_license_compliance_count_expand_success.yml b/config/metrics/counts_all/20220825115230_i_merge_request_widget_license_compliance_count_expand_success.yml
new file mode 100644
index 00000000000..4a8f35a7c5b
--- /dev/null
+++ b/config/metrics/counts_all/20220825115230_i_merge_request_widget_license_compliance_count_expand_success.yml
@@ -0,0 +1,24 @@
+---
+key_path: counts.i_code_review_merge_request_widget_license_compliance_count_expand_success
+description: Total number of times the License Compliance widget extension was expanded (while in its Success state)
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: all
+data_source: redis
+data_category: optional
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_count_expand_success
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_all/20220825115236_i_merge_request_widget_license_compliance_count_expand_warning.yml b/config/metrics/counts_all/20220825115236_i_merge_request_widget_license_compliance_count_expand_warning.yml
new file mode 100644
index 00000000000..1ebc20fca26
--- /dev/null
+++ b/config/metrics/counts_all/20220825115236_i_merge_request_widget_license_compliance_count_expand_warning.yml
@@ -0,0 +1,24 @@
+---
+key_path: counts.i_code_review_merge_request_widget_license_compliance_count_expand_warning
+description: Total number of times the License Compliance widget extension was expanded (while in its Warning state)
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: all
+data_source: redis
+data_category: optional
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_count_expand_warning
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_all/20220825115242_i_merge_request_widget_license_compliance_count_expand_failed.yml b/config/metrics/counts_all/20220825115242_i_merge_request_widget_license_compliance_count_expand_failed.yml
new file mode 100644
index 00000000000..7fe8263a53e
--- /dev/null
+++ b/config/metrics/counts_all/20220825115242_i_merge_request_widget_license_compliance_count_expand_failed.yml
@@ -0,0 +1,24 @@
+---
+key_path: counts.i_code_review_merge_request_widget_license_compliance_count_expand_failed
+description: Total number of times the License Compliance widget extension was expanded (while in its Failed state)
+product_section: dev
+product_stage: create
+product_group: code_review
+product_category: code_review
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96538"
+time_frame: all
+data_source: redis
+data_category: optional
+options:
+ events:
+ - i_code_review_merge_request_widget_license_compliance_count_expand_failed
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/metrics/counts_all/20220825232556_count_user_auth.yml b/config/metrics/counts_all/20220825232556_count_user_auth.yml
new file mode 100644
index 00000000000..623e0dbb7a4
--- /dev/null
+++ b/config/metrics/counts_all/20220825232556_count_user_auth.yml
@@ -0,0 +1,23 @@
+---
+key_path: usage_activity_by_stage.manage.count_user_auth
+description: Number of unique user logins
+product_section: dev
+product_stage: manage
+product_group: authentication_and_authorization
+product_category: system_access
+value_type: number
+status: active
+milestone: "15.4"
+introduced_by_url: "https://gitlab.com/gitlab-org/gitlab/-/merge_requests/96321"
+time_frame: all
+data_source: database
+instrumentation_class: CountUserAuthMetric
+data_category: optional
+performance_indicator_type: []
+distribution:
+- ce
+- ee
+tier:
+- free
+- premium
+- ultimate
diff --git a/config/no_todos_messages.yml b/config/no_todos_messages.yml
deleted file mode 100644
index d2076f235fd..00000000000
--- a/config/no_todos_messages.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-# When the todo list on the user's dashboard becomes empty, a random message
-# from the list below will be shown.
-#
-# If you come up with a fun one, please feel free to contribute it to GitLab!
-# https://about.gitlab.com/contributing/
----
-- Good job! Looks like you don't have anything left on your To-Do List
-- Isn't an empty To-Do List beautiful?
-- Give yourself a pat on the back!
-- Nothing left to do. High five!
-- Henceforth, you shall be known as "To-Do Destroyer"
diff --git a/config/object_store_settings.rb b/config/object_store_settings.rb
index 3280bc284ad..e55032d3987 100644
--- a/config/object_store_settings.rb
+++ b/config/object_store_settings.rb
@@ -16,10 +16,6 @@ class ObjectStoreSettings
# we don't need to raise an error in that case
ALLOWED_INCOMPLETE_TYPES = %w(pages).freeze
- # A fallback switch in case anyone gets a trouble with background upload removal
- # Epic: https://gitlab.com/groups/gitlab-com/gl-infra/-/epics/734
- LEGACY_BACKGROUND_UPLOADS_ENV = "GITLAB_LEGACY_BACKGROUND_UPLOADS"
-
attr_accessor :settings
# Legacy parser
@@ -30,13 +26,8 @@ class ObjectStoreSettings
object_store['remote_directory']
)
- if support_legacy_background_upload?(object_store_type)
- object_store['direct_upload'] = false
- object_store['background_upload'] = true
- else
- object_store['direct_upload'] = true
- object_store['background_upload'] = false
- end
+ object_store['direct_upload'] = true
+ object_store['background_upload'] = false
object_store['proxy_download'] = false if object_store['proxy_download'].nil?
object_store['storage_options'] ||= {}
@@ -46,10 +37,6 @@ class ObjectStoreSettings
object_store
end
- def self.support_legacy_background_upload?(object_store_type)
- ENV[LEGACY_BACKGROUND_UPLOADS_ENV].to_s.split(',').map(&:strip).include?(object_store_type)
- end
-
def self.split_bucket_prefix(bucket)
return [nil, nil] unless bucket.present?
diff --git a/config/plugins/graphql_known_operations_plugin.js b/config/plugins/graphql_known_operations_plugin.js
index 164b34c1dd1..c340849e084 100644
--- a/config/plugins/graphql_known_operations_plugin.js
+++ b/config/plugins/graphql_known_operations_plugin.js
@@ -1,9 +1,10 @@
/* eslint-disable no-underscore-dangle */
const yaml = require('js-yaml');
+const { evaluateModuleFromSource } = require('../helpers/evaluate_module_from_source');
+
const PLUGIN_NAME = 'GraphqlKnownOperationsPlugin';
const GRAPHQL_PATH_REGEX = /(query|mutation)\.graphql$/;
-const OPERATION_NAME_SOURCE_REGEX = /^\s*module\.exports.*oneQuery.*"(\w+)"/gm;
/**
* Returns whether a given webpack module is a "graphql" module
@@ -26,9 +27,19 @@ const getOperationNames = (module) => {
return [];
}
- const matches = originalSource.source().toString().matchAll(OPERATION_NAME_SOURCE_REGEX);
+ const { exports: moduleExports } = evaluateModuleFromSource(originalSource.source().toString(), {
+ // what: stub require(...) when evaluating the graphql module
+ // why: require(...) is used to fetch fragments. We only need operation metadata, so it's fine to stub these out.
+ require: () => ({ definitions: [] }),
+ });
+
+ const names = moduleExports.definitions
+ .filter((x) => ['query', 'mutation'].includes(x.operation))
+ .map((x) => x.name?.value)
+ // why: It's possible for operations to not have a name. That violates our eslint rule, but either way, let's ignore those here.
+ .filter(Boolean);
- return Array.from(matches).map((match) => match[1]);
+ return names;
};
const createFileContents = (knownOperations) => {
@@ -60,7 +71,7 @@ const onSucceedModule = ({ module, knownOperations }) => {
return;
}
- getOperationNames(module).forEach((x) => knownOperations.add(x));
+ getOperationNames(module).forEach((name) => knownOperations.add(name));
};
const onCompilerEmit = ({ compilation, knownOperations, filename }) => {
diff --git a/config/routes.rb b/config/routes.rb
index ddc7b77460c..704405bbcbd 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -70,8 +70,11 @@ InitializerConnections.with_disabled_database_connections do
Gitlab.ee do
resource :company, only: [:new, :create], controller: 'company'
- resources :groups, only: [:new, :create]
- resources :projects, only: [:new, :create]
+
+ # legacy - to be removed with https://gitlab.com/gitlab-org/gitlab/-/issues/371996
+ get 'groups/new', to: redirect('users/sign_up/groups_projects/new')
+ get 'projects/new', to: redirect('users/sign_up/groups_projects/new')
+
resources :groups_projects, only: [:new, :create] do
collection do
post :import
diff --git a/config/routes/group.rb b/config/routes/group.rb
index 2a5931207b0..4a47b349665 100644
--- a/config/routes/group.rb
+++ b/config/routes/group.rb
@@ -121,8 +121,10 @@ constraints(::Constraints::GroupUrlConstrainer.new) do
resource :dependency_proxy, only: [:show, :update]
resources :email_campaigns, only: :index
+ resources :observability, only: :index
+
namespace :harbor do
- resources :repositories, only: [:index] do
+ resources :repositories, only: [:index, :show], constraints: { id: %r{[a-zA-Z./:0-9_\-]+} } do
resources :artifacts, only: [:index] do
resources :tags, only: [:index]
end
diff --git a/config/routes/help.rb b/config/routes/help.rb
index 2a0aba8b632..54ad3d43081 100644
--- a/config/routes/help.rb
+++ b/config/routes/help.rb
@@ -3,4 +3,5 @@
get 'help' => 'help#index'
get 'help/shortcuts' => 'help#shortcuts'
get 'help/instance_configuration' => 'help#instance_configuration'
+get 'help/drawers/*markdown_file' => 'help#drawers'
get 'help/*path' => 'help#show', as: :help_page
diff --git a/config/routes/project.rb b/config/routes/project.rb
index 53d9be13611..79ca13e3d8c 100644
--- a/config/routes/project.rb
+++ b/config/routes/project.rb
@@ -159,6 +159,7 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
resource :packages_and_registries, only: [:show] do
get '/cleanup_image_tags', to: 'packages_and_registries#cleanup_tags'
end
+ resource :merge_requests, only: [:show, :update]
end
resources :usage_quotas, only: [:index]
@@ -312,7 +313,7 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
get '/deployments/cloud_run', to: 'deployments#cloud_run'
get '/deployments/cloud_storage', to: 'deployments#cloud_storage'
- get '/databases', to: 'databases#index'
+ resources :databases, only: [:index, :create, :new], path_names: { new: 'new/:product' }
end
resources :environments, except: [:destroy] do
@@ -466,7 +467,7 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do
end
namespace :harbor do
- resources :repositories, only: [:index, :show] do
+ resources :repositories, only: [:index, :show], constraints: { id: %r{[a-zA-Z./:0-9_\-]+} } do
resources :artifacts, only: [:index] do
resources :tags, only: [:index]
end
diff --git a/config/routes/uploads.rb b/config/routes/uploads.rb
index ba2e8493ef9..7b598e84975 100644
--- a/config/routes/uploads.rb
+++ b/config/routes/uploads.rb
@@ -22,13 +22,6 @@ scope path: :uploads do
constraints: { model: /appearance/, mounted_as: /logo|header_logo|favicon/, filename: /.+/ },
as: 'appearance_upload'
- # Project markdown uploads
- # DEPRECATED: Remove this in GitLab 13.0 because this is redundant to show_namespace_project_uploads
- # https://gitlab.com/gitlab-org/gitlab/issues/196396
- get ":namespace_id/:project_id/:secret/:filename",
- to: redirect("%{namespace_id}/%{project_id}/uploads/%{secret}/%{filename}"),
- constraints: { namespace_id: /[a-zA-Z.0-9_\-]+/, project_id: /[a-zA-Z.0-9_\-]+/, filename: %r{[^/]+} }, format: false, defaults: { format: nil }
-
# create uploads for models, snippets (notes) available for now
post ':model',
to: 'uploads#create',
diff --git a/config/settings.rb b/config/settings.rb
index 51d54817646..b242e970cc6 100644
--- a/config/settings.rb
+++ b/config/settings.rb
@@ -204,5 +204,11 @@ class Settings < Settingslogic
"#{minute} #{hour} * * #{day_of_week}"
end
+
+ # Route all jobs to 'default' queue. This setting is meant for self-managed instances use to keep things simple.
+ # See https://gitlab.com/gitlab-com/gl-infra/scalability/-/issues/1491
+ def build_sidekiq_routing_rules(rules)
+ rules.nil? || rules&.empty? ? [['*', 'default']] : rules
+ end
end
end
diff --git a/config/sidekiq_queues.yml b/config/sidekiq_queues.yml
index 61e27f9aeb8..4527efe5a1c 100644
--- a/config/sidekiq_queues.yml
+++ b/config/sidekiq_queues.yml
@@ -199,8 +199,12 @@
- 2
- - gitlab_subscriptions_notify_seats_exceeded
- 1
+- - gitlab_subscriptions_trials_apply_trial
+ - 1
- - google_cloud_create_cloudsql_instance
- 1
+- - google_cloud_fetch_google_ip_list
+ - 1
- - group_destroy
- 1
- - group_export
@@ -221,6 +225,8 @@
- 1
- - groups_update_statistics
- 1
+- - groups_update_two_factor_requirement_for_members
+ - 1
- - hashed_storage
- 1
- - import_issues_csv
@@ -247,6 +253,8 @@
- 1
- - integrations_irker
- 1
+- - integrations_slack_event
+ - 1
- - invalid_gpg_signature_update
- 2
- - issuable_export_csv
@@ -255,6 +263,8 @@
- 1
- - issuables_clear_groups_issue_counter
- 1
+- - issues_close
+ - 2
- - issues_placement
- 2
- - issues_rebalancing
@@ -289,6 +299,8 @@
- 1
- - merge_requests_execute_approval_hooks
- 1
+- - merge_requests_fetch_suggested_reviewers
+ - 1
- - merge_requests_handle_assignees_change
- 1
- - merge_requests_resolve_todos
@@ -333,6 +345,8 @@
- 1
- - object_storage
- 1
+- - onboarding_create_learn_gitlab
+ - 1
- - package_cleanup
- 1
- - package_repositories
diff --git a/config/weak_password_digests.yml b/config/weak_password_digests.yml
new file mode 100644
index 00000000000..0ae8e4d8f1b
--- /dev/null
+++ b/config/weak_password_digests.yml
@@ -0,0 +1,4550 @@
+# This list defines a set of weak passwords which users cannot choose
+# when they set or change their password.
+#
+# Weak password sets are derived from dictionary words and previous
+# data breaches. These sets can contain words and phrases that
+# some may find offensive. For this reason the plaintext password is
+# obfuscated and stored as a SHA256 base64 digest.
+#
+# Administrators can configure a minimum password length of 8 or longer.
+# This list includes the weakest 500 passwords per password length from
+# 8-15 with a final bucket of 500 weak passwords 16 characters or longer
+# for a total of 4500 weak passwords.
+#
+# To refresh this list:
+# ```ruby
+# pwds = Array.new(9) { Array.new }
+# HTTParty.get("https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt").split("\n").each do |weak_password|
+# next unless weak_password.length >= ApplicationSetting::DEFAULT_MINIMUM_PASSWORD_LENGTH
+# len = [weak_password.length-8, 8].min
+# next if pwds[len].include?(weak_password.downcase)
+# if pwds[len].length < 500
+# pwds[len] << weak_password.downcase
+# end
+# end
+# digests = pwds.flatten.collect { |pwd| Digest::SHA256.base64digest(pwd) }
+# File.write(path, digests.to_yaml)
+# ```
+#
+# MIT License
+#
+# Copyright (c) 2018 Daniel Miessler
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+---
+- XohImNooBHFR0OVvjcYpJ3NgPQ1qq73WKhHvch0VQtg=
+- 73l8gRjwLftklgfdXT+MdiMEjJwGPVMsyVxe16iYpk8=
+- oB7a2RwAq+e+W3K142v0zjxvJui84zQOujZWQoE6uLY=
+- Y4Lerx9dxueSt220pKe/K6RoiE4ACyXnko5iHif7I8s=
+- c80bFsT7gwYa0YoLKblkOmjUZAB1pGbcnlFoL4SoR/U=
+- BZoAGSWS1URLwMqtcgP5i1BjMuLPers11oTqm/fBjwg=
+- IDtwta6IOTIWG70L3tk1fnY+Y6/OmLFiML4z8LlMLMU=
+- nOjbkiqPSnq9hZre5wvYt6YzISZUh9pUz0vtamnrPhs=
+- qUGkxP0MAc3e9huL6WO/TB4rCBHAN84/GDX93272wiM=
+- 5K2TygesuNkIo6pB6SDqT0708m5/hs+CkcXbKJeApa4=
+- dPygMltf2zo0uttAolgc+9U0QYfo00MpUqWrwJKcEkY=
+- qpcwIVD86BFCXNhFNwKKWvvjfj8TYq1FpR1Gfhev3Jw=
+- AWIRSDBvyPt8K5XutcN+N1+Q21PPgxPqh8nDTAW34OU=
+- 7nmXbJOA1eM3/BwJXs6MjyL5HzBs7rFh+lH+zt4sS6E=
+- BOd7+Plcs+GjalnR6ThXxBGTDbZGtGwhigNS5DICPPI=
+- CcWH+ygsNCPwhn6xDDem/U46FXhl7797zP1RYh6ZQME=
+- 71EwYhTZpjYe4dW0UubSu3DcfruFv54Cw9R0f7V9a+w=
+- YV7X+xUEsMckopbXpp5sey+eosV8HYIGxa/fOS69/SU=
+- Ow/g00Lp+halxo27oz8uY8Ak9yqdTBzhAoVwEB1SKf8=
+- xUIsBSv717vZdk4EZ2iLYhk/7E+jKhsTryjRcI1YcOw=
+- hXOPj5p/GwS1MpxZDry55CWSXG0JhAicQ6Ai3k8ZwoE=
+- 0vEp3TBtHXpD/P4EfvDbsoJ19e1l9GNqKOLK43uB0JU=
+- quCgn/XJuSRiH4T+z/WYmEavkrImJLv8pQ6tuU1+Wus=
+- kX67M5ay/y4nt14/5CGx7cB7mY90NQRy86vFxmIKaNs=
+- TU8mNpFxmU86Rndu4tiElPuZVYAKW7YmHAFsS7nzC1Y=
+- CHdRg7Ds+di355EVIWeemvsLKHUIotEW8sx8d/vEUIg=
+- E6XCAuMg0L+bssbix884Cm995dOSUJ/uJguAnIk/8vk=
+- Na8l9aX9rGQB3UuvlJeUtZ24AWjWnIDn8s/YOZni/v8=
+- 8LE5JCtJfIpawzvxdq2J1XF2oERwjt5CYTmDzLl3mMM=
+- qxy3EvLcp1YQUWCAVQH01thlfZPUCxbu5Oy1/QSNJus=
+- cquZT6LrQmwFHvWcrWF3UL/gbXz2MRKF/3nBnDKv0jY=
+- xG2H8ftKXfbfhBAw/+MA6Cca90ti8lRcbBdZ0YkyZ10=
+- s9TNZBy7gSO34mmFTp/M3jo3IuiRodHpClF2izAA6v4=
+- JBP7NwmwWTnwTPLpL30Il/wllvmtC4qeqFXHv+uq6JI=
+- 4k35IAeMPdTn6NJELwDlyasqIxuzkY1lzFCQbknsrvQ=
+- "+THDCPxbYLQhwJlpkSg53/J3aVfZi40vkcVU7Y/ID3g="
+- OhINwVibsvDLAjso7HUyi+P8UzPvBwcoWzH0etJo39M=
+- YoYSuAPGR6fecPAwbGu8SJ2Ldeb/7xULcKFVOlp6u+s=
+- opRF/Zw8SDDcDJBSMOgNl2A7zwwSDOrov53QanFynYU=
+- 5dUD1FgiKcTJq+JQ5JZUdlyIXrSbtJ338YYbt5/HNG4=
+- 6c7nGrky/ehjM40Ivk3p3+OeoEm9r7NCzmWexUULaa4=
+- Yx/6ULWaAFF0Te4AoLkZTUSzV8yR/HWVYoqGfBM/IQI=
+- B6CjvReD3mMBb1UNocDkfIIl/qSw+gQP4FivYMLYWMc=
+- LUeVtaSwDrONGh25qQ/9jIui5Ae05R9CccHkghBksEs=
+- FxjCSxCuuAmeP8RJYKtpSat2omc1JFnyA+oQNr7DgsI=
+- cBAzriZBGQjzERTSkZD2DN2b8+cg4wP3k4gq9XY7aI8=
+- t/xuquG8fQcq8j/Q3bkbzbIcklIjGn0KapOASIPXGYs=
+- oXREVQ4sEnsC6hwZe8/6QiwhcTBA9T1cLKeSVBm8z38=
+- zhSE9QRB+ZOyEd43Kmlo48QkYEyYWCn5bzBQMjQ335k=
+- prcKilB0/BLtcNYdBf/6MKW+wSDtFAzwCbimMCMoNgs=
+- zQjExDFt8g2cMEUP53bc3kgQAp5kHN5SbFu//sH3cKM=
+- O4DTj3aGqLX45hrVYuwGmsFycy+02rlGQB8hpDhmmks=
+- TPDBASJ29GrzHkTS+7A6569W8DyZluuUUrmbPmJzaY4=
+- pwpZs5ga84W+ErKTIi8nhI+7sDh9BVBLAsfyAS0C5n8=
+- vNFkK8oWPaPJ0pA6vzZjp5/jKV3TGo5bEnBca9YmEds=
+- jumTjkuWClBUDxypKZ+sxaXzQtCEi0AsMi/RRZLkvDI=
+- go/rt2Ca/V5yjshD3y0R8LjNIWfUryrwLrNU+FA4UMI=
+- IUSlb3cobQy1ZIUBontauhv2YrlVQ1y9dWd5tci4PY8=
+- W+CIi74gh/li/uV0jZz1LjfkxqJK95Z1/34coKGxJzk=
+- jw4vduIrQ+KFUYmHfn3B4efZjCJsldskfNHVR5KDNKk=
+- MKmJr8gsCiETlXNZHeTl/zeZT30VBqms8rWZcAXCZJ8=
+- tzhG3VNZJ6yzn/yoXEX0EZfQOAsUd+NEigQbm5SiIrE=
+- UJTcrWGsqEra52CjpO9mvQAoShejkoYTLDtkHduth98=
+- EtRxON4MBh5w3QnMKSL2QrHgnnD5VuuNcjNA9Ha+CB8=
+- JpLUG6nymsncEklcPK/6R7cdXS+MX9iZyISm3meSLiw=
+- h0X4ZkCtLta4ov1CiEXfPaoc/Nup73TAz6pXys7DT1s=
+- T58QswTP6bKxH8sTh/aU4Y8I6jWMfp9WdDTTrWy9f8Q=
+- 6WBadACWcqM8XjOlomgIy30g+VGe/KJVUdt/q+V0AC4=
+- AYzD6LTDvlzJHwXrt0GuzHh+A660WkH8n3yBFN/19UI=
+- R+G6ZpowkVzat5J/tTnSG3UukTHOp0KCQrVy4gGMPUY=
+- rBOotTTfSijQ+7u2TP+Qm1sej63bTl6le7imQs6Zj2Y=
+- Q/95LXn3WJDTxRgXOXg4ib+e9Kk5fMjS/A6lQ85aMPc=
+- FCcr02HJmQYoyrTs8X8oEgsqQGVVYJkrGMekpcM3JBc=
+- N3l5EPR3/rmUMxIaq6rAa/dx6vnrpexTefqOaTs9MRc=
+- ejRbpeGJVYMfsfVDRDt4usWoI+641XR+j8ssVZGzExM=
+- cwVR9brUrwYE9mHn+Lguamw2TKGc4UAWYzPYbNyBTKY=
+- rR0KM9FHXinFd74j4p/fGeHfNmO3x+13JyvPMonxWV4=
+- UDDFvQAt6HE/712uvVl2IPXovOoxxgPczfzfUCpXzGA=
+- 0XEIdH6SJhP+Zr9bDsRQgB9RO5LpHXg48Lc5359oupg=
+- wKSUIUPocs0a4p/HWeBFJt4ukJrBcyc004VQopwuJRY=
+- iHmt3rGMaynouJlg8zECJHkvvgjpVaq8OVa9TynxvHI=
+- togj7e0LycfzMX1gGsJPasVjiVzujlor0spHWQb+JhU=
+- MSQzwoNJ9jxPOHlT/zNwRueUvqD5uev8sI6QBG3tnHY=
+- "+xK7blgCJXhzowHM3+1xQRVDpiiM1FPVpVJIIelwJy8="
+- "+V/J0lUxTe6+s+O+jHqSbKpOJBXGNyvvqo/W8Gm3xKM="
+- BqHYv3/CEN4j2VQKs1dErp2zEK+gr7q+lSkzPhdahQ8=
+- BU47MIcINw6gKdwuvRZGxJjVnXIDyeGkTPBITfmOWBo=
+- HEZzOclgoQernuX/Y7OACXl0Fslk+YiyJHEHc8w4eWo=
+- YnCAV/qMtFIC23ryM2IVaTTLwII3BX/PrI1MrWEPXI4=
+- 4KMuXPcJo2dUjKY67Cerh0o6a4yhXaMexJV6ErsGZlU=
+- i1kcwxPAdiF4DbqJ1OaYVmz/gsysJmdIOsL8zXNE4zA=
+- ZItKH9swBUbjWUUZW1FmZb+eRbaeM0cS418+oM+M150=
+- 3g3oKsajOAMATNxtdKipnNN5peBc2eiqFkxFbRsbYVg=
+- LmLI1gLOUcN91w891kpc7+l1ioiKfcHO6yf4KR22fnQ=
+- oIEaR7HimcgVKyRVy7U7aXYUiFPuNe9/b0Jyd5Jblrw=
+- "/S72r0GqVZ27SLaLixRwiFDvqhoaLwYa1tpndgFiiJc="
+- 44gHXaT6TpXam1YWYUX5aF0eSwjvx71eST2qL2cbScw=
+- WPh+Jl2X3hQQdtLncEWfUfILMhEhOaD33Ce314A0Zds=
+- gNcRQPdROUxHEr9G1rZav6AYSjVVPcLLG0FUb74q+ho=
+- Tcqw2CzLUD/qD296TWNECYHPJ1XZ+6VXM0iejICR/fU=
+- BcX27yG7Ar49ttBmxOgi4H73Wy+FJBMzp8ul3sdOLTM=
+- eeqTWBgYhGNxY/vWHAayIVD0KWNr3e2HvccAZ9sjlqQ=
+- tzlVMOTtVctqU3buhIH2A9GGec5MU7h7EUap7cEfzh4=
+- 8I9Eil56ncNhm7fBKfan1fxq8ALOoXrXHf3Bxo9NTg4=
+- 2TwJCiztHgBJMxPa9cF1Fx+wm2/1S22ahKapCXCcJic=
+- 0UpzEL31W4/+t7hGLR8eO8bHmn2AqQ5w6uTvNvIjhH8=
+- 75TUkrtI/TGT07r2uG9ZUPgEAlTy3acIj/QlcFhLAsM=
+- nacBdjdNmQSIXZrA8ml3Cmh0js/f9W27rnr3aNYU27Q=
+- 2S4GsyXSRCPdGHoBAZJBB6zos2c3mxLCuGCN34Q89DU=
+- 2G3G5gsGMuMPKnir6SLCOOkT3Vx092323JNfHsc6XfY=
+- HzzkBBWiCB+j7udfw5//jlbCInDRqXinJJtZLc69ILQ=
+- wdNcw0cf5QkgPWWz56U/yCM3rJrix5e4NmIfcG/jffg=
+- XS0863q+VSNEJ21H02qBdbeuslCpvwvwDoUM0j7PLkM=
+- 1N8uwlPclbNFW3exWGMCArFeXlCca9NBWSswGcYvv5A=
+- 4RGh732qhZckDtoK1IK6ma0JtPhMCTvegAY6I//yz94=
+- "/abPL5IPTh6SVvcBmq1t6+Ie8TNzFPqPDWo+uPSu9JQ="
+- lAnWiCb9uBlFt//EyIIeINphRkvitzi5EMg0vQbro5s=
+- gtMEK5QTeLyZS4wllvpp5DcL0stUAMTAQ8mW3Bl/2nw=
+- 5SY65+mMC24qCJAX7w0xTUxhP5N3pgJb1zyFLIwlv+A=
+- zqbghgVJb8+HGUb37o1fJr/jLu7I/f1hTRUtG9PmORw=
+- mNnVmpB1GcgPwI6boORQXxUsG7jb6UU44RrRn1zNv+A=
+- nG1AW7otskv70i/H/3Szm9nF6cbOZimcZRm+UX5u18Y=
+- TiBhPsOmNzL5hjC5Qp4WANR6CPBZSW05/9NT8MMDjzk=
+- 7yJmqlcwxxrEljbPq8h8twWiNx3Z06qoKVI1JE1VdN8=
+- y8RxymAJK75sYx8CvFc5my2j0a5JGlWhqpYKSy4Kx+g=
+- eQR5H5u0lqM1S/dWQeRf6zHogaAM68slCORb2UKm5DA=
+- AcAndtcpDpmcYK+EE5J98dOJaQqrjKwSUDBmz2LomfY=
+- 4+k7YL1yLO0loEH2Wv1OOW4rr+V+DD3gyLawqosFRQY=
+- 15mHBRolUqwYleBrl9EtjP5ZJIcvYdulnBVVK8yDL54=
+- 5pfFETzli3CLfB8x8EI8wCHQvzqs09Y4ZcU6X4F84ng=
+- uHDT44JwiNl4+8JgY5VUjfgKsAJ/v7+AajALe0+bvgE=
+- gU4q4DmDSNmof/kcA3Lct2GGui0lBLEjXI1TUL9S7do=
+- z9r7BFLVawPrYUbrkVKJVDFwnJY2O63dTiikc0J1DAo=
+- xzw6B7ZEsCYlGqZVMx7uA5S+pOe7HV8Bm/vL7rE+D4M=
+- 3VoTeIyAzxAD4jP4/91UFwUSF0LpIq7i0iFLqHe8NVE=
+- GWxWLLXnjoyxDGZGaGjKi0CtewKdjs74ULcXzr4FXrU=
+- fgcf2bAj7Y8YRYpzYToINPYiC9XMUDV7o0k8YECp6ow=
+- Lr2jl1ZykeZL6gV11UcV6kuozsJga/iy2pXfWN9nyo4=
+- 5JA0z0vJ6YXHCt9DRhdnkITjNUH3JsFWGCXtundV+4c=
+- RirsLKiIMkJINBaycyayJYua5NEWrvDFXDixgg0HNV4=
+- hUm5TNap0uW8eag5R3UzTQzwAw8amfYQ3Atvx0XaCTE=
+- uC5yO0YTIzdMHuwhHgZtx6HCEw/jbJBuS+xcxFEJwkg=
+- KPYVUVBRdnav3vXhJXQLBUym6ONlX8/E0pTs0kBlQ5I=
+- DES+n3lIlX2wc6HyTCZrB1CLEn7AMLMoJprQUtchOqc=
+- HbAEa4sZXuf0DjeWNIa69u13T4A+MgSdppVu6jq/Uyw=
+- ERSNj2rU1PJLGj6RsR9p2SWivQNAm7Tw9IbxPTEa6og=
+- sYa6H1M2bsJnRgsVQ5lrGwW5EtlRw2v2+2yg8UWSNVU=
+- 84pQdueThhLEpbe2Ada4rBeKMl0fC9A8fTYFdW4mzE0=
+- J8xplPwcAc5mWca93Km2nExqlBgGXmEsadEQs/exH4o=
+- qGGJNxM84aPD3Cj5zX4ef7Pe5NV8zHCMchoZUkZfXX8=
+- UUat4vPPenUXwWHf5HquBb70TKPLY7oxpwEmj0kokBg=
+- 5138ReaWV2ur3rztUzOBQstBOZTxgCR1KrHf4kZ2dRs=
+- sPYKBGni6iT9/EvbykaOVIGLxTh2R/l7Ks8Kbkssys8=
+- CkmS6kQrU+PcqGHerAmo1JhwBKhIMHmxKGEIDqSqG1I=
+- v7MBsmylWQxM10G+o3w21bTl+5LcSIDoyJRIv4KyuUw=
+- lJnmrv+y9ZmMzUj9VQoqdCVFdRh9cuX6DocH7aoRXeI=
+- hSmraJkBUmNXPfaD5Xqd4mnWDTj5pUkxUuH1PoxcJzA=
+- 9yN5Kc3ileoIEEuhZNuGwxTCbq77s/UBi5gyXf0U5zo=
+- BXugPWxEEEhj3HNh/kV4ll0YhzYPkKCJWILlimJI/IY=
+- "+huuuOb1wo8mmX9jzAi/CP8mMqWKV4uLlx3STVx9eGM="
+- Dh1ZMhp+sOO7lYQkV0fMc6nQPNnqLCTDmgcZEt+tszo=
+- vxXWzh1ef5zO38erJGjfTkwY21c0Rkk7GyTz0yU0uzQ=
+- Kgl4OxxHQpTRIrgrk7AcNwG8nk1ls65g2iEaQSEVKkM=
+- 0kJZvhNAfg0TIze9g5jumq/0OiScONC/IiQp8xHJyTk=
+- 5t6xCmVYZQrr9MTZX8R8cW37Lac1AYPBFAQcGa6b/NM=
+- EndTSM74Cesbe8tk8E8GhnIR7z6mtIpG46ap46nRtc0=
+- RLPFAD2TxfFiO/U+Jtq+QlPoq0pCMR43wzfon4+JEnQ=
+- J1G2b9Xeok2k7z8DptnT2xu1TAX5FlDdoFDGpRzukBk=
+- khF84R6YKUoiJwS9uqtoBU5H3lZ0CvBYvavX0hNax48=
+- yA9jAUxRcQbUac+7AgPxB3/qfYcrMEr/DQ3odYAsszo=
+- i9EGmCKdJmJ+sDmsIPRTe2LGaHzLKJJZC8ejaRZZ6JI=
+- PwjY+ttLZ/sFZiNWXtu8LHiAkdeP0ky8Rz/OMEPONHM=
+- D0iGg0JhSouA12Drke5Rrox3f4FAuvQKjEBgwq0s79Y=
+- M6fT2kdqMqwjez9gOhvmL60AKZ4NS1qNuNkTEE7exik=
+- RnQwkJH6TOBzohvuDE2ZRQXgoX4TYAugQ1pUAgijemw=
+- D/n5SPgMMSfDR3zsQobNuY6f/2opycPRKTRZh2q0V2c=
+- liMUt+8vcABzgMW2cA2u3GNDrGk46CQaRHE+chmTwKw=
+- AtMvKKiBtpZuf8/Vi2smGgzF9Q/aDkP2N8tvCHvfPtg=
+- "+L/3FWt51OprjXuFwxXHSp1/1uneuCnIKFhpNADLf0g="
+- jRZJhFOwPUQg2QNi1x5sNrsVZK7qU/NvIGdG58taUXU=
+- EdQEF5WWMdPSQg6M2HCYk8Ec16Tbc3r2Po1Wz6eGb4U=
+- ijiamrRHJgSCCrAW738K++trQk/B7ReUeaRWSHOaufM=
+- 9AX5XC9BAvmcK0GIY4lDyYuqNYy9/d+NuO6h482dqj8=
+- xsIwesAlq/7WgMtka8OMo8PW4CZioPL6oUPc/yImikk=
+- 39De4z8IL/a2DXbOBsRUSHFs/IwWNb8bC/2TkZDo3FE=
+- Xsdy86K1oYo8sRDc3d/NA+IDmYam6jX0DhiGDZa/wFA=
+- V/rIVy7qtfxZnHYMZZ9Yfnavml+jW1YHI3ct9fMwBL8=
+- eT2heuwm1T8I493P84wY4IAypjckaKSmcEo7qGpPwVU=
+- fc9Af6hKDgUZx5kRVMQUjeAkTXWJAgwNmELbnvrYIJQ=
+- QBywo8lXemrt4Tbm1dTJuHuVXvPJgBD/kTkKzQbUsqo=
+- 1QztQ1NZwfK6rfPJFJyin83WEOY5zWCCxSwtM7tKt0g=
+- MNDgNeSsoRSAhe0WN2nTiWmigfTQuU2nwx8vVkFrE7w=
+- NTednACeKQ1wK3Kr8/X5vbqn4Apj/De1F0/DglyAleM=
+- f1vP+g3oLpXKbbefuGnMZn498mmdbU7/gEAXt/VMN2w=
+- eqsGzZC276v7xYGSKkrS3fuiogoL5BIOtdDl5ypZ32Y=
+- yMeByWymKNFXkXHJTf3zpOFXWRyHvSPayGMwsgbYIwQ=
+- eCa5WLeccGJoAbiAQF61ERVX2tzrL+4rHtaaGO7Qxtw=
+- BX98sb4E5hShTf1YzgAB9G0qOh061oJ5kegGtZxkP0w=
+- "+nZvuEJ9H4/rywfz9fDq/36v5yxJmx98mJxZpxd66ZQ="
+- XpD31T+djMZiWtjxarwDHP8J13bHT/aNxpB61oD6/Uk=
+- SgekMQA0ECZoqGLy7H07p0FpN7L4XJCzglfPWxMJOww=
+- 4bYVryasnuk83dzqo8B9VBIw3Imkmu13KWewkA0HdGE=
+- 2BvFmn9I75jGSMaOYwnbNPD1F5eL9tln5qN7oxxT/80=
+- D0fdh83o+I4m3BkzJm0378MDqE3ARF3y//PK/nsToJE=
+- ckbSsrnOucu/Wwx2EvMli5eFb2vbV6edk1MI/L8IJw0=
+- HSVrXSC92L5X7R84gdfwa8ktoAk/A+704uYrQpXL5P4=
+- nFbMUbN0w7oYkhDVttS/V3kNNRyWxHwCGQ7PHkMGNas=
+- lUx6H4QJaZjm3xclRJdrD4NX2dVFwPX/oNfKg57oo4M=
+- BS2Z6o8xo3QbZyz3Bj1A7UwZNYGBrliq0LKarX88Syo=
+- HEQ8q7nboaSX0UzxEgM8VVxXWvd1q7hzhC5dvDFDS10=
+- tghuYTeo07XfQ5qEKihAhQcTYy/vGZ0K7bzDo26eDMw=
+- FX/FUSGrLFmFLDXXisqY2EAEfl2WaMQj5NOxRuFXeQE=
+- sNNRixq/tZGHgA3rVp3s3a5DT+heODoqCAIyWwSZTO0=
+- HPGKJDwlpWqZPIIH0RYanC3l80uVLTgnBLlNxeiIsQg=
+- KIejLgJlDUhYVHnQfYNxfZ3dulc3ELKtyPVG8+Vl8iw=
+- 0pmSf96i1afplKXI1P877oXFx3C+Gk9/o7m4G8IWvZA=
+- xYfe+b2vsyCeKNqdkPHwWwRWx6I7F9oWCHaWrQWe80E=
+- wOIaj/hRU96sgv5/CcDaGzvZCsCuIE541xSHU7Q2PAM=
+- McyWUPPdG8p/3NH0CkzRp396gvDTM74TL+w1AuydFRU=
+- LoRK1lHGuaacvo+Ie2p03TufxImq53dwHm4tDVI6DPs=
+- xcLlTenSgzqJYwbb4rq/DCoNcJHCXvuqCzE4rOykoFg=
+- NyaDNd1pMQRb3N+SYj/4GaZCRLU9DnRtQ4eXNJ1NpXg=
+- iatTCsREAAEWIaODBsYeUMb30GeTLzQbnk0A4PgnvWM=
+- vdZdzZ8jFJj6idrXmw5yY1NrkBJb1/KkkAxffiNVKhA=
+- kQN6GOw/hMfAceM49K1Qnh3S48K6mrobOS6BjpGrEy0=
+- AJ26flQEi1aivTclzfhSSCQsrBBF/9UBH8mbA+Gumjw=
+- lKLQCZYjPjk+VHo61J+oLv7qwSEKj98R3eNaI7czOsA=
+- cQw5BsqLVPhsngINmJeS0DuaDYkE17V7P1fnSrF0ZiU=
+- d2SId1UAc3ueEHLxs45QoclWHCpsz10+PKTsV1qGQZI=
+- QoVC5g2wkdj8UisDakKvjF5MvW3zpkO8HejxSMZfHhY=
+- K0pZ/sPnvMeOQIuQ+PZsbtQzc7V05CE825mYgXq8q2g=
+- HAnl15A1buyB0ZKGUpjhDP0TzJ8hkuA0BkJNEzJaLcE=
+- 1eNIGYQcTBHJ6DgUaw8Zs++KScTu/4ZDlrwtLwBLc6Y=
+- QLG7tURfwCGjEjFTefRjMoSFHhTR24P7BzD1iHLWAzs=
+- BCLULGibfoBG26LXBC6FX20h4ERkurFo/SY/WxD4k+0=
+- Ihs3/NtS0PfDm70L4hHbDhwAyl++zVeIeARjAmxrlks=
+- m/UBxXIW24AGmg3gC9iKgVgNSKZdttXHXlMQG0SdDR8=
+- 9MFKEEBbH9L3esd1GCf7xxIhH2Q6TlV/oUnzzbZLLD8=
+- 1Y2kHg9VFVdMMEXVogR/iLEny53hzLveK/V/I/mH1pw=
+- fyd0si8s4dAQD9VSYY3O3WWIrU6gFmWdnF4R2LcXKNs=
+- O0ddcmSkCz7BOYuovXmvvU9yrHA0TlDWDOzG5Irydlc=
+- hsErpnN9CHPDg0RfAdtMbGkVee/AEQ3UU3vDS39ePm0=
+- bC2QjUcm5wdFemj4YyuzXOqmC8wMCfTahnFcjg9+Glk=
+- GMy6GG2HV8IMvwXXqYssZPnxbrZOpKZGWbvFybezp/4=
+- YJYOZcd6oR2u1dYsYuNLUyaXX00p8Qk0hMxaPM8byuw=
+- Faz9x1/biIUUhyOM2EQsXsyODDGGjOn1Kk4jYbqJny8=
+- z5wcuJWEv4xBdqN8LJVKjcVgd9O6Ze5EAR5iq3xjzi0=
+- w0n4z7uIS0c10FTuFK1tWrI7DS+vpwgtDxz5v9q2c0I=
+- dFJvFsmE35sFeUmxm888fNEFBFPV0Qaac251P91N9Ec=
+- gJk/BUvy/dNwjaxYAFAS1RHPM19WB6PFC3F9+TyxdPY=
+- rJ/OSaxiY606tkkbzHeo9khbDhrIKJwN26LORQ5A10g=
+- pXYsvisJwBcAomukpjNcAwiOhxXWzTVPu5M8p/DYRpg=
+- Rkl+uhMMLxtiaULV5FJXvbBC2IcbtHha6TtRVenAoTc=
+- o1d7gDohajnBfZRUHWBUu+cv0R2ogy57KNkSd6JYgEg=
+- Gi0+PiJrjHLcy5IMWy9O9/zXxKWKnibETX0MqPZc3TI=
+- uGpwjrl4n9vU27qzhI2GWR9dpw9CDvYOObQFx327OT8=
+- 2b4ngOdoqNyGI4YiK3OaueS2iL49bbqnHGGJ6yfkJrc=
+- BvodNGAFWp1J65DAHkjWFtbJ8bGsgBElPw1Lp+HDDTM=
+- OgIlBjvqETJxtYV1hPduondZ3BTNObRHIFZAS80KJo4=
+- dPHD4qNm0qoIqU9+XW7b8yT1G3H+Cv9l7CwGzpdWioA=
+- m9ZCzfTNR1fwJ3CdZt8HeeNf4P5bqjnzACFAPKENSp8=
+- 01okfgdJGSDdfAz5o9Vxn2tTiRYCldmhY9/XsXHBzoY=
+- WbJhgjI1B6Xh4Gu8TkN3JbytADueTgWTzisQecVRmqM=
+- waHkqhA3uuFYbY0f0BtHLh0jaITp4ioEp5Mupqvq8I4=
+- zxqoId2rr6ahYhLro4BfvP+SxvyYHUOWfh/Khlf4Vxw=
+- 7uXLZgGADP/9G9f/YaBqLlImcQLD0YeJKguG7NQ0fr4=
+- r7afaFgtEeYFjlpP0V1uvIpnbtDOezLZjw1Q+FVAPa4=
+- twWaeskHzVll6/JU7CFtHRy1jrAgUWLUx+vQYsyJOls=
+- utYidNNFg6PGhl7tjo+9NH64mOmReD0suGIeDmXJMNw=
+- lWuvAkCSj1rHV2SBv7JJJuh4Sy6FujN+FWmmI4yRXhY=
+- a/vXCdX9wGGKtepxkT1VJGSx+tQ7L8NM8l6W89KpBNw=
+- "/MOiP8cjLMicfLDyPYd0/vtz19wqsi5qG2uLICtNzJE="
+- xtTE4yS8jptTLr9Mrq5aGza0OJoETNtZrKPo7KZIPz0=
+- saJNJyvWcIeaxHxujXOj9ZWUIs20iDZfSbRVp7V4ugE=
+- 1MNjAl+5W4hWO3Ksn5kUul4Etm1uazlZG5D//dl6X3U=
+- Xy/SsefvsA/D++MVrSi2laZ9KPPRzsAYLCgCS5U5Jzs=
+- S/vffr7iV/8GWLBNto/so3x7aO8/QZtDfv70PT9dhLY=
+- bSBYBuGdulMGoJ325bcgVzfzAb+vFQhuICAPNW65zO8=
+- invidvj6YgOQpuXpSYI/zwFWul3AQnd+a22Va60cdQg=
+- DD0S/ZOeepI4UxAPaLyfGEStr4RciAkcqhVzNsx82HQ=
+- 7LBwXINDuo3KV8IxfcI7quXwpvym6ja5aqaY7W241RU=
+- "+ojeAkNk2/zCeM4y/nlWrHwtBYU19+yejgF7jjt3+AU="
+- 5kf/5hM2FvCOniTLyu31DbqeFcFoUP0sDLeb1IcKpso=
+- 8hrf0ZmDcI04VZI5qP2ID7n5G4ZNB/56gLRHBopdCWA=
+- Wl7fM2pjXK/vqR98KB5Kg1coMTCMnkLy3+DVzmj7lZ4=
+- 1qOJFnjgW/hv7v+utIfwDqOUxlnK6fsVYRxMpQodOMU=
+- oOl/aF4qTm36Iy3xzU/fwvRgn0L1GXmK7DGFdAm18Ps=
+- Wcmuh8drSFEVnAlCVNuuvzLoB2krKdYl4Lk1H9Rr43s=
+- "/ymOTE+XXKolEU1SQWcCfdRydfS/fkFPzoe5k60S0Fg="
+- bMHv3wndNQF65j9ThYPC1L6O0VaamdLAvOiuavP9Wzk=
+- ZjazGBHuC79ZPRFSbOtlUmf+ltjapKFkkpZkQmlSw0g=
+- pOzvqfYFcbR+adVuIrKm+qvNKbdG42T062VanH+SeiQ=
+- 8aWDs/W+tNKbl41RwVPOfUeKvU9gQFNleVuAPP0/V1w=
+- KCdLOzNaIAFMDPvrk9YNdsee/gV6iRY4zq5yCbELBZg=
+- 2i2o5xyCsYquwOnc+BerCUgai1UGEGbwEbPjgYh4j2U=
+- WVSZ+IuwM9Dg2j4gtul1a3RYq2wixA+8OURk7PlhDyY=
+- "+c3gvqyCaOQw6xiXQiXYjbZJXEuzHB0/bddAe99clEM="
+- kHZUibS4KJNhJ4zwo07mP7gLidlQCSfuHCtD73i8JC0=
+- oLgUPFZQsVzKHN21bfRPetsi9/oxdBNOWqXvG25zZtM=
+- ThgSPg8GY1s8q3piDs9Lvv84Wi80zs2AjdIy+0ew5lU=
+- s0Fh3+ne1c4KtoCvV4FSRgflxI/teoumdjFBM13A2C4=
+- UiznBX/QUjrc1mctsku2cdCdH/ovHnyXwT5saK5vyxM=
+- IY03PCh1+siFrtNc1g0A/r/wu/YdKKeZw56BViOmGPw=
+- iwDvO6kjVKJ8TzVUSdFQUZGkDdgVU6w+B3+rH1tJAeQ=
+- ez91hIAIDVai0JIDiXukfLt7/c9MVWz/mcPDU3nQv6Y=
+- knTUnCe3WDpgoGQguCAHfjjGrXhfbfVLZn1CqppbMlw=
+- SgozmwxtBVOJd1KoQRWtyBx1gS4XQ+slGSWOUAD3Des=
+- eTfIkV+mtTBAe8ePPqfi3opvBrysAgUTvxQfPupmG0Q=
+- TkxW5KFfifBcL0xyYT2ioYyWZdTw1qzOFkFesG+b53Y=
+- 7gh0Fwt/bzK4wqyVc8Qo01tXUnCma3V8LAGF0r0JcY0=
+- GQaxsUwZa9aTUPlfSZJ46RoG9XmU5QFcv4YGeZ2gK18=
+- MTweyio5QcI9vNXzgE3e0Ax+kJdG1W4GWtdtCCACy1M=
+- GMMT43q8Dz5jMCq0BRMDA+Y3mpYcKw2uD/alcNSDPZM=
+- S2PDRecG0q37CtPldLO9sjB9Xp55sSIFO2CMnchkYvo=
+- BzB3hANf3Fyy4APLPZBaR4LQNIWLakaZvybJgEo3jK4=
+- B2qJwjF5zt/GEXH+QA7PAft2uaSKaPuC3QzWiNaE2QA=
+- GMxPCmYkESLIaBniiTWiddnL7Vxyq7i8jl22tlvONvk=
+- PJ/az2IFR6Djqq/G0ZM4xNQWsVa6MEl0ftJFFb8cHbs=
+- AASLpdc3s8cRfUzEZXtMd5WSTgLKSsdJrVtpmmJKalA=
+- i8QDQ7GHGupprm4rDB9BRePZo0ime880czP7Wmx7Am8=
+- GSwzyqw9ie1kf23FRBkWHCu/S1fRK7jFRuQdZEhZdXE=
+- RatblZGl9JPMviiZg9zVE9PxrQHfOubGbVcb6eCql/A=
+- 5Wa+Iolr4VH2ZKehWU0utH94XKLagmI+sh3GEYJDElQ=
+- 4rxRIkDkua6zxpXz2fKThfuHt1n6MUFCHV0pjD/R0bc=
+- WMlyL9P5PDAJeWOgFXwdcIi9S6Pn8vHeiNXqr+t9NVI=
+- libHREcXqreju91Qm8r6NadJHpR41CGzjlOaYh9pXt0=
+- wSnbi+iQS0CsIcnPXZ9cDiTvRV0denu/1wSfxtydJCk=
+- aCa1+y4/ZFNHwuUqN5+Tc3pgF4ku7feCWkyRcY5o25g=
+- "+QLe9IVcpl7dSZgxZxhqfZ6eozhgeO9ZzpKXDSkbK44="
+- 94mSyv02GheSmsFO64Elvm2yVNTEy0+5wun4SQNvaF8=
+- U1nuwTdj8dXEnuOWc5lE5bxMoRitaBoHYvfaeegl7dY=
+- "+dLBBq8o775fgyKCLe+qZQ6ArH4zWI81pfgLzJc4/5U="
+- PApXm70a10TVvHktEgoqpJ3YiEs/19QjoDx3SMeFQ4g=
+- VW+ctJiTImTdpKGuGz3jcuATQxZsVQHvYZrE8GjlZ9M=
+- s8S0B1CpchLomB5KxJTR7HcFPx6vTgk0wna3T8T4fEg=
+- D/NSr9256h5dnhB1aUxPWRQGuj7IdjTUqn81WX4cEGk=
+- 6uXX1Bj6QY1Cpm5F64sLeFgOQ6Ub9ZPrWlVezS/79FA=
+- g93OQoeXobkoD+u/q8I5lxw2rr588xevnXhfcE0nwYg=
+- zYQepcKHbj8ttru6dgtI1o8YBDA5Vr52tNcwFVv9FmU=
+- "+Vm+D+Yo6siKR+vcGEX9F0eOBiJUR+56xjatuokIsMg="
+- Mw/FEo30rgakhTJopxx4gPKKrOKCgGvjt9vTsko5ayo=
+- HhA/3rFszD5BMmmlk4IKE1PC9c4ergQoSq/QwTOpMu8=
+- yD4lvWqgtPXJ4xBcnBax0L6DfzGgaSRrSBHD6OBZohM=
+- DAjA0iOvf0PL81Q7SjVZzQzAs3iTw4ovyDGeIE6AwsI=
+- 6ubXfibVP4tQquIsDDFQgpPkq+UFbm20bRPWgemID0I=
+- OpvowwiqAz28xFRJ8VvyisJSPrDEmlrOpOUE2L6Ebhw=
+- zjnMeTczFFh2vF7mrySIHVuo3BTKvEiVyp/0xM1vNFQ=
+- DJV+nwmiREqIaHN79CsW9A1ONTO1fcMaYRJMLNG64xs=
+- "/m00aM9cdNjsKpW0Dy4FM4w3pCAvj61pLStkqc+bRoo="
+- lgo4rOdaL+lCaqXUi1NsxtsYogI7m91pjlYvwwI1haY=
+- bhADZIA73vFRUIZybsLMcfUrZVZIcY+vKECUmkrMXxs=
+- UnopsfaI+MAfVzAYkDxzCIuMp6yD4kNlfQuw2upMjNo=
+- wmZeo+ElaMN7dA/6IXUbGXqr8KFkp8pWKQa9fAlN3jQ=
+- QLuznm5obfL6RJpzQo2ecEwi1ujlv1aMxtXy85LzgSY=
+- KGfzBmYfKH6201zkAyL80Tma4zdBoLUWg3pDpJ+ySJU=
+- uRE2KGtQxb5JvT/b0AZIqYre1iOJTr2d69qpGthEylw=
+- Dtvf+sG3Fpw9nScC3CgKoweWlB0sVtnPj0ns2i+P9iM=
+- r/YwG8MzXGyVLZ3LhypfMbAg4B2huQS4VYRjYuAMQ8c=
+- HjCxSoABxzk7zSax1uCTpVtSfFftvEZ2zo8wd6d3328=
+- rZWNCjG4XO40RcKDEFYZynWhI84MyAnoyHF8cNawpGs=
+- nkVvJoB8k+xaSV79gsGTit2qEVqzf2JNavXnzSEuzjo=
+- rIKQkHrf/jZbE+aY8FlA7/6OrOuIiRHuX/KHmTJeciw=
+- hHWJ4T0jdiY9ZXEOTyMCl89XX2Muci7I4cVOhukUc4E=
+- T7XKO5gPe8PsenE0XE4CWqVcYE6PrKQHYUymSOijUzE=
+- jdWeQSlOU+4NcV6pt8Hte2qO77COZ02xqElvtf0PCm0=
+- R+8gIHSJt3X6TNysPDlLUXqyLXRgI3rj3xrA6JY2mdY=
+- geWx5sMODpIRio64oAXUqAARYtshfZpQU5NDTNF4sCQ=
+- XvLDlNW2PkF1zTMcdMhFPD42649H9tZIOX/2wTFP1wU=
+- dZNp++jj4sWN+L8MIQnFIQqdJ9pMKf0oktxtrHIjxTg=
+- vt6msdoP2BzyPKcfHFpaly9nlndrFYEwOd/tAlJoFbE=
+- V+6JLp8MaEDHbZ2WvQDEL3Qa9/O6/8RWnU6zlrp+bSs=
+- sCYg2SXIupAQm0OWvsn+LhCKD9tmLHFI3Y45cku+Ce4=
+- r7R+AFMRU+k4CFieQ9AsEfY5jFvId/eSTOvKghHI3Rg=
+- Rejz2UfPdM6poE5xcsdoqZs8Q4YrSLwvTa00jGOjpAk=
+- J6luOLDRPJGlgwXzaXke3DzK24i5eb/9sBcT6I41d1c=
+- moacH/Q5elsdkaIPO3Dv0y1qUs5667u4vbY6Nu/x89Q=
+- l6IvoEi6A5x7C6V0thyvRUbu4isASbLfDwsms85+cO4=
+- NEl/4A64ZbEbysf4dlFDyRTTw+tq4ZzSoWunoQB5xaA=
+- QC7tEU8KWD+3K852GWU5yaJWiMyIQMf6RNVPgRrF6jI=
+- rHqJwoIZSqb9Ge4JFjJeLlp8ywY1BWoty8sIS8H3H9g=
+- CgXXsnzHorHKcErcvR1uOrLBns4ABYbwO87qvyRUfkM=
+- CvZTGRCapFLdM1kKRwEFznsZRPP9zSCcef1ClCs798E=
+- AlCvgpTSisiDOKYfQFEFOMkdEmzO7fdJWWAm8n7aQ4o=
+- ispPNndPgqZ8UHy5yWZ5SC4sx2fy04UCJpVXpWawkvs=
+- ZSf/0Fd9RZt/TrGiNIF65W7Z3LAUtCCRx4kiAAsqtNY=
+- wgx2nbnh0RGIQcn0U4ANA9rS2YVOK6WJtOD7bA9C+IY=
+- fvRS9TjNI6aRqN1rJKyGvqGJZb9rLKcHPDiq68hNRWE=
+- SjSEs78vyw/19xfxiQSr0p0ii8EwmBFN9osu2aRiZQM=
+- HjsAkS5mh1u9AnJmVXlDYJq/lXWHyO4gJXi5UH733tA=
+- mPwHNntt8+fNBD7jyzfD5LaclEFuW0VJTp06TxweO7s=
+- tsSsQSrIgiNVI53XF8EcpbBzc+TbVQ0EI8G2rs7vhJM=
+- KT3g5qxP/BQcxHNhnzW1UUcWqu51nv0Cft/SQSwH/FE=
+- h/6l4YwyY7T+yPpsKeBn9gY8c3Jo+u1GR6Od/sX76Ak=
+- c1cB8oXLklP8/5ZJoPegnyfltZZwMN7YurpMVzFoNjY=
+- k9sXCHMvh7xFobfUqNV1LJnzVC+mafqKZ7l8LTUqCCA=
+- XFFqjKkJxyjpjGqSFTYzTgQhpgtD+H8lmoPFbH+NRlw=
+- nwY4/WD+7bwaXc7YI0BA1wfAhL113dLvuRVNvCIIlLs=
+- "/nyk6gqHFSIr9fTWxtG7li3cEYnwcsbH4tIGiLEIPoE="
+- YeJL5uqEDTcGQ8S7g5+9dz/LeS27139+fCaBK0MfYm4=
+- 3ebol0tGoe3c1+o7u4mTQvSMrYlrRydab4BgYuxcoUw=
+- FKQFNM5FvPSgclVNQtF1j7Qs+VThUWk90jgXAdk04SY=
+- W5AHGuomGluDgDXq2qUGasNHps/xtSgFPFf4WMZQiic=
+- 6I6WFQwc7ZEs+aUU6uOB/fFzJwxDk071xTyeKmkXXpI=
+- zTb1jB6e519ydxP6keCAm4Y9/G3yBI48Ogkxc79Ct2U=
+- HyVPqgTP+g0KjHX4UU8Ah0KcN8w1FvertpxmYNsuZAc=
+- ISP2zam46LfY/dQvq6peI8gszgJwIB+nSsQI3VKH3mo=
+- 7AIgBD4I7h+8oYr4K9NXqhYeNH/dfY6cAzSWyImb2gw=
+- NQQ0utBop6S+hVvDYtekrW5jHn9fDZFqKgRSBwBm0xc=
+- l+/tvBZquz36+xxAqYcwQ3pZVVtwYi1q7kQlaJAi4Ec=
+- 3qfNJ5MZpD33WbewdDPnWwU/i9wvdZ4yioMx0Hys1Ao=
+- Sfqq3kk76La2Fk7mf35NEBgSpd2pcNbKaT3ai4z4Lks=
+- jZsuZERQGgIkydgujRGydXeIDBetdQ081yxeOgc9etM=
+- GyTgwX6VLkx8rsW/qz2dgsQZQ9uzDCP9MjS0d8JFFgI=
+- 8c0pmlPFFnC5Jv+3gO4TgLlFEFspIHFzIXlpXi6192s=
+- rDFgsKkzrAPX+yabr4RD5lk2qkMiiB4wxgRD192hUtU=
+- kfBgqa1LOesijZU3KS+rGdJS+u0GwWnQ/ctKkFYPVnY=
+- dLaMgTgReytYNkyOsSWlVQffPABu+KIsInNChByNsoo=
+- BVSl3wLuEvGuNqUcqu80ox3rlFiki2KdpVSisyJGb0o=
+- DkgeJmfDri8XosgQfGeyKywpayxVAHDIQFDcZEqSyuU=
+- "//xWOwACEwqVAvnons6uhVgpHkEA3ZXN9ehsN9IhSuI="
+- zuxnSnbGOeM0yEk+kdQkQ8BpaQvsnPzdSct9bw93JQA=
+- XyiUS2MqJtbEqwzXsIXAkVxR5ZJbAJ0Lb1WLlqWKMaE=
+- nubA+svo0G452of/Q786TOUQr/IBVRjoQZT832uuF88=
+- KIawt0i37dt+X48eB/GZlwYRVs0DMgzIsmV2lX40bxk=
+- KDElNr8GvJhQy9yMGAPH65McxPp4jLfL97rYKAHT72c=
+- 5fqURTqSUBflFLLZGsi4ATCZBZwyJOBygXJxBKk5CNs=
+- rhpeQdfge+fvySdaPMAlol4cqlyH4r5DTcFnKcFaEiQ=
+- cQSC6qKA5rfp7ZiVgZdobqUncjcdI3QInmd/936uGOs=
+- gB0LPu9eyAiEf7I16sr+dJyYvmKt4WbevMxHEkrwpKs=
+- 3AuDAmI0o/WgdFYoWv8HCBrYMtWm6mCI+8H/oIQySt8=
+- DIjMhqc6p8QFj/fA4x1vEFwMo1ddWmjgYOldnISmB6k=
+- PnlDSO01EsRXrMAD6bUcIOZOqsvecOhrrrI3HzUn5yw=
+- q5XJ/TZ27CdByXExcrhyLoypXNW5lADD4TnswS7+2J0=
+- OluJkOYP+nThVGHXVH4PYqqU0Z3k495oe9MRdvi20Xs=
+- mh4FwP4NC3IceXOyl5zRBS+l4GddfGvgumeXkD7ZcmA=
+- n8Jszm4osxE+55AC5jaH9iV47ICF+A0tTW8uTtxh0Uo=
+- HBNSYC6ZXkQOG9IA1x88R9kP68wY/jIH+1fMOSDGR+w=
+- ZvYtGAfTgho4ZfJXO2nHS+Az8TQSQKyGH+/G1DC/9eA=
+- QARk6embsD8M2XMoktJUesZQc8XTJmfB1eZjmJW2vWo=
+- yRvZwojAp8XKG7gHy9XYnFqzN2SGLrRoCEF3M9oq+HM=
+- qhBZbDxtYPGEd+CAls8Evf0c5fx0p+eIws4Koad9dV0=
+- zLZA3colwfQ9P1YeUuZwfGo5B3yuEYVzZ7KIhzvlfQY=
+- PhKXrLifdZsfc2XHdJwezLMmTuw0QrTUwX9eJIgDp+8=
+- i9OuLfq0s9nRz8m2DK7720zYMowqnqAmMLXRv+XJb4k=
+- 7310iYwipL8L5DfTCYe8lFMQ3N8d20imvOCF83azAq4=
+- 6oQfu7CfhmmtvvhR58CCV803rjDEtdpI+6sRjPTQeIw=
+- ALj54imo7j5D6Zn1gBE+pUWNlVA1LrO5NmeCFxttXqU=
+- sN0mgygAIGLSp29XRsquBZBlIEgryp2fALPnQKD4O0c=
+- vvm8X7dyw5+zNXaOhbsYhHATCmX+HukkY4JxJ7TQZw8=
+- bug9C4qX539KYXHRkmgiECdD6jBdiWVST2JoR1CDNJ0=
+- hlK2uOGx+RKAyU/AI7zztQ6MKxflFVmc4gI337EeMl8=
+- TRGBiuzmaBdSZK9mjJVmQI4TBiYGQsfho2USxGxlMQ8=
+- XleeAVgRUkjnGQ6MPwG0adKP+DkdVC0Xn0w+q8LKQgA=
+- KBZRRTZNjcW6O+MKNM/7o2bKpZbSXraAq+mqwQkDZjE=
+- EYBBKvQ9eGBKc/FNWn74PT06dCUc6Pt7IyBDpRH78WE=
+- 51Om08Dp0itGKyRmX8m17je1RFTiGZQ8c0F76RvAdGU=
+- 2wRPGbwBNxhShjRczx8GfS2c4cjvs4NJskeWloUNtp8=
+- d4zHAmP0cn3opLGgtE8QrM165FaQmUeeLLJwKhhuK9M=
+- agraJ2Bsd0lb2PINuFxzuLEynw8Oq/xzOSQkDOjgdOc=
+- V4HsqA7hZqD/jB/BEvYbKB3l0uxiT/da9S/zAKbjfQg=
+- wfNf/Z5SaN7FNBPj0tiLMGeI9blbdHgS8qR5JB90K/k=
+- NTkPVFPoELYkgCjGPlhgzksuxkAdOEmn9PhxwNGDwis=
+- jGc6AQhXghPrQ2jtj503mbOlyQBTxTsuU8W6S2AXTPY=
+- 9tidPftDRWmvGp4U82TJX2BAMdRYq3lb7IzPj7KQbA8=
+- e4rV0kILHH1BtngxOnRg99PsBokPvqTe1wjCzwng7zw=
+- gd2jQ8TOiU6cwDjtN94qeKq6vo9OYH4uDjOFHoAwjWs=
+- AQvfeaoK/+0axaciGuwo1CXOUnMmVTRUsbf4nBqwdZY=
+- bWQlSBEND03RSwRrboqnQSp0m3xhpn8h+W2apYq7cws=
+- p0TZPyxuiDCnC0NBE+zeva9Wi6jAVXxjvQkUUodgrlM=
+- OVIG8LTbUVE4wWvVaGWcuRhQoEdK32HtCNdIpn8lIus=
+- ULzNsSnwFMZd/JexnlWL1buHBXZIgsrcq+ZPzsGbBvM=
+- 80KpNZMLkQKxiRW4LpZKnn7gUnP89s2BxecZADIQmME=
+- H9YgLJuzNcZQQFdfiStLkmllFymt8IA2vxG8RpTZQh0=
+- Kg5YR2/SaFm4d8pvkl2nz0KVnH+z4FgEWVCb7bfZUqs=
+- w5AG2uPSzDSxTHua53gS9v+peJKwxTkyrqnNvrsBTHU=
+- I3Mg1QlxfcPw1r3NXo3I+I+P2UsGxyjBqvlBGO00rzg=
+- TdP2ZuTQefkX7rADQEEWHunqMi0grv24308oUfrYNdo=
+- HKxNEB7mlv16cImnqXwekUlAlTbhcPk+y6CNEQ0S3P4=
+- Yd0p8v0piifzhcQ+rXTL5WVTIjhbWEOPt4B47crxhD0=
+- "+taN4DZs3Lu6BAiR/WlFKczgoVT05VvcjTNMTfK1c1w="
+- JlznZzBQOkSDMTU9ZWLD0gkmNqnaRIwkbWNmq9Gb3bc=
+- dz8phztuMdCnNk8HT8SLegBOr7HM+EaIPpnea+74raA=
+- MEb3Uc3G8uu52sR96pENjsa7uAYLOxc5mq2ayW6sjdE=
+- N1W0F7D5NwJqwbhno5fW3sgN/UY8IywtqvHel0uT2oI=
+- yztWOaBD9Vt4Pj+PxYovYlLbibOQonxnuhmbaol9DjA=
+- sPvdtBI8uyNE+jzW14WI/20kkUBZuyF1qsqgxArjbGg=
+- 4nPbIdGe6Vf5DDYVx6xnP9zyd1XxoKPqFNEyTqpvEWA=
+- wfrSp1grp20J7U4GGI0rKJMZMW8S9CM5Az4lK6vTxaI=
+- JAJDCMeWLB+7GwuPSB4WfsMCFdnFTRnejK10ouh7xww=
+- srXfJfgnVSqhsC/mwHLeHLAdWuZuGkusn3rIu5CBzRk=
+- cr7EvY9tkaiBjrLsZTnB19m0yVF4ZjxrNG0nyEJRJKM=
+- UQBbS/P2sjjxs9RXxsqyfCE7leGxIlcGNytuHQuhzfU=
+- 2QcMGsKR0/nWvdgpLn8NFIJ8b8af4fQaOCznPUQDvz8=
+- v5tZUcVQ9RnAikUVKC9dxp4KnlUVLV0xZXBDa5+hAdw=
+- 1RgB5IhRt2WXteV+uJwUTTeMvRz4J5KUGILaVkAmrYs=
+- CVUp3MiQIA9XCjVZpDJildkd6MR0T7EHARQu5SLYLqg=
+- 9bH2RPfBKLZSLy9JswBVdlXF8tto7xEHKcneiLfFwKk=
+- KKtPia19SlDPMLvvfVEh+BqVosIkkXlYDVEpToZF/vw=
+- bLl9mdSWkpdX6A1bdY5PfERvcJcBVPVHNoebWjF67QA=
+- 804lMAAR6OPgzmG0Lt8f2kF9PX8Ylsyp7HJEJ6Vq1E0=
+- FeKw08M4keuw8e9gnsQZQgwg4yDOlMZfvIwzEkSOsiU=
+- ipvPHlHoEtCvhGWo28yfdBBkvwrzs9COawJGQ3wZ9/s=
+- ky88G1YlfOhTmsJp16q0JVDaz4gY0HXwvfGZBWKq4+8=
+- gNQcVKjObSauC91QnbaxhxQMrjm0t3Emmg0AawYg4tI=
+- CxTVAaWURCoBxoWVQbyz6BZNGD0yk3uFGDVEL2nVyU4=
+- 2qrW5WBOjhe9nxCNkeJq/mKB2sj9oAkQQKem172bQ7U=
+- XIBWXbbynaCwGqElIsN7MvEhy+R6hh738AbLIpIt/6E=
+- noYZQa2L9by2SeX96S1xJSggCiFgGMJDc3FJjmq3aD0=
+- rUlBOGwJCsVBQtOLOQ0xMHXe/02HOhyC46JVQM9hESc=
+- mXBiZmZWCjJGXUzhDSjzIzNlr4M+Fe7VmITZR3hiw3k=
+- VgBxX0K/UcQNwzDXUM2Zb1j+rU3epWRmznSY0XgBs6U=
+- M2ZlsFHbrC5ZsykRwg9Rmh1Pp11lQHIH0uSk0J52InU=
+- EwVIWnEmCP3E0v0XgMcpGfL1TPKIUlgUv/cSBzf23a0=
+- nyoI/eQWzvIViUMkH+4d2PPMoJKv3e8dU66CMY4F9j4=
+- nkYz2HRrWaauwcgvL3xJ/D5JrHC2s4A/lnUt/4xIGvI=
+- pbgQoxkKOQM95NggUv329Ml2VRbWt+6wxJat+KPT78k=
+- 214Y+umoJGDWDTHrMAEdORw9B6HB8SuuDySVtrfk9O0=
+- hAgV85wV18y+O1oqM5LrkilPYpza0ATYNUpefrZY81Y=
+- yTRMXxB5986bAH5gSCn36ORRbpEy4Jjr1Y4sx/Kl/Uw=
+- 8WX8stKhPhV+dz2YtSVTMRTEDEMeoO1C5IhRSwfkcsA=
+- hf18iJ9xzxBTdVlc3cBrnTj8Viy2nFT4wWWqdR2Bs9k=
+- ufGVxcx+9q+tv7xCiSrUfTskxryUu1EMRWSpChTot5k=
+- u0Ifo124hc5Qew71w/I8sJxi6zePrjZBwWW99MAnKUk=
+- n78mG2LB18ANtzr7gd2X/fILNELjbjOMuTWbhWoDvcg=
+- ui0IMOZerbNxcIrzWScD1oNTtVZgkwAhEd98NPicn/A=
+- "/P0HXL42fBWNXPqjH6BmVqPmj2JjiNlu6Bs13aQxC1g="
+- 0rgMsWn6508zS79c0p/6A3QCefA7/40G5OSc35sHpOQ=
+- sH4UVS0IQVmdVJOWVn84s2sT1+/+aJ5S5Dcn06rFSQw=
+- pyus1RR9BCOwxVhGvWctQJtMTTvL9Q/d4dIAUls2MD8=
+- tU8IYjrkA59VvOy6SWEDf7RRPSupyysGZ8XblwrJSRE=
+- 5kdwilIGB0PrHcljcyz+3B6h2zoXhdo/ucUN05VP1wg=
+- H4wXl4nZQlky7/rjfrJmNQRbhWnKOT9S2qjQrXQ9MCE=
+- AzBjiDdtr/LnPSife0en9399Gdt0ifyNHThV+4rP+aU=
+- 0gWvsub33EowPjXdmOGzOdi11QCBYWP34mcobveuObw=
+- 31nCV3hdcHBqQR5w4SOv8oRNbVfrGfOgca/I4Bn18tg=
+- 2lUR0rqoPC51OFLx8vuhEAPtDEbJaCDHWJskOo3beHo=
+- sA7yYq+uVmtR90ASSmsS2YKiz/G78qtWMstUjpjab+s=
+- "+xEaNR39dirjam7uNFmRY/YRAqQPscrOhNmTLRoP5jY="
+- JFvJfsjZ1wwKjCxgSOav6lOWXwgKhum/G0Ewvzt69DI=
+- VW5gCdo+L8d6rOIo/jX0emgMj/nC7O3RJJDliDiFKfU=
+- KKh1mrapE9FvRcQrAJE7F1gw89sGeW1oexyqP+Syed4=
+- mZkRbsbhBS665CmvxuI8UHmLA2EF8h7KWxVNHPs5W0E=
+- 95RhML3zTfgXfZTro08U6iz/3K4T9cecNdo+uk9NyzY=
+- RsdZ6HGTX4zWPKyaJprSsEXtUYrADxn3lHHIveVSPZE=
+- XmCNe+ynUTyrGOajluqJTyxUZjedzB44iMwj1oWupgA=
+- xqFCfXEZzTwEnU/gjMAvEFjRUpH7poqZSBbqIJr3Pw4=
+- c0I8dwfELuYrQwROPkF9FPCd3JL9q2M1YqEe1Q/36h4=
+- TdaOKrOjCXMxjqkD4Iiz00gGVe9CNhCf5HJywcFYKIA=
+- l0SNh65h22FB6uOytdVg6n/D8RQ+yBPNaPlAq+RGFgI=
+- 8b5jVLQYKKC4qhIBCUoVzACt0qUtW95bWCoVdv39+9Q=
+- yAGUzvulO0o40G4y9VXhx0UDhVCZJ0Sodv++SV9Pk+E=
+- od9t/7Xkhp4vdQxBISGWmbn210jRa3EYSU0ffc8VheU=
+- JsmOw7RrCk971eRkJo33SgynryTy8exs/cJ7USKlmPo=
+- gpRUfp/pNn8pGiJZhRPYl5KNGg7rcTyitB8xl3GSxdE=
+- Lje/S9kUSyq8AwQvboeJ0IS+B47ajnTCTz9UG1EdjC0=
+- GlN2rXJ9ZSE6efMQhUHPlQEpaaDTBk8Qi13W5/jBm4k=
+- SiteGCLKEViFhuuRIyCBfzzwwRzV7Ik354qCCVBfToQ=
+- 3mieBVJlEQDBhSQcaHdl+PoWZQ64FDZG7i1soSt1khs=
+- JJ0fnLhGQQxAfGVpqii6esn4zW2VaFumMhpif6CZfbU=
+- 1ttndtLGn3hV5nETOyKhZwothwzsYN3VgjHAi6lID2Q=
+- xYXx3suYb3/xm40D3ro0arigSUzB5Naa2bissN++q28=
+- Ol2Xl8a5MTtOee7YyNNp6U6r43AM+GTGJeUQ67oC9bc=
+- QDpsVWuX1WNchPs+XW4LoSvB4icS7RmLBxSxHFFCw5Q=
+- dJms7UOGmyf1BXAeTtxzfwzDRq3RJA1LqG+/olHg/DU=
+- "//VJRe+gtANO8Pwu3v3Gyg0gwhjFAeGrw5/13U217vY="
+- kQKI2Onp3fWk+exCZOUHCmy+v79niLeiQ1wOcJGoZfQ=
+- rY+chJDASwEztzZbR6ttm9gah1+G6N+yyQlzNZX/9qI=
+- Zr7+7fLXQqKP9EYG8FxYMnHrt0PRj900wO/YMff4uew=
+- xjDLGV9SyIOjd7PB1eQD31dDvTMIjjgSqlB9EpCdvRA=
+- Cg7Lt6bqhRGBhhnc0qGAo++7VtoGhNAVoavr6plv+dM=
+- WZRdol0lIQRbS8hNt9X9RLLFUR/nzCR6jOWnm810ocI=
+- LoHw/5gnHQndwkai0jjZltW/OunSSpXdxoXFjj7t07E=
+- p58ujmDUG25tM3kUhLcC/VcYxhx5k+7BCS31xsRs2os=
+- 7W5EpCzJOCqVEptvAMWtHkvKwqM6sxh+88BOL2REtnw=
+- MEmh+DJ+AhXqkkueTgTNSw/xgAx0pTbZuB09jO2ZlNM=
+- B/8cpXXgKAlcKUuPJ76RU/KEVj22NsaT+8ULoog5VTQ=
+- TALDaODlDnnPQh4iSa6h6MYsokyAXWG/WN9f+TSJwNA=
+- 2KkosgQ9t340C1I1R78Wy0qkg/BkX+CikO0fIKq3Ylc=
+- nYJSmQXMzDeMW5PK2qDleGnU2geRbIKCpOmKIsj2o5w=
+- 2l2ISIQPhwXW4UzfHiUYJF/nxkXsl2GOEWsO7D07jx4=
+- zUwzt9czmPnFFzigaNYoJZS9PoRg5jZ8rdH9CWzIdI4=
+- i112SdRDM046mx3YBwTUg422V4rOHT1yzQVB3Sie4Gk=
+- NfgsBNbU5Obe7wByCnsbeolsjHZ8iqbZMeKw3yPH9Is=
+- 8Lg0nbjfp2WzoB1AXHzsILwzx6NZrc1GJRfzPqzsErs=
+- BKXLJghYGrlKkRlYXHiovUenLtj3o4WJNQaDrrO78NM=
+- k8awng/CkqmaLWDYYvSEtmyHCfeP06MM6uxkIqIZeCQ=
+- dzYUVvR5gvIQVY/OPpsqO6rlNfmJ80fKtugEg7pfnLA=
+- pVsBU/2/wPtWBeS6bLFGQunxfwCP64aFP7wnrSuf3wk=
+- OnkpMq8ocS56RISIbPmSmesjbrWCDQSB17Y2NR/y85c=
+- 3mZwvZbMt/lM7Av4pv6tXUaXlZ9m5xF1A8Qd2iJSyzw=
+- 4nFe4A+KtpXT4qlCExgPbzIUSho4Vf3Q+qEOlnsDOfQ=
+- RabDyG86Gm7Keh4ltN43qk1T5iz1V1K3v7lBvRG6JAA=
+- 2MSG81MAQurUww1M9grHf99oP9FXlglkCLGDlBwzV0Y=
+- B2EZsv3ZbXawSjQw4JyL+dPP4d/JkXwA5meZTC9apMs=
+- rc6YkYo3xqFYvr441hU4yNwsY2YiOQ6CdON0xRNRltg=
+- enX4tX/WbZe6/PUoqu+66NmRBVsxynZuUzLUrHbLEbU=
+- C9iy4Zkx/gZatbxQpeCID4n0zIErtrMaaMTnI892M/c=
+- KWj2C0xo/RvgAnB5sjBtJKB+yYVhKYR4AiD18puD6yA=
+- 8OLnUHkRcbA5G2guw1g1vWpcP3yNHQGRRR7He0118kA=
+- er4M2RnVcnyDpRHKkLEP76zm10eVPdXncuHsbU5vQTo=
+- P8m2iUWdc4+MiKOkiqnjNUIBa3pAUuABqqU2/KdIE8s=
+- yFVUNLnEMxH/mfn/fbsNVbfFOdri04+ow9i8rXOpK0g=
+- oiklucOTrWz7Pew5lwAOBuOKDt4LrTUWA9qmkicT36U=
+- YPgOrgm1PRJXUQMFGhGLm8J1BLvjrd83nlI4YNRiLd0=
+- SS8/ONa108qFlRTiUOJbplk1vN2fT0DBJLdz/lNv7n0=
+- Adtxq4BI90pLksJrp3KFreBoesGSdY6Bha1ScB9knvI=
+- 5xiy3T4Kwfkgjv3/6YAk50BuKcUcMbz6mmsp0ZUbGfQ=
+- CbbSGXsu6Ejn4Rrl1hopSExA4LePo/SS8frcFqjK6wQ=
+- "+WkkjWIbze1KNYKhw7F6ce7f76kSDDbuO9GVdDjNVbk="
+- KnAY3nkjE+ceyjw26kzv0lN+8rYfu96eLz4NUbTy9gA=
+- 0tr6Lm69xrOfy3oqhyd9Shwh3zyq7rYHI6aJAuyIs/E=
+- DR6kwlbNUKKnzL/SKz2ZWfb9ML2EC5/zx8Ze5OId8G0=
+- CDNU9kwZqvBk+QJwQmUXispwVINnsT8am3Xd4CIFJXE=
+- 5q4zVgibgBVeJCSq40zlpdwx7bq8G+DbC70jqnKue/Y=
+- adoG44w8v4AWgtuBImoYR/U2xjLC+7LiuiHsJWIG99w=
+- "/0efnYkQBcU17EMT03R6CV/03uMZmciBIn1fdOCdhdA="
+- ebuNKbrZyVNLWw0VT+vwzsXvvbnRWCG7ZnWvJjagYdI=
+- bPYV1byqx3g1Ko8fM2DSPwLzTsGC4lmJf9bOSF14cNQ=
+- "/h8iU39Q2BtjcaDHuRl7c/lZU3PSjRpUxVqQI/3g9Ag="
+- OnOVQkZGDd7uXM9ZRnbP1AyYbcSHgQSxgbIP8Lj/WKE=
+- 9b5LYuHEX2FRskfcrlE9qKkZBpQlNfDiwjK/fv5HUL0=
+- nki61uMcEoJYJXvZl+rMpmbw2uIEkCe1RepIoM9D7XE=
+- SEx4cgMaAbrI+TR+xjuagt8c49GRoQfudzdWwYWvjWA=
+- Nk9fBUVhruWyiSpDhjHa8wJhYgtyNKEmAJFDU7HdiHI=
+- qQEP0hqTxoezxMUGMTmTtaKt6HtxnQl5KxIKJ7hS90k=
+- qf0HhWJCCidraQLKPYv1g8A2bjivcuI76ZsWA1p2s5o=
+- jzmIhsMmtfjweyCsJQyH3mcj4GJHRGUnP+FSTyuQkvo=
+- unhSJX1Z6F/7f9SUQ5t3kZ2tctcwBqAr7V/CbpSA59Y=
+- YLQLeEanr+lzzgifGQaM/8U+QP4ozQdvk3xkT2EnqtY=
+- mve8lwlgkMXPPUw6j5Q5XxUVSDy7UKjO5Y+KyGHvdno=
+- bfpe2ZdhEzcUSgx591lc6uceM0+XSHfAMUVR66KBKo0=
+- W8uA0Ggda15CZ0sbIkMYgpJm3wbFigRH1RrGMR+vrnA=
+- i75AKd8P3qdj2WrIOuZ1R4kt9WPh0T+Ek7qsRJ14AEA=
+- hmfD7Go+m8JbK4RhyJYsj3iEWMyyRnZEmohKf5t6lYA=
+- Rs/SqrKdJLkDNQHtorV6fu6crDXebYhVhLXxMN8uqnc=
+- QvOMEld7oyjyOsS0ZXKg/5HiSwAGn22mDOgAWOUaARc=
+- 9AYWv69MHgYx0gYzDq0ZuGFUbQQAs/m+BYnbrcmFrY4=
+- jGJ1n1vgNi2zS+CJpBGDGuKhJX94bDlput9K9zJ7p00=
+- sP72IXJ/+Cp9M02fHwR9xmLtDifgWqj9Gu/Rmw//MSw=
+- yb5QNg8HgjbyiA7EG1WCnjS+UNvb0Ara+ZI4NEXd3xw=
+- PzNxx1nNTTm12axXH93hAHVoOR1iGw95n95w8PJFpuE=
+- lw6vDU3JvsPXQTT6PWnm+AJcA++CqD/Vx3guP+cAdec=
+- n878AIDYlOg8p9NgzlzNnq0sXYqAoQ+fqWmFEKq6hlo=
+- OadZXFnlqPVUw44G4Thf2a6BWq9WchLg3beU4aUpLkA=
+- MRPJ5F/wuOGfBuRD3qo2HO2wjUILDmNgYhnNWIH1+ic=
+- G60B5uPEHqcuG6jyY6FhWGL8bZFMpZWkSn7+FNC4AxA=
+- osqx3spYyDUxaDEPUgw7t+RUZuZyLXcb7RkSYHe1hwM=
+- NDYlG9/T9i3FNRqvGjTMY2hpZwtcNGnNsaBjSsSxKrE=
+- AgDwMxXWvxnwBlUHzrYWc6DJ86+vt+g5QRHvqD0GExs=
+- QrkQtK8w+QHYaShqmKkGMWtbsIke3dT152MK2o85INw=
+- iExhU3KrUuSXiJ8o8yRRhfRUrluhJ9KJvcDSs4Wgy6M=
+- r6LRJNdWEvgxNbYdaVuDm4GbrAt04yS9f19mPiuhmPg=
+- qj0VrROSZ+VqjJTNWwrzs7eK2StlONVk16iRNs/Frrs=
+- ekfUbjCl7+dJGb+1V8Y0cXYyjoMsQA9grc28GPaOhqg=
+- 5vRYB0ZorV2PVdQUu+K5CPu0aQnqNrGchUgEW77rFk4=
+- Raj2r0EjDH0yOeY5RxeytjArUZPYpE+RtU1HtEKyigk=
+- TPjFdtSRSioqWM8jDGPQqEuRwby23sDJU3dVC3aWWEQ=
+- vdYMT+g62dfIEWs40lzsl4TnPLd8hRzJyBDYCThQnV8=
+- HIi1JGAZyco4WsqcZ/ZjFEhiiFnhVj0lXA8cUTcG2lA=
+- H3OgGOmm4guttneOxXKoRqyB7Cu85CF7P4gGDqYO2ws=
+- St/5TrPRC7NGkRADEJ/1Ga+soZfvtIG5q3UFvneQKbI=
+- P7MS+MT47KwKBYaptEPtFAaXr5JW8yCGJaNwx31HyS0=
+- oTj0NXs6J2f941a96q8Rakf/rPO03ZgN4D/CL5El9TQ=
+- cx5upvAEIBNagCG/dQQ+6ZjcpATIbUiY7GqjUgAxkWA=
+- 6opxvJZu6+C8TIObtmX2qCMDnBJaeIx19Yh45zcpxUw=
+- afW0P6Sn7GfMHgqsJMxznxJz2+FXnW9kOe14QFoVMm0=
+- EXYEEGxR8TfdDEN97Geg7ISsszb9NwrgbwCweFtsZW4=
+- vDNvIMTpeEPB7jY8vIPufNBcybHlmu74uaIjbBVaRzQ=
+- qsZ2sCyZvwC27EOw/caSs6liNWjZ5XUflYpCwBe4Kjg=
+- N5gZ0XMqozFp98q4sRJdCSb1CRUGF6P3B9TpLST+LFQ=
+- I9Z6xG5qoNg/dGMD95zprlFFDtPM71bYrQy4tKSVjSA=
+- ozUXgMTgcv9b0wpotKR/dsX3KBzCo0djJO5L/TBWl3A=
+- czlyUVmJPFfD+T/PdspxXK43US3wIygZtjo14Iy4KqE=
+- eBVN9fXkJBsDtd01KmIoau2zl74Q8cZpYe0TyzNuQik=
+- od05XBnzoff/Dmv+PuYCjkNztBCFptp3arAqi68Smrs=
+- hKtYAwlnrqxRlvc62BjrJWp8dCp2r3eigy5sZ6oJzcI=
+- "/N2zupGri0/zighCTzQ/f0Zek6weYZJuLPKDudSTzgk="
+- c7Xq6QGFOsZ6A8o6lt51he2gHEP8i53lPUyqO0R1nyE=
+- 5EINk8D4jL76OwfFkiWmcMmLWf75rhfovGSruO+XQuM=
+- IFBM392q0LWQylPEhh7dT19c+cNIw4KVvS2/DpG8pMM=
+- 6/SdzYNvgQCEwU4PLatNwXaLvcWYBIG/IB/Pdncd/3o=
+- t67Uj1sygouVvIzSFHtuBtZgHAKRgeiMdw9DjTlxMkQ=
+- L3LuiYXOtPbJ7Czx8a584Ju/yjvqsCeKOHI17QFORbk=
+- vmYTxgtfN2mU1MscjBevvoXc+7Ga50wxwe/5ZeKJI/8=
+- yQK+6b6/adRpgcKQEMI25HFMH+tLrryeZ9Ga3GDh7BM=
+- R9IGWkVQWZPodU1F1P5gx+s/smtEoaGOlGZaZagFPWs=
+- QEk2QudohJhTDEmSmGLsqc6yDUaoT/LHa9OfRhOI7Hg=
+- MlC0pv12MeTenT9vTvJygRNAH0ja/xoIojcW/oLi2Xw=
+- RI1nMe6Y6o1cl81lG7S8PzkM2FsIxCtzFreyfZlUbV8=
+- eg0a+LsvOVcniyOxToaL9vQMwgPJXSGcQM7a01UoZ20=
+- FTurqh6fqjh+dpm6GrhoIK7Ns66H85+AKg6e+hRuZ9s=
+- 6RjfP1M5IjTe7M7cvxG+bMfvDbJ4Aa+/T0EMIqGmtuE=
+- JY8mTiyj8jdupUKqSRugcbJLwEQn9FYQ17Vtg+nzR+Q=
+- 7gQijFxtiwg/bOk/t9fb5IfgSpaynRP2J7AfmtU906Q=
+- gZIQq55wjV3dqIH4RJnQmFRv+J5YxV0aeV4aTJ3QsrA=
+- KyIZcFFBmi0CkkGJneMlZRu2/KhflBTXZZH8gVoiD0w=
+- J+IHZT+8CaDE76dnHj5u0C7HTd4JkEhcIh3U8fK70Mo=
+- wRIzYHCaUOWBBvdvnb5NY9bpqJKA+e0YUf0OGTgPmRA=
+- WUsRWdat897ihms0QV+tTkHWIBnw+S0fa1kPEiEPLGo=
+- cV4AAWjfU5ZshM9R9rvXzDlL8ce3XlbTexffOxpuPdM=
+- z8LUc3TEvlzFPI1OGlcRS140EZMHj26YXItJHJMPBYY=
+- SrbP+sO3kk3FIoazvPBMh/Az+c2sZvuXgy7P2Gux+T0=
+- xHDE9khTateH9Uy7BimIuwSVzo9Ns8hkMViL6IrEpsQ=
+- swStwzcZ1s3bltbE8apGYo2SdUe0m3DJgcf+qVPgYAo=
+- HdkwjfcuIaRuhEO1XK0Wa6Isa4jqMIsTyO/PuGz9GNk=
+- WV6F70BexBYaQbSAtxJClfdQyOzFWCK7UB+BWCI7oOg=
+- 5JhCPWiReLfueb+en2Ewi5vEfOeKFvj8UX5Xk6500RY=
+- AQRTUI11OzS8olUjAsIZf0HJOA5E57owIH6COM58JKg=
+- kyPdZ4bry/OshzV8x4uhq/2mz15VzQEJe5DUoobKyQ4=
+- 3kA32D9T5xVQCpzGubHD2owONjz6r2fjdWaJzcQoS28=
+- o5GGKKjyghroq+e74dgXJB3yy5PczUz66DstjGQQfEM=
+- 8cYSexb/Qiv6CbmDNKvkTF+IMn4qIYWi/gDOJs3PAHU=
+- fBZ7IrrS95MPgPQuU1XGWS0VtF2Ci0E5SCzNrALt5VI=
+- Tc8yskn4e4km8OJ5gUmyeXIIrmn0gua/X3o6yn7Y8gU=
+- oduZaAgKYU1pTm4/vrwyp9yCYx4ZtFhwsvuTC3+kX9s=
+- 2eIYrIcNeIwrdhcBwVrSvvnEhJkmljq+uiABHSU4kw4=
+- mfeMskLcLIUqdfYQDxj7i6tL/yRmHJWgA+j8XwZVuwc=
+- wrhIyacCXWHov0ysWDlsmVH1xgd/0TFAhg0G/8qnY6Y=
+- ZeO1hKvR2iu4v+8OjqyrI/hSOZ7F3MNKukGULgPGlVY=
+- YxFKHiwEBY70e/TKxXfQJlejNij3Ni/dUlWnXyOL6uA=
+- FdfBqg0bBNwR6SGJrIk96hZ5et/+QX5PEW/NeOLQbko=
+- Qg4I+sDPLHzdwotetMIPxSR2zBtyDwWetvVHVWs+dEg=
+- I8uwbQoJgHbA6f9dYzj+xmTaIF8CDEGQV9PuAJhcDl4=
+- KE//O9JUtIzKBai/xPrWngXK0NCGUToDSmahGIKeb6Q=
+- XLhJXZDcZeoND1yofNVsl+aYrNND5FD1d1/PioV1wsk=
+- fqqWhBfF2955MhqQnXhpI2fDwhYIMntJERbjnLro7zs=
+- IFVW8UIiA4rYrHqjV6t/cJZ2NFpBqiU97gh6C309S7o=
+- HgS9QpVk7i7kGIOj3TDhWUuYSQu9MpbA+uW5grSGF4E=
+- Lxg6TmRJOvPzd/dF7aUCNjzT5+9uTSZtREdY3gqF/Mg=
+- HyCtFyESd+uwzWJAR/fFnu86QkblWPfY1iMpkgvtr3c=
+- N+gGiuLE4J6IOHsR1VOygkBlYbL6v8f+XWjpcMTEHhI=
+- qP0QpCHwv9P4wlNg9HtoCRE4gYdrDzwa6qxIADnRr94=
+- QBM8VM1yDPd6F3+B1Ya2nudDfl37XnpLe1AuNpupnsY=
+- uHxSK78FN5flwBSxShG9x/FEbuLxYYPYbOPsELAucyE=
+- BQ+ZPqIyLUtpQPhWCiU6EXCf3Fqwj9mUvOsJaEbqFkU=
+- iE9Fiq/4s9OkgK5/p4Umuoo8a7f653xhZ0lqHwv2I+0=
+- 2ozHkJBVqWln+O7MsNtQvTMIgpoU+u4KyaGxxmegyFw=
+- AIkOkSLOG9PfxvzarkHKRqirMFDQfH0V+m8ZtBZMdZw=
+- fIxgoZ+gtt8nsqoM9q+dhNvgN7LZIHBIHXKk9xs24kw=
+- nErqr/nm17XT+v5lChXVBQDU9x/4D0oiDpmY3rjWzQo=
+- rAxw5Cke4DlorSQwlV/xlWinSaldePvqRSBsf9fwlaw=
+- 8ff6SLYy4p+r+L/4dyB22+G+1WD5JBRrfY8ERwNRRgE=
+- HVYgAHA0bY3XpuoCXNnQDSBIxCx9cLEpT12Ipf1MY9Q=
+- uqL88D5XubQxsjK7Q3vbh4wW0OBucmd99VGvBBUurjY=
+- PoGSz6F9j2YQ43z5f7i2y4a8G4LdYpFt57GXvPWq1v8=
+- 4JRGEUWvr3bJfpan2VQsC0+e7RWNpzOMKahAD6bUqz0=
+- tPvlcUTfiO7mmDj+5ZLf5/wlByLLzbIXzInmcpX9gHM=
+- 8SC7VpjVIMVpG21gOgC/1mLRO/F3oEVx+dEMB0XfoqU=
+- tmUMtafjCMEuYXoF4xooN+iL9R0f5mFMuJYSdDL+JXw=
+- jOlPyYHIPKWGFs2ILykllig2XQeaKFpaaKZIxeYcVPY=
+- 8EE8npbjxzPuFNv6GH965SwplxVF6JltptBhj3HN1Us=
+- nrfuf1UdLwrGhJgb0fHi+ko3WQGZY2dT7+YU1Nsw6OE=
+- "/C3/asPkylL+zsqcvBkSMhe1ciWe6bg1V/qAQTgfeZ8="
+- Qx6HbRSL37Dkd9nz2QqhHvciBQinHBEomP8BFA7Zl3c=
+- UzNqZ2xkwTllU7K3yS84EmdognyTtk2RQgacEO2npyE=
+- e+iOEibGUvBHehpxORQlYSy9lKXWPOOREDkzrPdsA94=
+- s0Vj4uvrdxcIugZIyThTg/YcwR6Gr2B2hIQzBZwUst8=
+- 1ZiQ4L8Qh9Fv4NWITl/iLTrOWyzkVIKykJwfhGBErlw=
+- m+E/ZrprtxRqRo6jdNtGfm+RovqbwVeLh/hSB4vdQ04=
+- nNz7vgGDsvGFXuL3NU+yqNF1sTOyJwUqCVMCtFWb9SU=
+- fGauNHCYrI7VvdgpPv3HcWdf/cVff6/q+yiqZN/oTnc=
+- HaBnK9Ny8YHXn9U5Gq7aENJW6/2V3bCaubUeUq/72/w=
+- syrba1TIcnBt6AVdFj+e8HFr4xPHC57GHqQGKDTja1Y=
+- ERVs0iSlxz09/oP2xblF5oGn/zhPD5UdZC+F8Km1U1A=
+- ag3AGwkFH9HfJh1B9bF8f94aZMG+KlHAAvk7aetIBh0=
+- OLukIYTJ1qpRsTXm4+Z/oxrrsk0ohUXkohMJ4ilYe2k=
+- 391aDD5wHDNTvHjkJ/BPyyxAugt7VGcW448s6Okpy7M=
+- "/ML0BHRngGVD4hl8Mqc3qnRciJ8WKITLus7TwrS9SKE="
+- 4spq7FJVj8wEMRmDutA+OMpeeZwjnSAq56T1iv+KaXA=
+- q0XoR0JpsCb2aNSYYLNoUBIuGKUNXqOPP+/a4IJhhlw=
+- Jbd9JLZxHNxHJ+tanuKSqRbFHEFDQ75BQslPfGFOhP0=
+- 8qypO4DK5oEiHwRF+k4sroofn4+h4XQdljnKrSIvU30=
+- 1wiM00R1Cj8J0diCwDMvGNinLTyoZGAQZwBuQrIBixw=
+- 6X5nlcklJ+bexY5+pEjVVY4RTxW4aU6Id84ou88PAao=
+- Uu89jZBzTEta3KRpaqFMBqNFeV8s4mVdpNyoQtWJvlY=
+- 0sqoLNtaCjP0K4Egg8SkxRlYBfW+IFjNnorsmrZYm7o=
+- wgz5h5Zmp2UAuxNq89DPTRVoMGSz71va1c7Uygg5Jro=
+- i5L34brPyV94fz6C0+oU0lfN3IPaDuw9m2N3Odj9mNo=
+- PZzbKRVASlP2O9MaFYaF4e9ubpkCvEhroJe4l6voMCc=
+- oDwy/NNRy6LZc4YisIO+0CLvB3k72StZ+uoCB2U/Nx0=
+- QCaW+7rG6DrfxlSfCgEPvi6/AdgMiiVSQnJxd1spWMU=
+- 4V0SkkwOCQGMaZ0mG06L8JgOzWP92igQJ2SFCu5PiQo=
+- DYJmWbtplAeOwSEQRHTTVPqZSh2/qHUwY4PmMD9JrTE=
+- 3EtOID+d3c5Gh/HWaYm4OP4oGrS7S1M700/ZtXe/ETY=
+- UZB298Ts/EQol6wxaCBtjjjtaaRPKoGpGb08A3oJXhI=
+- bPXuCc6hsj5eosljEN6rorwx+3Ua7rNkuRHEhchq3rs=
+- f4L3KiDL4pS5nQ5pzPXtZL0SbOPRcxNcFrUj4CWeAqA=
+- 8/bHAxGZdopT3adOkBN8Tr+QuvP1g5QXpIb9Vy8CFmE=
+- b16QUZxlm+fp25l28O2IrYzjM9TqbDs7DT2jksxP5fU=
+- t5u4vRZwUJtP4T66on4i8yqpIxgUok4zKm9ujUEm5d8=
+- QD9FoJZmXSXyt7B+Z54LrSSuK82uvmsOmCEPaywI1ow=
+- OJ1GOJobPj7MZDvCv4c8CYmqE2sVS0kt1lwG0hwv4yA=
+- 5gYAYWhqwYR9aytV1mrARPOBNHHQRRuchv5R3wAyKgA=
+- iSfKE14MFFI99aEoAOJeQdPqCVlz8WlxOMW6M39Vq0k=
+- mJoJ61gL0YX1sZ45fZNxCfLdeZfWLCFym0+WKbrwm2M=
+- 814fOrFqBl951cO81wXWc5UMSDbXcbE5PJPMzsaifAw=
+- 3oJMlWxaQvdXhodh4tepdAm2cBSSNrFb7FsUXnNNoBg=
+- J564jKqDsgBWoVzAnGE0urDniPt0o2mPuiLevewtpVI=
+- q0BAbBRU9vfSfaQuUcGCCnV84mx9NAThrRa/mDpKEtw=
+- CrAmWEKhx9E4URMzSdJB4qglSla+8dR1Dqt7xiAVimU=
+- ssnDiMnr0jL/pSDSn5Dl7YpodZOWV8jZP4mde1ZRq2A=
+- 4SO+KI9rs23kALAodkel7Y8E45XcQ+5L6N4oXB0OWA4=
+- bgAHRvFVpE0VIN5FNMDFlgcNb4N3uiIzpNHWXliS1eY=
+- RzYLjF9YxboEyM6EhUU0LASQz6sjzp9Q4W5Asd8lTvg=
+- sfjhv2U8BF0Kv7SfVwhqbfLbujvNntJsPUdJumPQETk=
+- NvUJV/Xgtu4+9FVnTaNahmZ/MxQgncFRTFEP6V6ECDE=
+- 3D0uceBS1lO2eMGm70bmva9MOrccHJpxuXjw3qJqG1I=
+- QwMVCjaLF0QjgeC0Sq1rQP1FJB+tmPaGtSld0Doi/uA=
+- INGhQVhul8yXj0m/6OcnECz+wQD+eOHa7VW5Ha30Lpg=
+- P9E9qMjjg3UNIV+rFJk1AI6ywNpPBJcoXZfNr2+r28c=
+- 9AtTDjSixheCMuGFTs05U8ut20iMJKXxffd10LZ1Mlg=
+- rsDniCTeEgXPmDhHgJg8byt8A/im5QNqUI7OdvGzxac=
+- LFi4Oxxmgp/2BomRZEt5P2Np42W4f3kOrkpA7NlxgAA=
+- Y21c1QTO+rlOHgE3zVliGZVmi7gYZrHyZc18GKmFZOU=
+- jOt77hodmh3k7Htw400+ltEOq1kKmWTD4IK4GDs7u00=
+- 3gFS+VJ3bwn1N9MJ8fPw7HNpyN8SlwcelGlS95jIYGM=
+- Ktuakm8ioLScmJh8GI1qAsgUvODvw4KUiysLI3KVv4M=
+- GFzo/GYMVgfAmvtETYH5GDAKH8dzfXgOSmwO1YccbdY=
+- 5dzT+Apax2liibTzh2Zb4JGpyE95HrELtz5BcIT73yg=
+- 6GQhy4ykKHEIFLAEPzKkbRjXyuzBoEYgw03OMFcJHcc=
+- xVDC9KDU/YwWKT4KsJSyJgXMhPfne6nvQN9RbY3w+8Y=
+- shSSsV2FUA70nlrZkOyKUwwndyuaPRKXcP1sczJXwZs=
+- ecfuFWAryaCLzWJX3670ECF8juJHNThnMmAKPli+yJE=
+- 5IRDkp9X7Ey5ZdNYqCWEkVWygohzxO0pKf1xG8nwE0c=
+- atYEabYF6JfEBb5AO/GaTu7zg1XGxllltrxwKqNVJo8=
+- WnOyqVMjmPwjugk7fEGvUOxzt0uU8gWK6QnvQ94MxPY=
+- XmoJUVgoOstTbaV7kZVTh0rv7AsQ/62DIvl+GUv2bvU=
+- M/EKTR9km5K+t6iOXS8Yp45cFGvesS+n49ZfRROiYRc=
+- W0I4nvhBOa6GQ68qGzaQiaPnKYxH5ZDRiiAbh+vuUeg=
+- A98uX6a6Xc3UO6nOgLKVXb3dL5FBgsWLuIK0R0jQqwA=
+- 15wTs/fnXB9hviPuKnKMmsGAZeZL2yrLqOrR/+2v0Wg=
+- 1Y/I2vAOm8PihMhTJqhIbfKEIS18xpz1YuclS200qTE=
+- CyKYRAhFyVOmfUwqHo5s1DYW1hSYquS1eUYfLPG7zLM=
+- 0Qanirl0KhpSoV7I4Fp9yUtCbCcgHDGexo5mumM33KM=
+- 3loa30/tzOFTORXtxgF3VH8QV7YbcRn9Ew4fdChwX3M=
+- UeKkZyHRBNkUjYW2F4M+d0X9vWeVywtQKltuox0zN44=
+- kY8vFkxuYLTf8aXsHzDrSOLiR1kV/jhCfzpCR6AUEFU=
+- LFq97yoOrLSfURWZGpMx6PeMWhX5hkJoFf2UhrUjBig=
+- 1Cb4Ol3AlW8e1+qGL+KELN6UxyHmXw5W6ZMo43pWMSI=
+- "+kQTKyOOZ5WPsX0zpx0yUiGAUHmQnDp/W+0aA2Zs+DQ="
+- LdKHvDqESlVTpfYYBt2AmQSnN6INO8fDUIAwZFQP1jY=
+- zp/ri7UR4qwpP+7Gi2bxALF2er7KbqirKP5FBANxMAg=
+- KvWpooWEV5189QU+ig+v9457nh3opI7OamZPYlS9rds=
+- u5PP+IUdSazN9ptmWwM54c8V9WwDbrvqXJ1CT3mOJH0=
+- ltl+mEMcbfFS8NxNKJTGytlr3xEnRMGb907EOj/+kvI=
+- Bp/KAJiC4T4BxrBVnJsUpDN8RJX4P9cgll7IDwdwppk=
+- TpOUymW+mHNAt7cG8kwokLvTFQ2u+JYTXa54IPUZT1w=
+- hQYpXW5B1UphMJlHtnDpX7H81KbB7/d4y5hmAxCrwDQ=
+- tvbzacU/ZEqpsVd42/8qHwX8m3Y9gjqoCzJfzF+1zsE=
+- 57wvlzr7jfrwD637GVlnQRCL4Iq0oQfGp5nEKbaExko=
+- zpebV4A5TITbABGwWHR+Tc50Y+AxmSl/BlbzW/9Br0Q=
+- pnkeDRKZIyQkZv/YyT47uZWHkbJJ6ALJs7Piw6x8DvE=
+- DfNlyhdmlYSqifPKpLIlvcNg6tAMROZ3nfAe4qaLd3k=
+- KyGKPebpw0jDxILK7p7Xk7eWPFTTu+dXqLG6f2TN3go=
+- bTUKIVWs8MDNfcuqsMlYdSClnl2kZ5SNClaPSmHA96A=
+- BrTqswkt3Xmm9kQK7qlib2jq9ZUVeOvBBY3Xa5wL8gQ=
+- JMc3Qp4DIel4PTobG6lmkHqepwb+K6hDIlnbUW7yHss=
+- lIAAD355RUZ6PQP60pLDKVK5W5CISIidS93/BwjTAYg=
+- 4qUw4lHTZ1A00j9cX4f1TsMYKgiLp9EzUIJHlPjmt24=
+- 4e0/Gsiet2qR6tOqGEvYt7t0Jq8wvsGSPUFdIC2FIcA=
+- zIbYZeR6Ja9Lj9rSZ+KMMKYE9yjnPuItL7VbTnqSzpY=
+- eOCgYf1eJN/dyTOEzS08mrGz4/+y7iQ05PkJAT6IpAU=
+- r1iddY2cVE5ewOYgNLHhqwjS4d3M+4KwSbMDWG2Z8T8=
+- vwric29nuAJKov2jBikeh5SXpOdVv2KPUtnsaIAbsb8=
+- f/Jsp2Nv7N6VdXyIx5EXzVczNE3Ok1mUugaDvYrjBHE=
+- "/nkUgWGEjk1QUGoRnMYgd2cQIxfgDDTK5wZ6bM7heJk="
+- gGN5zekvlFEz2afGDIqYON1SWfDQlHAZyYflf5NUQ4M=
+- tkQW19YRUMvvaQhgT1vdLyuM/oRXvSycqBn2WURFfJk=
+- f7l4y7NXGhdTTlCx5tzIKquYJaj6p4dguWq8IVRljBM=
+- E6W+eag0rfeITjoITtjmCVF16BEmjBgjPr7llhotV9Y=
+- a+N5BbHbHJEV1aeSaTJwBUWUzTOOBCaMxhl+tsEFEdY=
+- OecmncyqfRBjZ8B95gD+IhN7QBYxY9QfMU8li4Bmj7Q=
+- T7sZKdTgh4zVUnnOI2nRPE9zmes22i+kQn6c3lYpx7Q=
+- aikax2H1dhYYuYv+N82i5YN30bJIxQiIBkWdH6JY51w=
+- hjTB1Djt4EGEAWcNr/CzUQJXRO4n0P4jyAyNNfbGJDY=
+- 6gEWpv20LSR4akQDHIpfN4IBdchww+yQq0j8mJyki7U=
+- WBV1X8bvrM11FAGMwSBKKGv0t24h7vorGcpACfJjcrY=
+- if24p5Cwbhc7KyXBU4yX8FE/3YT0Y6xNbTMDzqjaej8=
+- Xf1G4npePo4G/LkoF7CVX3/SgEj1ADv9Tlvo5nv0F9s=
+- 0jlqH7y8zVzxf0xwlp+4/6aG74GMO7pXtaZWhOwxue4=
+- VG9yn5jrA6BIb0jtIERxHfydp54QMafIg8Mzv7bU6HQ=
+- kxFF1N3RgRvlReSsiKgfH9v68HecQ377oWuIRZUnTRE=
+- bHDQmZs+vwHnboGncq6dBIZrxusL1YyMtW/72ZnETIM=
+- HbhrSecNgOTm80zBEtPdlLj3VqH63nhAw2AER3YmBko=
+- P+whMYUrXbW3jl+7/n8CMJWfrs/buCG1ERcd33QGMLs=
+- 6rxE+lZVE+1TXzv6pNcLoo6tloMEawTQZ71X4BqIl4E=
+- HMxSEqMKElbBDJ0gxljBCZzRo9Q3uKAK3R6Wi9z3vRw=
+- LwDHDV+phn170iB+DQuH41qayWKo3jbuG+OUS2OzkUE=
+- e2SxL1HKOdxoyAm7EZeSwWn+JO98yaeRatOwGv7asH4=
+- aHs0ah/iw0i2A529zfglUuYjtflhCThKTaqIQlw9cTY=
+- 0EA9Wk+SLM4TIpJ/R/ZOP/7MzIuWWTkNW6A1xfRQiNc=
+- eTAbItLI25IdsmB1CH2cymDi8fYzSnmFZplrPF54ySo=
+- puvfsSbnAlQUEJEGr5+4v5z0YGbsH/jvIKJoB0ne8W4=
+- F8FTLKbP+PajqCAAKK9sJYC/N/OeEMsJZuilc+OySh8=
+- 1Mf02OT17jEjvsQtV8pL0Zki8J5F+aJZoGj5s4Ywbh0=
+- gXk1BTsqmbwBX6H4ZRPDaSrYwcrYo4vJTsytjoeJXpM=
+- 57wwpSpLQuh1O/njv/gvkrZdDRT7y1/YYoSG8N6poUQ=
+- SMWh0hf+hQgkZNLKHpChbRVGT6viD4YQ15tjqlh5e5s=
+- "/bgn0amXls0E7hy5aS8ZrZfcnF3GWbr/rho3hwNUfl8="
+- SNwTA2XGHzUlUczGVapVW+2cU+Mw3y3Pl9fB8ItprPo=
+- azn+ilkksKbZtRb9skPQMZCRNkMSTK+8c/AThtKSyPA=
+- lSPZ++ebzz7l+fZkqAQfo826S2uLuQLLXsM1pb8cp2k=
+- w7KStnaYTTn4oefZLvRK/z9nJBKAi+T8i8NGAQGfYug=
+- 2CCHpih75mAm5LS75sq2c7XmKfp9IADSDl4ioRgr6zw=
+- 2cwXyi+Zz+UIAiY7ZQvjZn1pIONzY3YIAd+oERUk9bg=
+- FPjspypKCBTUN5g9vS/nJsx2W0nkZegeZ7eLrEHFU64=
+- 46Wt54NiCX6dsyqVZ2jlqNNJgMkuNLPBRP5xwmnlPNA=
+- OmLugEg+JF5r2k8kvSeyB2O1q3//Azn+l6UYHqkRXmw=
+- mG3kUpZOngXjjz/4ivCzqJSN6Gdn8JQXvT2elQDeJzk=
+- p+tzbIzcEGy1NUjztiKb6nVLkSxwUWy94kC9282j/r8=
+- LaIf+7IV2MVlzdyVGN6uOG+SaMZj8EXBiTMhzwVtkWM=
+- 2Ehn2w7uzbc7XJJ5Eht6IHQPaVTVyKqRLG26BeA6reo=
+- fxjJ/LOqyT7jrcOUhqP8sf9pvUsDZDfA/CDzLywREtM=
+- YMYMv+ZpKWXBLvgtvxeQutvU3s94VEczRDhxtRmabRs=
+- WTGVeej8WsH+WBCrySZkuXt+tf+8G4X/la+qcBPNijQ=
+- AEhXV0TdLFFztrjo6kGRxLklvjrMlYf0Aaxtt3SbFMo=
+- hwU2Ehq0NzAEuTWABIYmnw9t3KxtVCk7wClv60we3dE=
+- Dnw+zVNkZ/ixHSznWiOE5Ll7PxS88L7uPToMBCDZ0qo=
+- Pd5uVNsqKYXPdvYtgw6JEaB04JYb+45K9omgIgMzsHs=
+- M2HcfrlgffLWa7bmV++Ep30jiuO0TZ5VTfTCI6t/uA8=
+- T3Vj1rAScmRrrzuocXbPCHd2FYdjxScDlsn2hzYtzIs=
+- wpRx9wzNhs0v5I53/XoJl+mdfFv6C8+p+76oZ9v4juA=
+- NBz5Aio+ZGkJjten0FYHH3MIfSg0B8OxCMbg/YmW7zw=
+- apjpLJIpHk9lyMNVtnxLYcrpkyNKwD57Ho4usyw76GU=
+- GZ/7VYjXL2iy4MLs7aG26H6dXNovw6Hjf7pRY/+1II8=
+- eqb5EAW5M/wsafVlJ0B1nJvJ9ZKoB6uzAoZjHh3e12E=
+- wB/GFG0JHKXRXDfNNt0S10P2CDuU12FYsGLwfjFSn6Q=
+- vAyhc8vhcq3v+eiLtYqeDdDXA5gKA6nYVFtgrTCPsKc=
+- FsQhQ2wTweJxi4mhppJXcTXK3Y2SLNnOti7UmS3FNdI=
+- g35Z0Dlqtfz6ZMSN/pifSW7SE4Z5k5mn1DWCkAhxp6M=
+- JGc1M4jACuEHEh2lsHdRWEexsUEmCnWy1idnu0mvgyw=
+- ZqVJFkRd1iG4Qi0Vfl1fPQt5T05K2rtvJcJ4Z67cvtU=
+- Gp4+9y0zNEeG4R072boXYyLNym9scQ8zoGwzHYG4TZo=
+- FVJgc9qVUNtJbj5nrtOKDZBae4s/H/U9ExJsXVa/Phw=
+- xfl1s1xyz+LacgCcmGanzl6vrc5XrzlcnBtslLOD7Sw=
+- "/DYHygRzqQ4NN1MhLfCZMZwQ8kIYZUuvmEiRsObyyvc="
+- WQasNhoTfi0oZGXNZYjrtaw/WulVABEAvEFXfD11F2Q=
+- C0H3ofcTKrPxluOS+t/ScTwpF2IAE/Y6+XMBHTM7/7E=
+- 7BDl1VDedmVFtyKKjfnIDTB7CdpHozrbgjDJxfwwPGI=
+- w++BlBUhPDty5JsK6ixZcsS0eplAX1r7eIwvU3Db/y0=
+- GoHZtEro+u3xHYF8NcTdGQYOXTKk3FjOQvMUnMUW71o=
+- I0xIw7nD3MLsIbaUpwdcbic2jXVv724KFaW/08nfJW4=
+- B8lwwaFzoQS8H0x8wTAWmn+HeD7zt7iylvDR7u8ODog=
+- "+qn2XTz5LTbhLDZOoG/aGbhGk0IsRcY/UJMfJzcMztw="
+- hJw5g5ulGBExYbj2b2cv0Ty4CqCGYJxtqj+SaFy5VUc=
+- 8nQ8sz6xksyw2zP7h7HGsf3Z54Q7CfuwVxUh7yy3TOE=
+- 6O6IXQnMpnGQ+ly2cCsa0NszHlmV9OX3VDTs1+vrbRY=
+- hswm1xwIS3/4b5eOrI5bTMTFyxa1CxmrnI53ruqF+kU=
+- kT9LSEIRz2BfQB2EA50DBvZevb2FPRuME6NlIoEO2Dw=
+- GcwC8m30PMVxvJ7XsMTSkiSj7CKVKSIXJe920CHIMm8=
+- ohHv5luTREoCk3as5bKLG6pjsXkshsbjT0/QmwouLTY=
+- tmu3XVM1d6Ovf82/Gow/iL+7QJBE0LhgzuW5WpywgOE=
+- Hscz7rIHM756cekgpZOaeUiXP2MZqT9RlIfwi0c4Pu8=
+- aC14nS9ZpOe+xMIIqd2MYo4y6gjFu8EU65vEKcg3dNc=
+- deBg12M5hRn2NGNlXsyS7mRchpnaPMYgG2CTuegSZKY=
+- qZo8qyv+zbTCQPgNAAdRJw/MUns+YxFY8YzVbFVvbhk=
+- SoyftR22+PxHPVGsqGibfduppubXzpxlZsmvjgvD+18=
+- as104UqTCfOIxO89cK69PIHJM2maIJlVFzHsBS6loJE=
+- yA2s4zoO7t530ZTtlJd88maSotYBm0Jr1YfN6sjO/fk=
+- gfpo7IR1WhC9C+tSW+g2CIyPlPs/3Y2jpjnnQRQX8JE=
+- B1EFxpKdEtmyQN9VPVduQRNtbdeij0BVF6JW6ZlshoU=
+- BILuDZ3lbMN8Qma1CAvolWuRDWjplAjFU7QJgdepkew=
+- "/OGpC8Rz7PChIUV5cJmq4uOCbLsmDs4R6tegi2+SBqs="
+- xkI9k8ltsx79w7RbY3Rc5yjJbN5vFRiovKZZPrCU8AM=
+- aAewzeNukmz5IvLNMnBaJWF9ehvrPdtCw7KJV/g5QfQ=
+- 2K4suO7l6rjBHzs0OepKKkCR4GZGgngh7hlrdWikFM0=
+- apnXK65b9Rz8P6lkL9tIQAlJPXgs5NyJulYDAbmxFa4=
+- ZZxujRGHPbxnlLXzfhi+RLDrOsmTp5yut0CSZBLk/Vo=
+- nZkytSYLsMlj0V4tU6b2hgxxlq2VbCLBSUcX6/udx90=
+- hTjtrmYvwj14T8YgAehD6O0SgDgkCkvq9+Ecdwic2Vs=
+- NSn3rg4oRDGJMI8zh+k0EwkUgSEERhH+FzdH61+033Y=
+- fzA/L9myxwr6OWY2g8PnbEf2AiU1BIWqGAJOBsBGgws=
+- CToLCfOg5ZUQkx135WXIspPlTLydoWUYMF2L47vGPGU=
+- dWcrW6XxgLohM9S0NdvjSPOAzLBT/M9/3UV3qGeQU8c=
+- g51lF+wQTixwzh2h2GsdicX1R7Zmrc3YJEVsl1bH4mE=
+- rtfvnJNefXK2R167lWo6Hy/sgMzhhIpmpf6PIaTo7Zc=
+- 4PiVhy1lslKP7slzUKOiErPUq4h0jiXQIqNGQdM4IWs=
+- vKeIPLN5KNUv1sMt+gzFgz8Sl4smcIVPY3kNrFN2GHg=
+- eJIHPgTHcEGepilwdwqHFVsl5W6QGzX7zlV4ot45Jx4=
+- XpODKz+vDHQbQvGu0QDz3INmscCENU6Ea6POozb0Kho=
+- HbRnxpjWRwaqhkOmQNIfIUAKKUzXB+SgNlr/kQJEmNw=
+- EIvQdmv0Ktl/xoMKPwyV/kxMeQac5WTBNk+LdTjP/hw=
+- fHYfUCDVU+kCYpdGy5XdBb72YPVHbS01pxaNgh934ng=
+- ANhcKzqVKbIpEIIQpgDOw3SDU5TksrZKqtGxZJHe6cQ=
+- 3qAhuF3dPJ6aLXXQncysNl389m+bpleEAM2dO7pmsOs=
+- oxXw+PDxfRkQC/4xLsQw+9YfJVCvskMDhtz8vx0brNs=
+- NC5IkXTMhXnQOOqXaDsBD+6G3iwnTSour8tZWyE+ZD8=
+- kBIhJumAFJkndDw8Kz0KyCA+O639aYmRYiqJpn3B9/U=
+- aftT9QHDmlyXTohdI66ZKiYujhqjkuK+o05xMZDPJXw=
+- wXMj/AsbqwDdo3ZN7zLxQy0K8US/1ff4yH5xlpZDBVk=
+- dw7bSsFXEd3MJMkzDFWfdvTCOiAcXxPPjuzuuB/pLmc=
+- 4A1Sqwf0XB9J5crSpJJ2XaVJXC/iSzJ4DEokdRw7DU0=
+- fFqNGiLWppm0oJU0SLRK/kUbj3GEnEzwnV1Q/lvYkoE=
+- REosRdFEUyWsX0uqRvjInjzjrEcNa40oalmifHws3+s=
+- vtGSxj0IMYjfWeYuQzDE3ThxdCyrZHkql6q706YVmm0=
+- wJZkmSaq1AVUSMYSNZ9wfwrTTyCpuSPWOcl+ZXP0opc=
+- gokpb6uTfvm50mi8fMEFYlIgWlIXgptkuQX2s5mg7Tw=
+- Y+4k5RuvS6xFuMRbhNDdGg59dc/ZEu7gX3rSG/9O3NM=
+- C7gE9wuCIahrDXY0wpilt4BfoSMwm51V3IaDm3OoAy8=
+- J/EypIfpS6IehqjASmDewR7VDr+lV7VsYpuhX3sNhXI=
+- mpAEA6wxO6J6G8gfCTJlK4Ag2sksI02Y+gsGvwBA7P0=
+- x3Xnt1ft5jDNCqERO9ECZhqziCnKUqZCKreChi8mhkY=
+- I7XtKaHoQJ9wZE5E+uuuea5ocxjv1xnZryn4SWsBaoE=
+- KPARbvQr9xgySUbxPXh6HUEnSggzXVLugz1bV38Coyo=
+- YIX+4pl6U/4V8ZXZB1kCOOwfcXrfasf9TX7RN/kYkqo=
+- F3VjFevUe3EQNZ/HsWgXm/by3zZG/MiIvIqgXHizisE=
+- zwuFT1oX/a13PUYkONTXMociuBfUCnTsuNmtefmKolE=
+- IoWHf77EuxrWRmptNZbzo2lkbbA6AtT3SiYWpQ1Fegw=
+- 7vE5TuO4DZzhjr/mGKBW5uApnBLNGcmceW1ILrUid8Y=
+- 0tAup03iyfqx2ALblpwY1AmoZjqWl5d7scmMzdneQ3I=
+- 2GW2W9s7o3kfyVSdLjFfPfu6ASjbMDFskTeV99eegyM=
+- ejGAujPJEd9EaR2yXl4sg8XLCo0WZVKRNFuKzL3fhj0=
+- 8CyWNXSBlyRDouttKGHIA/p3kPt9AiWy9Utr66lk9K0=
+- 3/xQSqVTWbkmXL6+HkAy/mALZEda4/0pwH0jIjM00K8=
+- hNiYd/DUBB77a/kaFvAkjy/Vc+avBcGflr7bn4gveII=
+- EpRPIjM8BJAG4r2/ey6hL9xFacIfBE64xMz5tVij4fc=
+- 5KCpDlrAfVQ1xvJcTPfMVlvst5e7W4PFFbxCfvMqR3A=
+- kmD4iaA8PeWoBrgCr9zKMIUTMoqQxEmIlV2NwT3ZNQQ=
+- hNnEuElQa22PgHWpAA5+CiVL5xBg6oifrTyIOVmI9Pw=
+- pa1+bVIlrQDF8F3ba7OxWXqEPMkvbPGISQ/8uIoe9O8=
+- qoAvZU4656qhtz+HJAVqBeJpGszqjdkAV5FggPhNfpM=
+- dhnujOpJGH8wlhbjDs9UvgciWbQ3YPH1UKZElF1VcvI=
+- fo7qXMYJgCcMnOt1zowIfUjXJhEP09F5Ifd07v2OGNg=
+- m5esXnZ+U5PNDu0JqOUbbzd166OPeSWT6gFui6nplrA=
+- 6hWWChHRwx0SAfBD2G67ORTmpAUT3KO+crhh6eRjJZ8=
+- wKGu7bZaO6qbfMzSekdcrnh4TRvQIlcGy9huzYjOH40=
+- CRNkAlrICUnbxEE/pGe8IDXwlKIv/claZOgbELFEtOg=
+- iTWxDwVuzQk3BP3fb/KSi2RJUIUQCLbcH4Lg9mTr2pk=
+- ZNcuXBwWmPWocsxkyioL3rj15uE8ITAiuBDWFoKmlZ4=
+- gtJD6Ff3mxWNiwwKDmEOrUGqoLQfrvV3NRwOOHG9Gpg=
+- VDOLVgAU4KZM50dnxgwNE2gxdaZLa0Uzr+N4nJPEVHA=
+- "/TqqO2bvnuEBPGo2iENlOzIrglfEMUnZeeRLgqzQmBA="
+- XxBZ/wCMKUuFT0ToC/Ka93lHJef3mPkqMOgtgMTwz2I=
+- 9d7IcLax+Ybw/PKhjXzVuqFggUCGfZw211N1Q5s7j6M=
+- F/gHVGRNM6xoWwhCpAIimtu0P8kxL3vfNrokI3ofH/s=
+- vO3PJPf0OpmE5w+rj/BVj6Nzp2hMexoE6/KkgdedufQ=
+- r/ffvkYU4G8gp060X8/DuGGxmx24p7x7Chu5DcFXXI0=
+- 0nEpi9KH+GazblpapyAaMGbLyd0gAAzgpZLO7k9zeLc=
+- hZMmRZJcNFWxG299pMh/SgY+DxKOKm/5vFjm1lpkh1c=
+- A2XKwUG2PHpXAlT2J9xs8e9hhV0smzidcohXiNtPDbM=
+- fWNUbXnMVqG48A2nJ6Bg1OC0wGYIF4zMfYjO6eM0GxI=
+- sFya1JzwrTuUKYluKXq1CFMtMzRrh+H5OW3J9UC+tLw=
+- j8ApOWnaxXwlpYyC8vTEO/XNizf8twxNe/qAqPfLWyw=
+- ATmsb6H7HskLwV/l6xNCHzJXm86EmraXqj7zt3gjrhc=
+- Amxvm/lBA8jSb8NHsDTDOmY+fkp7RdS1PHqtBpmwSV4=
+- gKxpemYXs3YXwFhT5YoNPRbm7aTyHsoEWGsu6ryFbOk=
+- 1/TTzO56zT3X+tOsK+Kq6cRPTpt/uALXMTbUxTkgFAo=
+- UjqhjsuJLFH72+KMV+EKkkGeCnPokx5Xi5i6/8z5nN0=
+- dcIJcL71kX5G91NCp5PMSKJewYJcE3iYkZ8BY/lIdrY=
+- XnN/iR2xF1RCo5/ec+UdeBpUVQbXHJVHem3rWYi9f5o=
+- GGXk+b6WOfx219TajuJeqnQh9oN6zLZ1FpN+aUaep+Q=
+- SBZsfBke6GxbAio+xyjPCabEiZg1cLrKVdHHaOsBuYw=
+- uEbpy34y23SBg8IhbnN+voPa0O5PUECPNDlDjvSdaIU=
+- 8nXJNpLw4g2loNN7TdC31vaclOu6YiFWVhYp/p/eBis=
+- 9tvT113uTrUMVW4qMERsDoBsyhYaz+unCLXm/titYzo=
+- 6rwcOFvgspXsnWbOW1NYSUYUFbS5XyxXhEfa17MKIlI=
+- ieAVNqwgcnlAnU3h5SU+AfShdp5pbbDWBiypuPVnZ8g=
+- i1VUUrFMjTVwYIlkoc5AZClzF0YhHUXdPJLCH7NcsDk=
+- 1hMMf8d6ou+0rNQ/zLeHl5tbV16oIMC6DY11r0yt1As=
+- Yn8fr0xcCxHFKKsWMjTIxP/Ri+ofrxXccNS74dzT+tg=
+- s9F+u+Tyt10ntjCc+q4Uh7ZnMBpzlR59UjoDnNLf4RA=
+- Om4p58jUz5lucKn5XgVeGCoawvp0iCHkiFnCVHr0qGs=
+- d3Uk8M+ceSWW6ys8V4AdvTe2mZkQ1+aTkiqyXJGT+qk=
+- MAyy16UnDd/M13n0bHvJg5229s9vCCAL6TQHYi0VmVQ=
+- SloMU7P99MoCwTZocmqJzZhMSLvVAMwJrbJfvd39U3Y=
+- zjpZhofI0uWqa+2tIOBZtKeMygra1+VjsHmY1c0ia4w=
+- rbpsDsio2J77A95kJCegkwL6T3R0mJ7PM/1UWjDS/1s=
+- ZVhP2wXU1wx5jDTHgQ42BSasqon8JGFtuZ3p4cP6cuY=
+- jltXt7YgkA4T3YSq4jkN6g7qGZqn+NNPR7coJCduk/c=
+- r27pkQZ1hpZAZSDKKsfZ6ZJaMC4X7H+94RQUlbUlb8k=
+- 7AQuUs8+tn9DI2qsX5miHSwVf3MY8O8mETUiwWDoP4k=
+- E6phJ+973KKWv+tukyRhlMRCQhn9/6u+XibAsPJe1+g=
+- bXQT02HBxQCbfOMws8X/V3YVV716c4cMDdRkU9LbSsc=
+- ud2iZNg8gvnHHxbhEocNguRWG4jJ31UwYNUcdMQHAVk=
+- JAb0blBsFLWpNnm+rPmon2h4UhpERFWGZybXpOqfb+k=
+- wco7fa2w+gWv+bUaPicrLmVItw6s2V5oTxG5Qkz6hrA=
+- o2DvFt1jdv81k5V+CUPokBZ7MKhGR1Cc8BWvDMt4qKc=
+- wZEi8puAtn/Ld2inXrjE5rlcR60+Mls4mwO8sPhnzC4=
+- qWoZxE1t7Tj0MepWepk8IcicFoDp91kKo6Bz/pQ1xDg=
+- yhn5SwrZp+ndrRWjewsGVsOVe/G6goZLp4eryn04XyQ=
+- Eq1KPvM5ZGhdVWOOlX20VvDYmmRQYcasN1EfbAYNciU=
+- vyy1imj2hNlaO3jvj2Ycmk5bCegsyPnMiMzpBSjK6yc=
+- cLYUT65NTBY8biBfAuNH9VO4DgMEOyer5m5TkkfXR9E=
+- fEpcJCtyoj2Zm7KAHGVEo2j0mjq4ae9XjhcQebRKmtg=
+- FQ8OkdRmgrwRXPW+DP0jInRHP0LdCyuTqF8N6z0Ovp8=
+- My0ep6/ymu42ZGw8cpKrXzxCw7mqHw6iWzEqXGtK2Ag=
+- ll9puu+2AobGAmK0Dc9AcXoiJ+712wDJtxfV3iRFNRE=
+- lSNPAntdpaCZKL3l/EMqih5SVVnKsIuDDovf90qduTo=
+- qj0v5PbTAdvWuPstL937eu6/O+xT//9LOaCWevqIxgk=
+- 8bPjYGgGx0OgeIYjqvxdHoLkNEhwoG8c0kVmI+/NHtA=
+- Rx2UEBPUF8Jmgnlee2AridB0JSwFAPEQVjeVwle5qVs=
+- bV1F1X688wQtoQRki6fN+/uBTxSO57rUhTNr4dV3OSw=
+- VF8HApXSYl6K+IbWVtbx5hoJzMoDrm2ygwTqHEGAOU8=
+- X1skrWVTFSXdzMrOBZja+qOG4wdJur8Sx7DNoq9FxYI=
+- nh80Hf+RYbadavxUFA6jDkRnbtNgDcmPUH8GeP5k4yA=
+- 2tCuKpCv6l5L20zJn6X+EmvS7eOx50uMaUp8eNK4b+Y=
+- WRLVWQzu3WFyTuINN7UVQnkWyRUIG8ytKeDGhEdgFMQ=
+- XOX9Wjq5Usj5/r1hcSaoHcSis18Hd0eNVD5LPrK/mMQ=
+- AaDGa1Rf7vz/Eb00pesW2MO3nIDXe24k3j3veZcNbDE=
+- QKE7dI7MJ7OL3iNaazSF/7V8F9KtHH9uAWitvOM6h3E=
+- tcxe2f6P66pD5CmEA/F6Am+CVeHiFytDR6k7b6On+/8=
+- y4stx3amY6WekwcN3NZFZ359TMTmCreKjQmw5xBTJkc=
+- 1niManhyL2/7ViBCFHa30LIjFUbtjwOfChnMOFRu9yc=
+- 8NE1GuAYMUwwUMKh1hJ4AdDCjnMGRttO732O/SlGGvk=
+- TL46zrNaPDCIoBiE6N/TJ6uyA1lMxyq0p0++YdV/gKU=
+- 0f4LPJBWodQdzbC3rtvF7T/285k1gKYhAyth3yZakKk=
+- "/HZHvucg75QBOp/wPZPXvcIx6qBy9zEuJ1WP7PXd5Sw="
+- x4GuzhupxsENWAGffInwKhpynZBjfskb2xqNHYSjFF0=
+- 3ADJA4UrsZ6yUK66BeU0ptIRYp130FUDOAa3g7rgmTc=
+- NYDJJnUYgH0UgDq2gh+gZ7TboSEKQUiiQ7npODuuah4=
+- UeTmUAM0z5SBmwGjYKnPk9myxcT/DQOqNVZUCGMaFyE=
+- 8bILM2lMgg9dYezmj00WXLU0i9bp/F22QZyRdqtBxKo=
+- qdTQef3V/i7GigwRj0DWlgt2oAMGGbZgjOt4V4lNNoA=
+- Ec6BiaR9QMii9WpvcGRPWra7ciG0SW5WQnlw7pCcXxk=
+- a2yw6gWgsNrO3iS26IfK2Gv9caPkqJfluFym/l5Cnnw=
+- RcTEkr4e89uuKoiVcENG08Ny79E2C0ZHkAotAECGs+0=
+- "/+wrBIKKlPCNKLHZO9lwLw4zlZMMw/NZPRGCvu3CNWE="
+- SrnzmOdnKNqFRiPvZS+icU56b63iMlvagpJDHpkyHFc=
+- JHn4D2R8LJGJsD+ri2UjydAAfKOQfUSu95MQqKDbvqc=
+- wENKfVAmHlccmD/h0JHyYUA2HNF2U6vrckKY1hoRgnY=
+- U+XnxaiEiTc5xM9kUoVyrrhG+OTKGYYYgodHXGWQD6s=
+- Nq5wSTa3BYiLQHI6x/8Rs8AYG4P4bsKg76kaFNYBCCw=
+- 4yrDHoTpVMTvMPemeZlIzfCPMOhd5QXiNxVcmycmWqU=
+- pJsdG1ipS+FmXLcrPpUxX0KmEfH/LKcX/iIVTT7M53o=
+- VNwLVJIWb6CFIK/XHAMPOYvXLvkNu3O8LgVjY+wBtUA=
+- G0Ahta1iX4/q4HzjnXfH1vARpzx1O7dLmfO5j6DI/F0=
+- kVSyb0KUUdJD9x9C/JHtIVmwPS+hO0kWrCmesi6qL1o=
+- hPUOiY956uAkPWbHECxdmZm2UL38RCsEv8TZw1RHCuw=
+- ocel7KGEwDFqoXD6L5smN45iQBiVWet/T/Ch5Zljjgk=
+- UJheFjmS8tBOTawpb2wxt9quQdZaOe7GE4cj0dBDCzA=
+- lnUgriPo7hSIi65ygJAxuYOYrkpjZ3Phj/+RfXdnkzQ=
+- W4hMb7IAF2Si0FR6feWUcDPvZ394E79rnAC2d7PotQ8=
+- S481OInZoF0XlG4m0BTv6ZQHy6i9nQEC1KqxDOYikEM=
+- SYRTBCXtOdhZQXiGYeC+Flfy8shL++kLZeTXHfl/6Ck=
+- h2BmO7Jfp581wsFPuca8vkRKjJOEkc0k/mhKcFbJ28Q=
+- s3DeFOlBQtShCKed9tDiZaC6P6LhD1fEs6iSt0yfhKo=
+- 9RU9Rn2oxRAHJRS18cm+GhuKDcfC7pitinXIZRzxE1U=
+- Px08QBeNWFjOouMWsGkqajzGJi3wIIGARpGvrDceSu0=
+- OkVz7uFRZgJn68FnRPVZv4mvgcE18VqOK2a/VXZfWuo=
+- xXRa8vR3zNV0OLTKVNVqzQD3qFlTC7g2N2Os8GnZr3g=
+- xPZ0LJ4ZYl+CCkSh9SaTpMNIO6Icoi/A/gnnPH2kINU=
+- PPLPGi7eQBSyHomQ3QzjDe/U5Kl68xbOfWJFPSI3XCA=
+- Zy6Fe/K7REjER/hUiqHsotu/R4+tem+uY7sJ5uSKVrs=
+- cVTG7rbNa3MwMXWf41qB943mBWhZ0vQ2PM7mP+/Hz/k=
+- CUDQEt7eIpGpueL6v8wY7qa8c76JbnZXwnOa4JRrwDE=
+- KyUL9aGMVlNg9F7Kie1P9RnJitWIbBY7bjxbSnWoQPk=
+- xSW/ubZ0FV59TCedXAYfJiizEeA626U4s3rjDyU8kTs=
+- 7Yub4ghC+T74tqsuF0/Qsp+Ol2XXZSmlBhLbce0eQvw=
+- vmyQb3FjDS96M3DUh/mzgtg63YtIn1wlDHYStLaPKAM=
+- fRKMTFNsKpqSvELYGWpGlN0wz3XjJHa+PtGjqSXGMeQ=
+- MaLVKCaD7bOiLFZfGZqpb7n/sxB681qtku4c1WfPwl0=
+- DkNlCxSOFVfe8h73rhbr2PfCHM+mduDZ9k4EJoGFWXA=
+- FWcXjWdW0Dv2ljIRW39Av2Ib6SsNgTZU3hRYZRnrXto=
+- z4w+P3GutQinRVc8fXCbuuCeAOdcau1beIiIVRenJnw=
+- Gv2olzenRfFdQoB9VPZ8gDcn11zkQ7DzpllTGziuZg8=
+- VgEeP2M5b2EuNU05InvdH7h7uqWKauKTytHX8Fwl5hc=
+- 2FSo2X7CUeh7oB6yc46/HxQUiikLdj0c43F94la5MhY=
+- mxvYGkNBYm8szfvqK/HqwTNcmwATF4JAQ61U1SBzC0E=
+- 2sluqhWZcjS/qgplHbFozNhLyLX1nFuwJ6eLbBZS9IU=
+- Pu8M0Ub2MmzOYwvB4+NVEgYLYvM9pZb+0V4EFhVw/CI=
+- ybjgZ2UfjKDdelJ6MYMNOvR6sk7q1GDYetqfMiOEvlE=
+- IuFfYTxYFKWMvtheKcyxQBYxIKIHjYH9zI4N2twYKXo=
+- DJbLS+8fhZEKjBohwdWrjdmINVtd8cGai8FnjWZjytw=
+- U9RTsMCLaziukVFdyI0l++zdHWAB8CJBlinfhE+LpDM=
+- Hu/3oH8++SZ+ZWpumosz9HmE+MdJ/vqnrdSn1uHAjSo=
+- YFR7tBIQwHhEAORq0Zqozn7gi+j2rIFT5HtPYCtzPGo=
+- PJ+iHVXQgUjzGSAP5SUfcurYTHgAfk0IRt4SVD9KnWA=
+- w3/aRy/+YjItY7px/kiWzplQnc1Ks8OaDbIce0cC/sY=
+- qlk0P567NU+1zf8Q6uf6cloLHi72uOo2DZWHP6KN+Kk=
+- SxeYEHkaGa87/q+9zwrKJ02ax9XwY7jgt1GJNgwM86M=
+- U797WjUeleOZxI7z0m/SLAtieor7kVOV5hw4rNM5vlM=
+- AI3VUMIV4HwrPMVd3Huo/rgSzKnDjjVSPvavgw3amdI=
+- v6Eguf4uZoKRFEQm2gzVxw41zSue0u+9iwqjvIYWLps=
+- RET1pPpC/42s4/pYX0iAKC+M0JElDwxGeUdYyts0sdE=
+- RUGXuomS2T+T/UV077a7wS414KRBe7V6pRDNPpLDCls=
+- qP7cxZ063p1LVQJa/VSCXsjaeYIlood4gIH0NJcwxQY=
+- eWVlKB8GJfTka12K/UrwXrZ/tWt4bqbAatIg2wLr0Gc=
+- zuKyWzZZ+dVlL3UONV3E7sa3aLcr7tW8hlbTMcDtCNY=
+- 2fuS47vmW+HxqtSoLu9FZ/eh6+LNEQyASblpi+enDIg=
+- 5vc/GhW5dXhigSOIIxcGzTrQ/DWHeycCdb7zT/hY+jY=
+- eogur8jrwTPU4XWZJZJKMgqmfxSu5m755CqGT/OukI0=
+- eVhH72osO+TI66gB58duyX4DlFVxwmobbLaTPuNtVxw=
+- XrtJ5JmmYT6DLkM6JyLt0NKUfVb9tNaErw8GxjH99jM=
+- ybqtDBfv11bKj/2+8YLWxna2WPG9VdtyfdcDw4EBZKY=
+- Rd2tsmZti14Ys167gvdb15D9T+ewJe19XWfECatGb4k=
+- icxNlVM+86iNZjxC9Tq2Hjf9N76Bm8RimQSak1vwtbE=
+- YoYmBMVCoyltUGzxqVQZ8Wf1KAH+U0CK0+qK2wDyVDE=
+- 3N8SUegRz53AKT28GJkUKlwi1ZNLb/aj+3tze5TTaY4=
+- 5RTIP/bTJM/FR3fOB++jlpfVvmAH9LttIfKjeJrBpGE=
+- CoYFD7N6Te82iF2pVX9bIqnhkXZ6gOekokFUEKRGK2g=
+- RrR19NPV2Gs1PZlF/9bJNfI+mjSb5RVW8k95hQlodPs=
+- hC3nsjnw1qsX3AjT/P5owJCprw61KFz7xUM7MwTF6+4=
+- 6wNLQdJ/7sPO6u+BOoaMp+XpZaqCRWDofWvtAjy2aUo=
+- m8bR1j71W5tYF1BjG9CrYAbq0MCTZHbLq6KNsrYXKi8=
+- GCIjbTijmO5+67UeTq2Agl9qKiVoOAhANuxCPCSJAYo=
+- BGOY9aAN07Gqo2Tb7TiYxibqm8EqI5oNXCFDX4PGVLE=
+- "+GV7xl8f8BCOs3Ru7LGli76ZoxLfVy9KYRjxQrVcDLs="
+- 9OmUcwCoS0y7JBC4kA20pLEz7DX3PizH894dhN9f6C4=
+- TNdLjkTXJvKZCQrGx3SDcop2KBzM2O6hnRS7fcIbX5k=
+- pxp8cBH1OhurNkLsLOElk/BSMKzo3h4+dkX2nvrBRD0=
+- m9mqDfAL4VwwAt76DQja0KtneyQWqqctu80t/zO90tA=
+- fuFi8hPOI0IqlSnWuF9nKZkS3xiF/oAu6OYJAsZ7HzI=
+- EGKM/ENPuH8x1nXTfgQCwtgkz+g5Ov96Ye5XqqfZCcM=
+- Hgnl3Ko0YwSrrsQWSkFXCmeBsTDc7O03j+Lo37uQAp0=
+- Nc4HbDxmwza/J311qHFPqwa+8ioWYZamA22sG/ggrJw=
+- 32NcyeQsRY5LtWH0EBNj5t0doZJPFcQCjEGhGnZsEcs=
+- yDS+xUHwaHPRQkgilgkXpZaFLtQqtb3wJ80CZeu/nek=
+- L8WS0RsdlQYFLvq2RWfLmPPyfurv0RW8w1myBs5nNdk=
+- 34UhxMyUNSSLPLQuFefN9CkTg3iAYY4CKlylR09ucEM=
+- VJy8/3ott/z8Q5W2vGyyXvkRGOz7ZJCJZ1B1yOHnJD4=
+- W6V6Mqk004CXtM00HtQYsxApOiKewaaZxR5pKlqas2I=
+- Fr7f2mC8hsWpjaDp2NxX+7+9p2sX3kyaZlTapfJa72o=
+- 4EV7Gz5OwgsrBk/0mOxrqncIGeMiJwYgdaMJlsYylLc=
+- "+M6FWRwx+flJohDonhM3upAnRdo4NWgtEU9VunIJlck="
+- IVL2N3qphB9b6qIav9iGp7k47XoD1tOqilJ1OAcg3eE=
+- C/fLj2udLqfC4BRAcNwMgzaW5s5Q3HoOaI48qCxl4uk=
+- Mm+IKgLQGS6RvzIRAM/vaQgHedabVnQutOUzccznmxI=
+- 5hySbV/rO41N5HciDXz59rKfAFfI3vaYOXXjGFDYJbE=
+- 6pKmEnvzR2O4+4PJoMGswcBYhbBJB0p60votS9+jaF0=
+- 6qXBXurwc9CHTw1LI8XBeqY0vaMbgH2j7a1BN7wVm+M=
+- gbAnyPKkhmE8tMCa6T8PKpI/Dh/VQfA0/GWkAqdjxZE=
+- 3CK4aOQxLw1yr/l3HOSbAVz1GqZCKvnxNfdFogqfWso=
+- fo1E6hmlog9gVbEFmYoS3ZZrNrLs3K7wS+rmUMDKPYk=
+- VDN72pNuJ+BaV8Nl2BilJBmY4U3f5o4DWwXGqWLrzgU=
+- Q0KtkOjxfat+oxcCokD+NStgxvjOIRwciC/oooeCg/8=
+- 8JkNyKD3D/tTdcWTY1mCb4ZGedMRnvBI3Rs1Ei1S3i8=
+- 6IHam+jXpjS07QMT/pFbsPqV1LjJRuUNdIDjsuwtFmo=
+- s42dFow67fFW9PJJuBra70tzh5BRBXP1e1Asygw18W8=
+- dy8Wbz16yyDlnKXDTXBrAaLkXjYEQ29gw0lWL/K1Kqc=
+- X/x9/Iduyu6VCB0hKQWQfnIGdwWUBAvrBYh6+gvvLHc=
+- Nuz5Ezzzu3lj1T8w/zAMnzdse6Eu76NBEUVjUYvqjsU=
+- kg2exLBUFV0Y724DAW8gi6fOWwAWxuQZHypIo21tW74=
+- liiOz6jo5IahGE+UnLH5flF+v/TLXVJWGCduWZeCz80=
+- 5WaUvuMITr4cL9lBg4+2XNLkUk4dkJ1U0nVgAE3yMZg=
+- 42ON1S0wDBOT8174Ve0ArjXma0isyKj7/Gtd+6M1WTs=
+- kLCLnQSRFLoJ+Jh7K4DIvoeE7l5LUrh673R/tCh2UuY=
+- q9S1CeIS/9QPDMC8db0niA1jOpNK1k9MHWWNyTTBM3U=
+- GtzYHw4//kpu2vWp2Rs0JzlV7paiUU1d6VBJZpUQXiE=
+- OQb24e9x93J+LjE30vG3x+LBbNK9ivzjABnhy9k5jTI=
+- j8Cqo6r+jwUXHCYrMVfFFnRTRsy3g+EQnwBqfTTSPAo=
+- TRPh2+erP5D3z59JvrT6erxWJJZ9bbebnmHAIsBl0IM=
+- XcKlx5NcHFDgopePtGX222GQTMK71jSz5vLXS5IhtBA=
+- GnnR3R1o0UkdiMQLiAw2/QSIIE8aQZqH4NpkpXe0FhA=
+- 3c1PL/KQ/Qu3MlNCSeaDIkMZ5YPAznsM7msZMULyDcI=
+- 6Py86ugKOWFHNHwwUabM4IhORX6QkpaZ1N5XE/8ofSQ=
+- AKuZ2XGuvu98eyHKFVUhTbtqcIwBRrMY8KiUqJtLqNw=
+- f1dB+9k0gfQiql0Dc8ixwLzn1Ln6kAvECsj8YkAR6Y0=
+- fTFrk95f9OaTZXCNh6uPm3mEAfdEQs8SpwnQtCIS4c0=
+- IlxxG+n6PAMCKTVJ6j6YMTAo4OkjLjIWaFWacJX2PIg=
+- S1Kaw3W0IXvhf+8aSm8WJBhcyZkJ6SJ4wHWeEqs9Yfo=
+- c9Uxk1VWWQKn2zDGbJXJZD4JKne335lkP6RNW/pL9G0=
+- 81fQJv0cY70xxJX6FLcsQIu/LTBdXgnL2AOXZzsEZXs=
+- pHPZBKUU4Sh+cft4vYfYExGZBU9GNzCa1DkW9HS0owA=
+- "/SVrNqz/D+AD5lo9UY8jlyNA/WhHlqS+783rRw17i7c="
+- Ta7+jOCRFtZvwW3Q8Ibi1F0aEMKmquic9PByRzqLxtU=
+- oDHtonOsGIYdETJK+ICFlSdAW01HWprFibxMi/1ZiJM=
+- cQm4Q1O7Mdk1OR2SlP5xFV2eYY4Sc7LxUx6RIxhhD2A=
+- KK2bGZPUf99Kit58lWb1IwhPJ1AlRpDjIIcZdKwi3Yg=
+- FQHdE0ceQn+uBu0A7fVJl8XdfZYo4uo9a1nDNURMYfE=
+- aHTqMdvglhnXdkQyO6ZMN51MWPOxDmFcOVjmvhAh/QE=
+- 4oeB38LDHjYlfvt+qPHTkj3tq+dKVmuQj6w4KSoM6wQ=
+- A649aPzX5+jyn940FO4Yg8ksdkhz0rQ8LazPos1qFbE=
+- KVWAQa2o5IAzaKblFXXdvJIXchaU4TZ+ro1713eMn7Q=
+- "/7UdGNiCVf1VTjJAB+JQPRUIMM3/+YlpfULe75dLIiU="
+- bv9mbodluNFwdxCAJqry+lJDfpoWu3fpR08qLBRyGlk=
+- OqEKzO9Nj18O2irJuSsWbZQ3jg+EbU11IBhwyMG9/hw=
+- uCLxzS3PxoW0foPjmAKJ/V2OP/OoLe8k19HWi7Jy6zI=
+- cUMUjeGVsDefN52EqIUfm4SOxRVRGJZSgff+qSNIKyw=
+- e9nKenVhFeq9/yqyge6djCL0S1HZemgBFp1l2Q/xYyc=
+- SzNdR1lLacnRYqKEdtHn5vYc8Caw8+Z9UPp64+U0qHY=
+- crVa4yiFaiLHwcCm050JEaIdVlOr7ObwFgkHzYhnFKM=
+- Sxp0HWeMMwTOwNlDysUc51+Hi0P4RPWgtcvHpNWhMjM=
+- K72+34GcfqvNRAE4x4uqrz8MRUGKTbRvk+6xfxlB3Ag=
+- c8Y9FsZo6cshES0W/RoGoG7tazcTDek5QAI46PJnA+A=
+- UCSvKDVHbBubQ6hSaFxpZRtoC3XNQ7C4XlyDQDxyZis=
+- k2oYXKqiZrucvpgengXLeM1zKwsygOuURBK7b4+PB68=
+- FUIm89QIYOX4JqnCanpmzT+kTniUqCJfzxD4AGDPz2M=
+- qgoTvPt4dRw1iLTdFhrrYIFSnThRU0iUhlMNIqaJ0RI=
+- Dy0f3roA7J9virN+z5F2dH1g+1CaeKOcT6Xxg+ADmYQ=
+- FhLvykx3bDfxC5E5Y4VnrOoWLgHRcairCHzij0keIxE=
+- G1ulYEcxy7AwMltMLjSYzK5pzWKBuLti8RFlJHLDXbU=
+- KN0uFezLnR4USVv3XqaaYSIHu9WrqdJrQseWbMS0z6Y=
+- poNJVhOW7CZKNQhHAkpFIdAL6qM1hmDCcJqA8xx6zdA=
+- smtwMKuzYinOgQPNbJ5Lvmihn/oCqPXAoW7ZnlMDFXk=
+- CDTC1gclrFkCJXs7eN0WGtJtHAKQ2/HkfMFK3VuMgUI=
+- vFTDQJBoXiuv9QGzPNUyKU039Sk036YHfjXs2gxL3OM=
+- jgqR7/0jHjCtgNJn3WZI4ZkaBe5CPom8LmB3seCYKnA=
+- 6pDV4OUM0SkBWwWvEMfriFBFMe61HZzvs0l88U2bGGg=
+- colCSUy3DR16ALUHrHkBjTXkPy5uUvESgl4DdwxLYCI=
+- yo8WiNxONAA1IHD4JAAqGMnzBuihRsMbR+KpL9qWd2w=
+- W5VDi99JJnSI+VJbjMPJVug2hQMYlQyZP5hDVMSLGBM=
+- y3SwEcrLPaVR+S2pUNG+8pRTNX7hrKe0RHShszeb8RI=
+- DDzjEh8nl5rUu9m6aaWK8aSd9hpYwozOB6mpdSrxNcM=
+- cYyK3KNxvEfgHtnpsEumjOLukUYY2HlBLltYTthQwXo=
+- ofV4h3wYSuhuzB5x/tCHskGV/KcJNafMr6LPN8vrWjo=
+- FVTG/BFqty8fZkjrq5+CNXO2IIn6gnIt3RZ2rbOeCCE=
+- nm75ADWuKm2GFJ6LNnKMW52ISynOBDY20PLU2AED5bc=
+- QlDA8aIAJ6ChsF1FVzJrLBPdcbnqxD+u7P1mQ4IgvsA=
+- 6rEblPRwDBHaPiZ1ngWbJkpXqhu2JhzRFLC9CNWFFUg=
+- 5oIbgukW2C/CTks+OzgiLAg0gwDfnQGOKRyP8qh3JBY=
+- NPRMxpJAX8KWgN4T6KCnJnCpKB9RFEX+/esEv0wBjPA=
+- DsrTbqaL5xz/1dqdWRKwc2mXAYCGGw0NhdQN4rksD1s=
+- OqSwMy7Ah5cCHb4cc7hoY+QzegfemHGEVi7q5V8vcZw=
+- ORcYgA4YwZXE9422ej3Qy0jGA60bkr+TQc+97eQemIg=
+- H87cMTsQJC0d8wIdRx+CPa+aC0mh1DDFNENvVT/8X7s=
+- vopfEcZ5E4WKohP8E9489PcNr4KAWLC3aycGT7jaSiI=
+- "/BHW8o5Z08wzwLFM62RL8JAuvWPWEhjf/p59rHwlRUI="
+- MVAv9MaZTB1mdioGEDJb6PWiAsR3rIOWYLdAeCh4UWo=
+- CJVzW77c8ySAAHn+VdD2yYJlZzgVOL9/nCc50PjNsH8=
+- GG2qKX3YQOSTHrvtmlncdcm0f28h9Yc1K6+qNJ05BMU=
+- 9nUdwr4wo60gFPD82wS48cKm6IwUA7IXd6DdoBg0XAY=
+- u1Oz3xfAHX6C1YAKcnYn1VP4rczfURRIkRObfZxEneA=
+- uwPgxK+ZGvEeiXb1rLTSBgLOakoTSwUXXPyrO4bEoGk=
+- 17/23yOO1mLqNPCP5KQL/nqnpUhgdkHtY/CP6B1b++Y=
+- iqML4LOGiui7FP7+B5NiCF73upGC/9kvr6u4A8mKRK8=
+- HZluAz1hLZrytEtwBh7g6Gi/0Uwt2QsSnh7et5U+eYU=
+- 5mH0yTXopagzSa+140dpXC6XLpZ7UO/NYY+TsLe0wks=
+- M82JFjR9JXZ98OAFeM9c4o9Xj8PP0suMXYjfEhnWQ/o=
+- 7Z10Og5E/Zf5OtR6y1Qv5JDOYJkrdjpKgl034/nKY6c=
+- oKRO2M/DK35hvv65m7/3cGgIw/5NzfR1Cords//NQAg=
+- DAri2cI57UsEfW62IcO/TMfteNo7bnxhh+ORGYh1MUY=
+- bS/jLcQknvfnNZxth0//u/M16DLkmiaBI24baGr3h5Q=
+- oHoz6xxZ3iB/zL9qS4+xFf29nVFatvys71vA6gDVd/0=
+- B6X94HiZPxbrqJFvLwSo7ksMl6iiKAc+gND1qnhXZ+M=
+- YOF9tCRBV1H3HdQ9E4GcX5XvU04AdzpvVthV/T1d3XU=
+- F5saPp4xnP8MpmceB6YtrX0Iew8qie7wICYSw8tGuvk=
+- yeUxMOPLolIYTUSibMOG+so/NgC7oIWPYOXuUNTAV9I=
+- Gecvpl/E7qThoFfP2z7iaL0JmkABZPEdyBjlvSqbiVE=
+- gjCeQRWm02/t6tGOGJ95LJ4kMCsNcsAtGcYXemS49h0=
+- FUtvftGwcyfj1MoOarjmYte2s8K5ItaLaKJ08TzZlMo=
+- g1PunVucIJSiCxNRRLtj3CGkXQi9eBZcEuKV9/358dI=
+- LvpTJoe9NdSexG9OAQxiVCz5CsrhaildsSZs5yjsQco=
+- VemKHlU9vAhLCiS8izbiGErXHwBsnu3KUpzlzFZHjtY=
+- KIllofLIg8cb/4pLOht2zHfRHmX3CRDV/v9BGk5f4bM=
+- "/aeZDTENIL/Lxw0oDe/f8rOnSTwQIOqz4nA0qC4R9PQ="
+- sxw1jSHz48GlXX2quQxPOuFszF2HfYL0gZww6tQPeQo=
+- EpimO5DcEJffnI0tyv+tGxPNM873Ydree2hBjtR0KA4=
+- zb7O0yMheP4+TDRLT8XuK1c6GepNi8R4nIB1f23Sx/g=
+- kOAzpkCLaRgZAORvOLmgC08W95e2XFZsVMpwp2jvVW4=
+- lfsNu3D4UFsd7fCqG8p1zdGSw5daBPMN6QwmoRVr7MU=
+- F3ynD0Le8SOONtoylHMmPtP+rdFAlMB5oiML4Bk0NvU=
+- UEVWRTxCjhcXIK0DCBIcnfGZO10eoiD7sOXiOHkp5Do=
+- zC627GOLT4BIUXQ4I4QxCFXfTet0M7ghAZLFICk/hxY=
+- rTzsaSA+63BCOp73ZgewRFGoZOhwXmkeH14doA7xcu8=
+- "+PlsTAU64WVhzDVKpJQxp0q6m6v/WliL/4ZdnoZY8q8="
+- qtrxjGOh6XMLiBLfrQW3rY/R3pOGaG/CwfQsTRuvpL4=
+- RKtsiL6DsySC8U8FwRX/Aeu5I/ts4bbCunY3Le6G6aw=
+- RHgjbxVl/Sbbaw6DmSGWgGDWNGs5xkQRTpjw17125ew=
+- CA3F7Qk85K2/MBHrPLSPaN1ITj4IsCC2q8qUMHAHd6g=
+- XMe5YKwcjvwfqeQYRIbsil9Xi9qKCs2Z1qkUcjVXCnI=
+- WUJroIrFOip/YldhbW1WSlb6SCKNZzEIZUD/f2WmocI=
+- EMjGNNQyMpOYN5BVAOi0OqHXX4oyEOY/nXw/3KVTgoA=
+- xFslzrv+iLHl+h/hY1x7ZDXAe7sqWTzurbgBCq0oQqQ=
+- r765G1r0DHtlMScKftPJzewlVASV+W8zHZb5dOQKNNM=
+- i4B6oFBaALPvSeJqKt6OMfzWxwDRo67ulxtJ1z2o6P8=
+- SMqvtoWDk2r9DXinv9cEbSSS+tlPPEhZFfdLtgEoYg0=
+- 8dLG7MIPFY5bsRgObcS+ci52qum9whT7YpqLomFMAYA=
+- 9rFEmDA3due8Exz3LywtHpYy/hW6D6pIPFT8mhdHV7A=
+- zJIAZJThZqOx5SVd6FteYcYlTKtNUaXRmCwtaRLf5CI=
+- 651KlkvIpxRalZbNBfp5+IobkU+HrT66V8ghzbVJJA0=
+- fuytuXqAbUCJddfqG+st7tbr+EH5YhkJUs9Yj9ESIYo=
+- Y4TkDGyAO92unZNI85dHpQPP4u3MLrHL39h+Blz7W/w=
+- nAVjbofyfk9Ot1sFTY+x/L57FyIqDlpNI4NOef5TSUM=
+- szY+l5CEakl2uErSS730aSkrmax6iohkjGF7exbaBYw=
+- cjmTYdpqd1T+yYbcpbfLrxyBCije1KuvVrIQbQbLeLA=
+- 8So4g425f3dnxh05IvoHNlbkB/ANjcczfltdCwCSIdo=
+- L8c8P6XME2Svv9rduxItWDaf3Fg+rlh3gx8Rt6bc2po=
+- 6cEPdSqIc+ymLWbcMWch1dzMtV3QyIvZZxVaqJ6iDsw=
+- Tcbwr7YhRrrOAw4wDmNECtkGIMOF6yPqhZoCOGfG09w=
+- d1RMi5NOm/o0qUnkQ4zWPamSCG3xqN0+zrvWin+ERy8=
+- Ur+3cP9MFT5hoJrzcr9ivBGjKs4WDAYHNjJBUPzLE9Y=
+- GAn3zQx1rPNPVtjBl4K5nGtfzRQSijzHmso4pPlK8/8=
+- G828z/HD064oeQXghQ5q+7VgECdvCppSrh/3h07zVyY=
+- Z0dNx8A8GDZCfYaDgEydct8W4BuqZnjYJKldXW9/Hy0=
+- 4MYdpjoAHPyQRtitUX47jXQPPnXSV3FIvEk8JbQuqmM=
+- 708yiY0AL3u8X2YEuy3PIb1pUxYzbGGvzMZ42pkCo9g=
+- lq4Ph1vZBi1eJjRzWQh3+C1lsWBXHg1DhcZdmj48CB8=
+- B4Y+emohVLqGSnGwgYxe0y94mZQwJUsuJy1GH80NNOs=
+- byK2TsB0SWYqGzOi0Jxn/+/ixvRUVGD6M8dI6WTFJik=
+- QPSj4iaMKnpp5utXb06lMXYkwq0wIgOBpbG6jrN4o/U=
+- cj41NPjifW7UZKK7tHGxgXuzeQj3OnAC8rgMsKPJXos=
+- GVWP5u1aOIvtdRgh8LdU8rhqdqsyH21VaRZPtSPabTo=
+- uFEjvFctlibMrvNbg0pglk/3nd+5lobYiKwFS7ybk7c=
+- c+TFFFbCW6tUWN9xlpPo3Xymsj4hS6LvEUL38psz6ZU=
+- Owz9ZBAFjDgC58AuctOL6Vee3RwoEF0BR24USMTSktE=
+- xkBrBr99eg+CtjfBbAAQAsCFUrSOmgZrcus9pzM+TJE=
+- EXI20LJNWF66WGOVfbZ3foQBkV0UQOYPq+dMPGd8w9s=
+- jgffJhKNinhHTcUlvw8KFq+kk0Th7UIpaS4TsxPeRqg=
+- mcnxGfshq8maOhTPieO0TH3jiS9fyeWMAX+A3gPReII=
+- idi3xJ7tp88Vsl9DsnhhmlP4dqhCtswu1yDz0ylP3Hs=
+- fQ/wbk+Nj2wdq4vzUD1nC3WatUM5uWYW575vNUiuqXQ=
+- fWee9GLxK0PXH3dM9koWGPvnsHQznkVVR5/iXQJ5xiw=
+- W0e7tJ5QgzKXIsskUcNLwIwYmkZqSuQHiTga8gFB2qQ=
+- 7Xk7S8xqMVRGLPCc1XGJuczFLdJqcts6KHiuL/c1D3o=
+- tKM3LAPoObm3QGQcdMTs6DrwCwiz5wloaxSSJTPtwUw=
+- yMw4iZ2aXojWk0uXx4zLGiXZ0UlPbAc8xQOG3h3Wwhs=
+- wjmynV3lHzvWWzlA2NB8NeImGqVMsMjg280Li2R4AxI=
+- Gw+TwohsVyR0J13tqW1Qn5wcMckqiv4Sb3Es6sk98x4=
+- WMJB+X1v1h/JH96KQASdug5AdKMGwZAEDPzSeLXkQSc=
+- SiM9pnxu2d/ZFs1U8PHz5dZ7RCWmeftpomyKeF/s5AA=
+- UFCUXN+ihkbRQOd2X4lWetUvjzWFw37/urWtV12o0BI=
+- YriTCcwN06BiKIwu9/g3cDHua1651BxUu5qTlvQzrG0=
+- a/ZyAMKJAncGcYRiUMMBilWUTDj6G7w2Pb4SphtQiWY=
+- cNtyRB4ccGmMgSUXqpMTK1gwO/ZyqVoCGj4tV76P6oY=
+- 56yCfCewrKoareT1DK0pfZluhix2V9+B9cNZWpDBhUc=
+- Q81Q7t7SQFF/2n+DrCrjkzGthx+dB03rMJ46cXt8bMk=
+- ZhI/ldPtU/8eV26DnE12FifqWeACP2fuSpS5L8jmhFs=
+- A1tsikrurWiG4mJJtCilxV/xj8pqt+1QyHNoNBh0Krc=
+- PDc/SVO4XN6liOBDbBNMgZ9XC3LB23QOs1z8lCuqK84=
+- n0e6SwFxRK0D4Ua5uZVg/Z97jUql8MI//zWceX8QGaI=
+- Hp5Ml8gzOSy8bspKHXw5A0kuQNcS6A78xXcZZ5hw59A=
+- "/IqDwwe8vYjXuEMhNwTlT4+5HMj3BXslrNsG8V6oDoM="
+- myj5QxqbHRljMkQ/u4uh2pkZRcD7RGHlQ0Qi/+ubaps=
+- axLuD8kSyVePIkfPnPYUt3wVeZ4Ao32MVgB3lmzd8nM=
+- 9kufK3Us0sXsnh7kfeDaimqFQjoI0FsmY7VM0l+1opU=
+- NbXzzG/bqnOkQXQSLgeLW3SuvG4eG1JrZK+v5VuwHyE=
+- TTHnXmUJLSiBiY65DODxWGMqSYL2H5QLlHnABol57Zc=
+- 5n9AQJrSCFPos8ZcffufuxRNm50AekOI/5frDwX1K9Q=
+- SKG33JO611iLRgyEKWz+GayMP3LmiFDImo2IMLyDiTg=
+- 6l5MTgholoa2+OChRzFA9UPkJZH7wEQOHh2P2eLSjts=
+- vmfbC7CJA4AU3FspZS9BuyNJd1x5tNO2LNIh3jQc664=
+- 1Codg+Fa1HlqEhAgAsf+01BXeoDv7u3hedi4aMQfxYw=
+- SCWF/2ixtTbyXubHe22AoEfewgHLCnd34IIehCIz2o8=
+- Ws5JgZmekSLlk+y2cxG+m06H6n+X2Aa3gqn4xqwKaAc=
+- 5Nwi0QZ2vD4ddWh4Sjv+QDi3hKJmgoqbkDNCdMVtPc8=
+- s9Uv1LNsklBnWuhCW7Y8JofFHOtgAyQCt+ACrF4vWqQ=
+- bq5p3jRy5rjjlfee6dRnYj4jxVpzW9L30k7xx1ehpUw=
+- tYlMCdH/8ZQez+c68DkoP5ODNK2waKpDfRk9CJbBKDA=
+- PQfYpVSeoHr9b8U7O6YcrkfzotWa6/xe/gPYukJsv3w=
+- RdGzE3YLmfhKeE8bDsfw/oXGqsctbm2Gjb5km6jDJjM=
+- S8i4ywCMg/dVPma042pTu1vlKi/ze+e2EE5NkxVCXEg=
+- ptgYlgxUy1VyN5kWC5vgtetVsfuD5hZBZLO3wKdGr6E=
+- OH7MqLsqnGzfHuJ4HfrIwbagcV9LPHw6VqnPiq9v7kY=
+- 6R+t8k94wIGXKiAVFG6betRja7WiCPVzO1TuRAdoIHg=
+- yhKpJohbgUE7jBpIBB3VNv3k/Nh/m7YsA8GjVedCpOQ=
+- GmfKvdUqbFQzFqDR1vSrkxI5vIdAZYmaBy4XWjfKQZ8=
+- VpGnklzwwJQso/QuoW9OcDpKuzwijG2RPvDGEoxlhUU=
+- 6JEzS1tAV5SOwoQJj6vP7x57MA/WnaZhf+NAfkfTACw=
+- iIscDRwjSiy3DJCK0LUPc4IG+7X8ASqrDOGtLr3UjsM=
+- V1F74rAvuC5tuBLt3q+cbwSxP7rHw0Lv83f13Q7anxw=
+- Cx1E2fX9tCOR2xhMLdg0BaOmiBBVpiqKiedJrnxbT4o=
+- "/gXZkXtSRTK2UfUI0TTThEbLeI3T1+qysTmOVPOwQhw="
+- vih2oaqNz7r8Pl8UWzpXJXU5OgFoY85Z5FaS0oRn5N0=
+- B7OP3x3R3EsWuQzAq0Jg0MQWdtUXaxBRXRylM4jzxRI=
+- 7qHx4HGSLNTrZFfEzosHasxCkdz4b1BRNnmXiaghrF0=
+- 5XoMzrhUesT4kbIeEuPswUyPZfzmfV0oHEZWL4E0Se0=
+- QJr+wt8aNIToGopx55SLSqIN7TWJn8BGgFgQytdGyo4=
+- BwlyXcrujM7qbL/D7cwQG7ig2h1t3vlZq2/P2L2NKyI=
+- qIyzcUN7LpiGbpYp7l8USE3Ygtma6lT8xUwDXK1weXo=
+- fZIEAl0rMpgE8133kwvC/wM8yu9ElF/O7qWrMweyFgA=
+- xSaaiD8an56tHKA84tl77PNqDeWj71OSDbIUSi6UFJU=
+- lJCcXs1fC2TErgFxzWiIkJWF6H9gv4Hx1CEe1rW5a8s=
+- wIe2O29iN5ZWsWFga+QvovPhmEh0vCW4WBHeUplN8ww=
+- 7/MBcQ/hGLJinv1ob8TrunV0NSAuk3/DsdNknkpTtvo=
+- Jl5RWcFp4K0/ayTPWCKneUKaQbSUZcPDLsjQeZN1ReE=
+- TxsUeY9bkWTIKCXrcZs6nItbaBqMuriDr8oUjoOAHBA=
+- KXqrxWu76IUce3sh6HtlrwMiACKFlspYjptbN1LUF2g=
+- Dr/N2SFy9e3xsDw3waD5s5h8MzGZ+oTyooOFT8FsbS0=
+- ZsySkCgmc5pFfhj59J0YEGlJ7RHlG2LaPcHOgkPGg1Q=
+- 7+KUQ2wzHw1jiTCRcuXwPOabHLkQBiQyjP/356ePwRg=
+- KxHcqLj/FaACfBtaX7l8LFTlFbfz2zskx9sq+damouM=
+- ux5lJ6XJXOB3TwL+V6hcmu8Mv7IXT+Uad9VjQI20X9k=
+- 1QxO6ixcKkTyX+J4rYdqQ3QTygqJEd4ckBmrATwwUkc=
+- JOfoyhbaKOyNRsXSnEpC1JZo3qhDwlHxC/Y8yNWU3h4=
+- a3Um54FXBoAsHhNaBWL4t9/kvmCLvbbaxbEK0Tw0RA0=
+- H+gn4lXZ+k0P3xDLLTOsaLE1NJGh/1HKUIwBgI8a2Ic=
+- O90AvF51EJNqKGewUOtH4tUFyKM2y5NnlbUwRGb7kQw=
+- ngtrEjvVPlEnVqL2IQX88d9wfUft1JmLuJb4uUAw1Dc=
+- KC0EmdB4n3dDMY0hCsNpLjPn4fF+ZBq7qoJe0rWUclw=
+- Vp40SU7b+nzNI4liU2pJ4syv1lyf2aCA5loisuFA/rA=
+- 92auT+C9v+6XknA/6vLB9osIIVxNLE912QtQYoyqOTQ=
+- fY8xA2MQMiWCI9wXCvqsxYG0uwBOV0ir/1MMjz2tnVs=
+- DNJiKaPBMmimt4zBtdhl3Jyic9nRHJhA0JGxlv0iwwY=
+- 0t4afg6DQs6Tl27DnNGwec6oee4ZsHp5Jc0/WeMUcHs=
+- w3sc2GVV6Gr774DM3T1b4qJcEHjdHVuC9uPkpBAi/Ig=
+- 5hvjtQap4yzn32KjOpo/7nVCNx9o7yoFnDqHp/uaPKw=
+- dL/8tP5nOhcKc6mrUgWuBgmMc8qyZQzmziu7nCNqDGw=
+- ZmqQmV5EBVrX0rn/L+dt1BW7Dc5JJCko0Iy7v9Wd1l4=
+- 3sX/ZKpa4O0p35D5vE0NxejIA1IhNnLg74iA1rqPv+w=
+- dF/oJxttoQiShlNMd8urtzREL80slKhJTQcQ/uwXieA=
+- k8WIZAAH72VaUQiQ2aRIXbg5PSX/vucn9heMVuQnRdw=
+- PktIT9MOzPSJezHBSqGXWv9y1PWbjEwAZZZxKj9+xEw=
+- VcauYfz2tMMhCAeMmZmu5CoOdsRaWTLdJimMcCdHowE=
+- FSR//Zat64fWnODGLiHiTpMjwvgkdDNLNbBID+UUacQ=
+- 28BUpiZygekoZRwEFSiq4iNo3Un86vN0tIXA+yGBAnc=
+- itIbvRHFjI9J+hJkpfQeutnWdrbzCD2za4mBN6/dJXs=
+- q44Y706+vt3AsxUs6ckAbhT8BSQuP8nOMiRupqlUMHQ=
+- kanvNWMBDqGvkWCD+fsDoRfU0NKml/gjaNofc3Yp9xc=
+- qkqeoD/KwVtfxjyUmsNOew/ReQZxasO45YxZnNxaUvA=
+- 4mTH+XlzcTacgiMKZs5+4GwHlXuGknZSUUAaspQ+zP0=
+- NptBxyvmkojtBvN60868Sq49WRYv8uUHtIZNNvE4bi8=
+- xvj/mC1EQ8QMfCp8JpqfmTS5qN1FzaEVeQgdkemxmPM=
+- SKOaMxFxeYyGbBa3REogt37y/q/7c96chfyZSM0Qois=
+- eYCWRKgw75JCSmYiclK4e737Yzqdqxi6RQwbjTVmXyA=
+- 6tboQVbHKLIsgmTWvyv1uYpTZrAhBG7qCb6p7Q3nIxA=
+- jRfb0oUpLwalQPslKEmHVdD2QrcNOjg9EVjaIoEW5co=
+- 68gERk1Iq4qU78st4mw/JTzl0kI1cJBsHA/TwxjDyYw=
+- uLvW8D54CKDyfaTNZ7Fx9daGFcfmIDxMFtXDKGspdxw=
+- 5GbISM2EHCtdP9OQ0GeDoDxAe038B4bZTO7E9YQPdBw=
+- U4+emfKKx5cmewxJqTZ368QHbtnFNdDI7KU3U7BKt+M=
+- rHvfspVSWdWudQs+YzRoWhO7UUotrwsB51tmw0NFIpI=
+- 75K3eLr+dx6JJFuJ7LwIpEpOFmwGZZkRiB84PURz6U8=
+- 9o4+zac5jVZUq6b4XX/BQs6O69Gip2UGRBf6RJ40CEA=
+- Y2QCZISah8kDVhKdmeoWXjeqX6vB/qRpBt8afKUNtJI=
+- 9u6U7LAU90+Ie53MUtrs9zqz4zMzIMrdmLy1nYlcUvU=
+- nsXb74fbOoNQ77aE9p6gFdj4OTWEPP2bkmeQiMt5sT8=
+- wjFw3YhY+LtccRrdeYGZB/Ya6QbOnN0upb+MWdhjckc=
+- aTDdqNfMY4lpFqgQTc0XaRzyQ0XBbcwQjlKMo8EQXIE=
+- nQxSrnAjFwz4Q32Gg67ukQOJI453krEsCPBPFcMFypo=
+- jOHNQ8WlOtXaDzno8Q+mcJUsSDnFp/MNP3VOkOloBSc=
+- UB1ay0rMBthdH+GXml02to8r7MBpdWFk92P8i9J10PA=
+- z/mGwlDDBsqBfqeAA/IIOwVgDMGd8B0/oq8Vi/uEiuw=
+- a1ZelRWhFBZdiJI0ZW96oV7EVOolyQsdThCb01Y8K6Q=
+- Ofg90xNzIFGlyfC07tzsN1xUO5i7y4/4QEjFz8i4dZk=
+- IvOrvO6k+BAbrmXkkebh1o4mQ2kWpfrg2O0i8oCKIWI=
+- vnQXXLdjfx3+xkwWmZ2sLqxhF17CjpefO/v9HVWFURc=
+- buqLBMaL+v6ZQH23cMInYzKC8JfQDnY9lZn2+LUm5HY=
+- pGejE+jDP93hA+06LDfkrERUJ/zrJI5mtrzBF9nKaDw=
+- ukZ2gvS4wKH090E3zzlZhWnhNpLuoxRrkQftYYiLtJk=
+- PcQ9u84RVaNxRXz7NMWm4uEDaN2bke5zazz2PsTB3V0=
+- bH3YC1vUH2IDmT5jjNM/xt802+Ko5C/grEdA9ikdrQo=
+- THE7ZgQztmjVWwC4f1xkzirVrrlCB9P7/FFjT+7+kIg=
+- dpI68jpx4zojCdJvTlSUueq0wPDEEy0Ax22KvHGwzy0=
+- jTy7dUF+EzbrHS5PDRjfvy4fp76wZBefqc0HuogTgZM=
+- PUhv5byI6bZsGFCbDYsXvcFuXY5Cakr7XjwWx8e+l74=
+- G27ey4LbcbMLWwW+WpSZ1NsT9L3nzO5eT0K4HiXBhgI=
+- Wy5MdmXgrQaxcN+NY5lSVTwqCuGT4KeMG8AopKLblIQ=
+- BFur3NIRiWDoyLjg7PZbc0aG4bGPWHEMlkZ3n0npQq4=
+- sM12t9eCk2LVgbc5wLKVq/UxgnkmCQeLsXqd2Rf/unw=
+- rJKEZqyc9vyJ4I1Z3bbS9ajiUtelDkONE44w2CROGtc=
+- 0R85YXJvA0f7gamHgT1vIdnvZQKyr+EdwTCJSyKNV3A=
+- OEvjR0SpV4poD8EutA6FeDHswubZn4WhbHD+dVTLmNM=
+- B/kXQAttsocXDcDi4e7qnlS+TYIlw2szpMC2l11QBHI=
+- x5jO7668oCOetZnStQ8jhOiZylgiWI1Usyg9oy3MMl4=
+- AClSVwmsiQ71L0fNOxZAs05wLPF25oCB/JhPx0Rm0TI=
+- qEdnNbN6VBo4QCoucDfHni0hf+l4Dl40NHFW72Hv9Cs=
+- '08tD55jidIPog07Y1bM6/wySkrBwZV8grb01pp4ffrw='
+- ggwFdya5WQl/mMiT1s85FO/tU6TCahfGIxxIAEOjbYw=
+- RKIUtLTCil/mV3KlZ/ib9Mf3uC8pL4LuN02Sqcrn6zs=
+- 3qcRGoQG4nz8i/X0nF1AiYQCsLWEsyhfBpFwo2+e7DE=
+- A7L8RRSo5Sc6ETUu5+mxl6wxNh2TIADkDvQSFx3u0oY=
+- j6Gf/g8kfXdLh1m2+10A1l+FVGBndZv82gBtjxyzatU=
+- IUK4ElAxy/bIsvQn6HD/1mXsI5uenCmPE1gmNQ1DEy0=
+- hi14iPjsPUhoCJkbz4Fc8261NVpR0fgdLzMivzZL0+g=
+- N+gBkfaePBRZDSslZfiod3qoNq2yZZjI6HFUw/JPkQo=
+- JUqiSKy0fdZUyj6lP0jCwm1kHSPX4uk6HsViWN92dMQ=
+- so5OkXdzlxvM14YR/9rnd1hhQiLlQlhdqpI9UM1X7XU=
+- "++iKYT85K5cUItzaHM4bm2vv03/vhgyjxf4GZWLW3To="
+- NUQFkO+FRpzD00O5bYgtxa76lJQgjwKI2aqXJ4Vlcc0=
+- kwsMbB1fE9OI0g4FMdRh+bdRbhAsSD2St/fkksdaxaY=
+- 24Sbvz5cgScSSq0OJNS2y1RUd8L7Qs0+4/60ZvoQ0BE=
+- hgVJBRwhli3HUoxok85bd6TBI3NAxsMZ8fkDS/9IINU=
+- a0EeOhAdLd/t9t/TDnZ499AR74smYz/UWElzYwchTbA=
+- j7V6qhkcdSiHkjx4JRnwuuqFk/MFoiQwpzcwZHEVzjE=
+- 0tjgVp4xxUcBVQASH52evgzuOw+14FytzjWLBt+8tcA=
+- PfZUUyla1Nbt/tmaPcmptRSZo7JW1Q+L49eYAcfKFX0=
+- zNFqE176uhhx3bOvLyBE1N2XxduUQPnnqwzmN141QXk=
+- 7weBZFq101DOY7AapxfWKOwX50AgurKh+m8GmCQ82RI=
+- uALzHXB000yJOq0bg8oXoQ8USDRZOTW/7K8Z6QUrkIk=
+- drZPo2UoJa4TSNwhCdPBJ7J97NNL60zwEMMC5ME/t6o=
+- pliB0o8np14mTd2o6HCQXxYlo3cfxqVVHaNcBEE7yM8=
+- J6DWACf0ujN1sFwcpFdUpB4x7uaX0mkgX21/AMN/X+w=
+- "+W2urN2FAYQ8JyKIV8B9gvM6dGO4qoLlc148SkkK3N0="
+- DNVgoRb5chojVxPtJcjZukQ+LH3NdmNXtyBq7FqHnlQ=
+- ZTyKxdlri4fYMDJ+Hp5A6HCxoHNZ1vJZptB1PZKHGU8=
+- zaGOMrD1PB25DlKHuSkOKTAQtxjZAdaWdx3Ez/6Vqt4=
+- MO2Ih72EdRJ1cZsjYsHpK1v9DWXB/3XiSSl9XCxkQTM=
+- 0P8nlOx6+HZKZUsxto0HrsD1GAU/7pYpkXpXgq2c+Dc=
+- Ethl4NMOZqHlCaJjYEIa+FSolNJB02Yuziq/akYVaD4=
+- 617q8qWc6SjgR/oFp3xuHE25K/8Tv3ysDNAgEZyMay8=
+- 27efuLMsHUGVQ1ZmmJeML8s49xBdGsGwp9ZfC7ROyF0=
+- P9hAbGCJZRFnEyR2Pgk5btjgp8AUYLCvT2WriQI1BlQ=
+- yXFlfwx3jD7+tcP7oFqLt7VT3/g+4wi/fWjdt1BK/X0=
+- XthOkQZhowKm86voiL5GdFVVhz+olyo2qy+SDf5ge4I=
+- AnX8oIwhbHeyoSJ4e2SRpnlqspPkCX5dYhYsDtSRDwg=
+- dso9qlkgSDrGRnKSz8fZU2m1RzGVhRjObZCIQyY0CBE=
+- mkU9z2g1gBMkyhI+RJFTvOxRr0FfR2W/Wj9dZPm1WzQ=
+- MzP2vSBki2FmrgoLSguQTW0UPiuO/0AleeQ/RamMSRE=
+- L34upX89v0DwCj2SsUl3iDHNI/OZsdze3lxJVCG2mMA=
+- WF0UrCO42sjNyir09WUfWp0oIz1tdoBhOBlxod95s6Y=
+- PLW3DOusFfVn4X1O0GhiRLKP1wRvJcWpodxVFNqsQao=
+- LgR/o1AfQ+qT2z7ODtKeYnnFaO/MUfBw4lDfSW1C0hQ=
+- U0pKjq/NhImvMjVtWnol+Ixwz+BEhTmnxClkwbiXo1k=
+- lbYfs0wTqYP+v0GGO4ZnmHypCzHF9VmH4gAIipb7cU4=
+- 0IyehenlxKbwGp2W9QYn8reHmPBVhy6Zrip5YFVJdfY=
+- 7c7OrZVxv7nx0RX52wHuks1TuzgE+S1qwzg7y4CIWng=
+- KObpqcWS/GX1RebMBY3kxe1JZ2hlETRrljdD8pAwSkI=
+- CJVCUF1lnOy7mIu1zP9bzPhb4t+owiE1kHmu4lMSmLs=
+- 2yzBgvuzhWkbcvOliMenSmRNO8ljRPJxB2u7ED/f4rI=
+- NhuQSydhSBjwCxRqOfaEGJnVVGg0X16MhCuM+ljzvdE=
+- K4Zem99JRO0nB5N6NgV5beCdXjGoS+JjclPwWO5svAA=
+- jj9oVeGPRNCTCRckzVkh7ffiFUbIYhnFDHrYXAu/rOM=
+- uqnbM092T9IfkBjegnAUAKw8XbOJDRWTKlzTF4ZKjpo=
+- 5keoMIcJlYtC77I3fqEo31fKf245fUgzGPB7Yx9Vx9A=
+- iwQwg7qbrmO3kRl2BhH9Aet/tie4VMisRwCc+7dzEOY=
+- sQmj9k+S7pFGXlQob9X3N2N7l2eF3JS6CzrT73JKjbU=
+- r56Bi1ZwnuA7o+UfnYEo5xQcMDm20jk9x7tJgvNhHB0=
+- R7Wl+GdnJXBviAXDMEvd57zwiMF7BC6kE/em8HdLP+o=
+- 4Nm0E0Xa0FE48RxGyeMMzapn49G28NaBTmnNmBybOhA=
+- LAkL2xLwUc/ZESHHPGlYQVhAlnOWqDVKy7Pm9izF+Ac=
+- 7rTGuE0EftsfC7F2/PqE8z24reJWrI8kQ6YcoYcqDe0=
+- ejDXgxDyNYlqNoWJIXb+Ptar4GyTzOkE6XbiUINldD0=
+- J3R2ibr5kDyarmnYKpXo3PQlTGSMoT5Mn/Sa2x5Ua7Y=
+- ZC7jUIEZT+3I6swfmgY+XMQOHNG4KGk8G73GVSva6z0=
+- 1+StfaTmfXIxWyso0r3VBQjIxjmV5yv4NhBpgZEnkGM=
+- e6hLV9so3NN1euE+4cWtd6GUrkVXXnJJG9zYEYur4PQ=
+- nsuQgdms/1GN+mIDa2zRNA4r+XetmdJra08o9NGBjbc=
+- DYfcSz+KIY5FNEtWszL83q8MFTbCmfA9f/bNpgVVxss=
+- QuRL5Up7xXRP+OK2olrcTSIgnFDhFsBsY68P420P7Nc=
+- 0yLiYjZWX8jGUOeCYrVF7yeOvrJqpLD1K/sCyqUyz7I=
+- 6uQriYjboec2TD6jYAawHHTNW61LiL+zxfnjguMEzvg=
+- qATd5cAAoSD8MTn7TE4z/WfknwQGbFt09Dle4QeF5+4=
+- wNuQ8p9Q1lll+LtguH6Y3EXqc6FGaz7CN/zg+QTvyoU=
+- DUtJblt1+K7W1FnOqmx1TG2HjbbHQ051pHMj2r538Bo=
+- G4cpA3Wg8Y0UxXrvWhfRSBpN+Ar2plUM1r33M1QrHaw=
+- 7qWf0b3GMUUh+gg1dqfqoFdbxml2ymSk54mEG4MzqoE=
+- PL4/41MQer0sd4WIExIGQDPPSxKu5w4Ahny1PCyAAoo=
+- Sp29OLIGJZtrQX/gf/ieBZyKVM+n9B9szaPCIzNPqTY=
+- hFrY+lp3yBMvfbaxNzj1NyXoBPPmUr5a7l8r9SlT3tw=
+- YMXlg95j1/oLWhpHErtdFEomS0sXz82RJ95LeN4K5fs=
+- VBiBQiOIOjIm9Vj4rMVdRJfMxChvnwTK4+Ahod3gSm8=
+- "/mfF8WCrS+YlMbFOJfoxm2OhrJsKdGqo34bSzd7bCzU="
+- dGJDFneXrwX1h78lwtyEdPYhlq2NOY6VhW5ihLhYa7o=
+- JOJb7fr/yJTRRaWY+VIXW7a4hTxOI/NHuKrM5/HE0RA=
+- 0uKdsNQlHJgTlwGE5xbN56asCj4BxBUnskEeQ9RgG3I=
+- clVE3pb6fjjnweORHXl3D23heMUtS4dwKtgg9f5+E1w=
+- 0hVoXFZbf+QGuIbE172dUfxbUtstnA5xU4JEk6f1wGI=
+- t/IkGarPDq6VY4wp90ENg+0aITrgrzN6lT9+5OaIz1w=
+- RWHgiNud7T1LKfsNe0LjMt0w+OZ1XtgbHJDUa/8kKmQ=
+- uv/fN6pdOWHHe6YxXc2DaCOiDq2Xhp1CMngN+OQ2nxM=
+- uRapChc8SLHVAax2NVK7mM0YxlwoVJVeRinCD0y3ZXk=
+- FD50xuGOP6c0F/dztFomC0DhywpNHOnHrykyz0GK7jU=
+- 68mMHvzisYJVF406GbMmXTEIeKkwp41L02t8xrxKcxI=
+- ShiYcW72d5b8yAx0JsT4dtOY3ifaXHOjrM9CXkKn9BI=
+- cxqACbfjrufECgpgDtPTl33ChiC760lPM8J6WTeTklo=
+- s3c0tDtXQgILvFPjOj+ceKYoTLKMiB2YghLJQkhBplY=
+- LjT9gr05FWHiLclqOqIuViBiuEe/ivu1sI3sIQ7TMYY=
+- bzkt7Y4STfKEjPfYECtyzygSxS62nf+2G3cMghoGAjQ=
+- s+O2TjUHmbmAq0IN6WaNgfoN16nXo1Mri9TRin4quqs=
+- tWtbUZvFHV4lO1hK07s1N4ZsJ79JMni3eAvGqMA740U=
+- 9q5lTkEtB5ShXPgkzwfseGCas8Wx4isk2HMUJ3zxQjQ=
+- Pon6G1RKeEUvQ8nJABE8UE+sHKCADph8sNjyYSgo4oA=
+- pPUFE3PZSSacmUCDVDLt9cHcnOYwEXzHnuWVa4wKK+k=
+- IPNJBscDeuUwpoJ43QIkAuyYfgVeC4s/HV0I0RIxlMc=
+- 5FalgUsQ0pH48yKpVGSlK7pFSgypvIrla0TYJoCd4BA=
+- JA3V48kJdr2yBJKcWo3eEKXaF7pUTNSFqKDXnP8czY8=
+- SZcGJ++K7ocMdzV9yszNPj7wZ/DtJe6YJl1xdri91bs=
+- JDfJ6662sTIB+DtH/WiFsvPtdgk+fePDbLKFtsBzeao=
+- QAlNCm+ovkD/2SenGyj7jGt2B5lrofiyqjgWt2Ig5Ug=
+- HyrE8xAPCIuI2/OS7HScUDb7Pj/60HEfE9qY5FReMSg=
+- ti07R5UH3MGh6lDOzu4rX0Igd/xa5/p/BGPHjMsrqcc=
+- 3Oehf5v/Sqfv6/MsOzoIIDO+fl8QMUM/EvR+ElKvwwM=
+- QF5gO0aYToWjBwHrx6bXV7+YjGR53ED7Q0QsUmnooqk=
+- MC//+FIzF2eOK0WfYqaoJaW/QSPMyPISd+SGkFBBmcE=
+- vduQsOe3Exw+MVkUwTl26j261S0a5iaffDXgns3DX4U=
+- LMVv3iup0lsHOOuqYli/mYTp0rP0fG9FepqlxiS4QL4=
+- R2Z+essAyorOyP2Mf7+qT0IiPqJwXiGi2KFE4VFfXnM=
+- S2S484gT4DM9u1Yg5mft+iVlMzrgetH107k1d5alDR0=
+- H8Svc0YljyyXx59pi9hqfZZ7+Kq0kenmK+N+RmPcJdE=
+- FB9hxMgRDrw2EW1obyXz8jcZiGHDfVta1kZehN8KlZ4=
+- 7T/TjdIGRY0L6U6pTd4OZKQovdSUqzLspLm+ZVOvIIg=
+- 2EZfM1RW1dgXEiC1J7wCkGvmGpxaFzRKBpDwiuG5LpA=
+- 7inrSoclZ4J4rEOc96v9KoSc3HN4prYxYBe4HFHXIOc=
+- B6YbOVnrCxkvx4C8urL22TUD/CQii6yPmGHiM+BM1t8=
+- Tq/ccwUquznEplT2gHDeJUcmz+ltX234xZDIMco8CZ0=
+- 9BVwj9+9yj0CbZUueCq2P4eSdw6mTitRtmqqZywei4k=
+- 6GXAnHVtqtL8yUJPtdOBi1Z+Ho6YfIDBD3sQD+26+1I=
+- yQ4JfkbbGTHC+zwPX7Xx3y8qoB4/bZQ1D2YvbbF8S8s=
+- PrykA+bQSApKNKnm9EErVHOD03qnDZyf+CWJjYs027w=
+- UOaWginCXkYKdWGhBYDVm4CyPtBAWU3LLVD2nUlsmhM=
+- ykFv9LteFao6jpox3mxHKM7xbE8Ya3iREi/wtMM7oOA=
+- ANQS7Y3MLVRPFt9nT2xIVshd0xOCyBdrcgTeL0x1bwc=
+- lY7Vbju4aumPu+hfcxSYqMnF/r4Wk84RlEgc+WVk9mw=
+- V1rSXAZ/kJVREKH9KjT5Nbkg1kzWfkgsx+592Pj6CgQ=
+- gos7+2ekbEFzzGQadw42+txAkqdTEL5q6CnwmJMSLbk=
+- yQRvejetDqfO5zNVmE+lQomC+LN8j3vOyR96xxp80QQ=
+- tqA6BLh43sqcGRPb2WBDL0GHgMaQcuNOlJxKlR+6k7U=
+- DD+TtMAAG5S56pRRDPNqVvUysloAtRNITTOXFV/4ZAU=
+- kFYu6WP8Hzmns5oZvB436XqxShWfFENXILHkPosE+m4=
+- Quhz82lNVM3Jkre7u/NVijk3JkOcxQy6mKHTbjbwFMs=
+- qD8GqUzaeZkC+Dt7pYWg08povs8x7PIbAPVnHjKmjfM=
+- n8yjWvNhNxBL8b2AYQydzm/w9j0+/zjEquPCWnzpxyY=
+- ME+ndAkB8eRYbmEeWeTRAK/zzQch7NGtyWbyacjFiRU=
+- rI+NiAPNZV2HpSL/eE1W9KUi0/aF9XatXiAwd2wymQw=
+- 8cQl3812u3XeK6gyyAvR8hY8xzXGgLy7Vx5ISQnq01w=
+- kV8g8gMSwo5jFu9FxDPy0ejP+eXE1fUiM2hC/xE8oYw=
+- 4op+83sQbCTLsK51Du3wELGtXwR+fIPb/gsUVOQEsy8=
+- ShBqfkiizxYnQ58+NVx1AnDoPxTgUPYGsPEratOdhAU=
+- aXwx1cHEKecMPluneEGcUTFJnahSRN+v0AQK7mw59pg=
+- OL4qncFOHc+api4xIHKcv7s+4Hjrh7zCv2vnt+dO+64=
+- SC9YogAJh2hXIfB9u788aeaB4oXAk8nvw9camxgZPm8=
+- UpbB+h25wagFoq+/4nQOzlYY2u8zBmJIjBVW7AI8Xtg=
+- zwpahWQL9ueBQH4KBIDdoeJZjxmDOPIM2YOQSU/i990=
+- ERjx7g3bBPAkHAyGM19io6OjsJXTOXcTEuAjE5nwvaU=
+- aVY0dZDCqCDDYwLRTqpjczTjxAvFAv0nACKZB08nNVQ=
+- 9hy0IoHs7QyHsj1abLpW9InbKqIMJ4zvH3LuaHc7S+M=
+- D5p5rNYg7KSRST6fA+ITfTqLoWFaOVMBDRz7h26yRx4=
+- ChHvPFHmJpzhOpp6qfTuvj/pnhx47JgZ23/X7LjaI48=
+- 93C+Q6xjzR0lruud7EjTUHs03QRaD7IKGFMVvVsGWbM=
+- ueo2xrHEvUhaKTZh8vlhstP7UDnpTg9hbuU2ULjQoa4=
+- tcC31kBpuQqDSlErjFTqSk8+z/j6aqrrXKj3HogdBYw=
+- 8W+sjYj7UPSEsVWctfCH5VAcT5wczJ9x4SNUexjntTY=
+- "+hA4BPoel3elS2Bp7lcNm39VK99UI5CsAOTJpSeZT+E="
+- UafAlY6HZVk0Fyy584FU+/PYaExLm8v2RGwrzrbVZus=
+- jIW2Y55i4QuDMKi4gwBLQ8EZBT19YrUSqYx36waWJ6c=
+- Tlw1KEmVcOS3+KU4GTJ5oj70pXahmTgZxNDL+a6r7do=
+- dYbe6cP/Yg7fOJvtxj7YpyMXledKThjzlae+I1j6Z6w=
+- iRlaMaE2JHnHZgSOvDTxjU/An/H0fMJDAbdsR91p4qs=
+- TvlUrYYjEe3eecITTWYng8XG/DAIB1iX1DSN6cZRz6k=
+- yi8gaeoMbkZYIi4G+N1jllnLteZ8u7pnNLwzSjeZvGg=
+- nH9yzRDZQ2xoFp5l33u5ePyivR+K0g7fspJ29xJBg9w=
+- XtduYxGLryTtWN5RnqYhxINj9hYfrAYSxjj6SihHUBM=
+- 0T/FRyGMRcgcpuEG4UwjeK575BzgMkAC8kznVS7xl0c=
+- HOrrxlfsrXlxqRaGlkyVweYdjtSphHlS9KUHq+9RzLk=
+- rMNvGibjk7zkiGNdhn0hKMRMzBGDzIDwCZU3OiIiqFA=
+- OTgymKbEPfxOMKhft3AYbaZLMclo4s3pjJ1IlZddlKU=
+- 9HXrarHLNfzJlKVXSFsZAk77EqbDeAK3z+Z0fzJVdmQ=
+- xCQlx7Y8DZKpSZkSMIWXQQkCH4e1JzXHY+bJ4khCBNI=
+- xUBAtLBAE6MOeKsmCZKfZpaeGvzC4dPgLRcWe5xFcYw=
+- dFCRQgpaJfJAEfKVD/GQ2HV4Kb7ELmZySyxR+0Tq32M=
+- 3/kDiDw/F7hKwadYj5mmGOyMtElXeo82gYo66ny8jHc=
+- S+XJi3utaTcYztkTGEmwnXVAuaGE2/dg35z7vgZ0Exw=
+- c42PQ7EoslxcNPCdwmOPSynAjDJJdV1peaZXuZtAoPg=
+- 6RqrEZliWauL0y0Kr7yD5uzyU4YI2c/55X3QhAdzz3k=
+- u6YsJ6vkKEZSYHOwUPN7x+jyfLeLbNOjUzf98sY1Fgg=
+- hYnGOwlDpiv9qbNdzMcaMPVnc4b298ZEwzB0Zc4s+lU=
+- MvkKD+b2Gv3y11t0jMBqkL2HkY+bAt6pCpbmz9gjUSY=
+- IFSDGO9BJswFHgrtF0LEhJHMdukfK0b4Br7UfSwRFjk=
+- DPfHbhZO4GPVmrPJLr87p/rxX23qbamCYLUyacDaXzs=
+- IPNcuCyUdwSeBi8zf6uIRbxby3JuWfj6R6joRqnaXFA=
+- 7D0AISJQ+5ldCMWgaS/rw/7bJDKB6z3v5F+j+/mSwj8=
+- i1G5oV0Ggehz0GTLqHbcsvd5lGfvLhNYsYpf1JI4hW8=
+- PUgQsUsiBu6u/vUQRLAfeEJSvvac6mNIrt7F2YsLaH0=
+- ZWxPW73Fro6nxq3reBg9PATzm8VLKFRpow3NPMMoqe4=
+- 03dNDRk0p72cAKJG6rbBcfxdHjWoBKEMf9u9xbwThpg=
+- M5IwaDQJ8jyKKzlO7TA8y8XN4bF28pdwkA/DdgjCQ7I=
+- 7ovKuzYIFABhVNP5zYuEwQxC/WOa8L2Jl9EY+ZU4EFQ=
+- 7xMlCSU7wMlnP5IqWp5L/LMM7UkzGL3npV6kLUkAn5E=
+- VpZiW6xAnWRAnB/IInWovuxwI/El0WphWxVAWqeZqzw=
+- ax5bbzYVYCwj4jJGR5W+j+nMmQmV3tLoK5N3ODdEEUE=
+- DIMVFRxYDjFwfCaLfQjL40YQRSWBwXSnKP6Wp7X2yzk=
+- eLcXPPPAIOskCOC3MnuEy/n4IyUlKlWKxFqTHiWJ0fc=
+- OaEQuxh+BghDcl37AAdcyWi81iGFhJsOGJ1TA6QLVtw=
+- kuY0jxTrEE2VMptZktr2bioBZ6ER01ArJf71obUo6F8=
+- ol53ObkDntzsY88ARALn6cBpLNQgGBF27V8m9IVTuHE=
+- onp9dJ5Te9O0IHl0V0d9nkc8LsXft4eu3kYE4CUYPu4=
+- mO+HZ3HeySJ4xzjDE0RwmgWeQSfBGfeMrF41OHTnw7w=
+- AuU3eiEQdQTunl4lk6l5StgbIBtY4Qzsx8V1Ev1EgUc=
+- RFWszyKrhPfJYlYwKjkayjXqHW2VlBxWewg9l7a9wso=
+- t8A+NLiehBrEfJhGItaxG10brS6EkdrpFzBIKA5MK4Q=
+- qbnrnLjw27bgyYsJNNLW27Fk2E/aLTJwJikPJAL6ErA=
+- RZIJLhBhx+qFryrtGUYhzBeidiuuM6eb+M4z/QFouAE=
+- 73E6Ixn+zKbXsp+R2TA3RNIQov5LM7Hr0kCvpgUx6+A=
+- zy6Xo43sQECQEpOY8QkpfdxRi0fmghVTKdRUrn4F7Gs=
+- uuroYJmcsHCsW5qmUxJ6GCVw/Hbh7prZzKUvbHBUtd8=
+- G4XTrrC0xmBgZ2P3MbSQJc2EPnzE0iNJ6suokXRf2YM=
+- qEiof+xFjx9hoxf/H6trJGT2dw3MrtAhes8iQFdUrcw=
+- 37LFcXArlXmP+fh/b1Q2+eqpoLaQeuIs71+APJCrcfY=
+- MC0mJzzr7UyVAHfqk/z6GloIhwnbSRBF2ZS5BnsDnMc=
+- "+CGpCvHFfSccR1Az72LrZcL4gGrCQdtlamXvcD4GJZs="
+- HCdkijfLrwPEnV3VTjV03kCczRLGPwAgylAeJwheAMM=
+- ZlNbe1TkYe+1JUd32MfNs4wpU0jEgj2c7R+I+ZfFklA=
+- 1AWI6ClS+8Bcje27Qdk8O5DH/Exyb2jPmjNITVJMwgw=
+- TdaMLI9S2EFsMeZJNDqgmInhM9lKqabl3sM3cGUYlh0=
+- vLwAw+gfaklIBhfI35VzAJnXkYGT0haKKZOQrkHxRi8=
+- pAGAnyl6Z4Lt2LnI6pEc1FAikjecBsHw1+hsvyTTEQk=
+- YVjjia16NlSHQvlhDHIcn1dYD3n3KXBW2b38yOFXFNI=
+- IEZW0OdRkYnrqhvE5Y8U+7ujJQ1WSpEl33oodYe+5lA=
+- utsC5czRvmEjsDaO0gdGw6YzKovyvc9stfZbK80q7hQ=
+- xNYlX+N3ZMir4MQ/qfK5oZYTi46HPs7cAPNCT5p3VYw=
+- WL5qrEW/ncDiAcweSVkQK1uRAtvFcuiE4M6Bt05fPS4=
+- 9jisiIbvojNg0TMHPZKsZTTuzT9w6LpAFEHzTEdxWfM=
+- R7LSC+fM/oPizJPodtm+IubWA52Joi86euPdu3+F/8I=
+- Kdqgm1owAi9HWK8dVk5eZs7CxcchU2g6CozQCGpamDE=
+- qI2eeP1zvj06eHEPa/rmW/aQBTGo1/lvIzLGkqvdQn0=
+- R3WgD63XlUCvxe+XiBTJK7yh2Wf18oXrtZEjennPnZo=
+- u/XaYM2cIpRYf/8+m1K9avBw6yMoZr9jE2QjMP4zp6g=
+- Gi9v9Esq1FNIpVszj3pQsIkyuFZ7+MiqsqCrmP9Ww/s=
+- REl6tsnpSz7llvtTLkmiWRHurwtaXOh2Xl/+06Td8DA=
+- Wi93pCHDvdpu7Rb7lVZ7DpUH4DU0RaxKEQLDERFElT0=
+- d4sJ5JkJ2VQrj2jP3gMCfds4IAG/yTsySt4GhOdFSc4=
+- "/UXrzOZ6CUG2F/TMbc3r1S1ZQB9YdAftMBFgSHZaroM="
+- fU3ZQre3IImmgb1QvyRXobgebqW5vPFs/5fWOfcLB+0=
+- Ppz4CYMgH2jd3322tBrZ0yAlnen7y+VZ9WcajMeYauQ=
+- XkyYFNzI6NyqsY6m7dtwoyWuPhHR+x5jnVVwPB33Yrw=
+- "+qkGGMR6oDHGLzc/yeyZHp3D9pkNCZNTzxvoxJPpbLo="
+- HrJEwshi0dB0urEqp1kFynWnXnhVaeqsdwFaWCPqLFk=
+- W6oIJKjcSJxgfUlcgdPfu2ZfyKySNVkprAwpox33+7E=
+- 9t44t62ncK3580hQpTo2t2jvTVPdLd7/jA4wyRsEC8Q=
+- x974PZtOJfXAqkSnMv+ph4berdgsS+wj+hkdHuchWaE=
+- QI1OqmRE5eaXXJmCMnWvBHXjDil3YaWZGZrCRsYZN0o=
+- dZ5JjaP4nP+lu2fLB4uTsLUo+gln6y0g/zzGIEOEV+k=
+- GNvawA+CSiw8W3f8ZNKKdBMzQpIEK9Ou7gCjgp/+H10=
+- K4llJ/nqyB+lvOF947vR5d8gJuhqKPC3TvIhyCDbQAI=
+- BaNyAavcYLqKr1ajmZeKUicSxUWI48fXo6JfSBmcx9Y=
+- G+Wh7kRqHPpp1nGOPx0ZJ+5+vta3GjYKchIv6IKsYDQ=
+- zt4zOw/yxTF8C3Aw229G/9JNLS8vuW9Jypdpz0s+Fa0=
+- DMEptITpDcZ+cyyRCpeG2dc2ZqNTWe66aZCCQxmOhGc=
+- oenOubBWpOPodCHUa5cec9jDx1G9DOruNIltXGMaC9Y=
+- B8fvQKnnkRTK9YUi2MEkKFiUx71dDbwa1P8yt+omnw4=
+- 3Pyh0dqUofXPnjXB1OC9XYOviNNDOVlDwOSL80FF6Fo=
+- BZ0fZJYjK+/NP/1Wp0GXupwhoWW6d4za1WLBQqwXhZA=
+- lQey2qBBnX5XsuSk3H7rWig3HFB+1qD/YNPJTaQh/1A=
+- L1BG0hmwMUPdzKDr5UdezDrAQiTbFRzCFcTzueq2hZg=
+- 1RvOI9UhZKtT03eTkPi50zmNII5MbSoup5KvPsrdtzo=
+- wzf30hPJwNZwgG4/hFoXaoCKUK67TTdIjuPsrLaZpZY=
+- ePYyhuFVab7bX8nxYPdsJGgVyyH7gsgnK0afsPbzMxg=
+- 8ErU0o4ZohHNHys52Bjsekg2JFlZMhdn3vtFrNo2GBE=
+- unpuIguOR0bO4a4LrEcmpIisWgBe9HQ/jGEdAKxzd1M=
+- aUOMPejen6mUt+WkOCLQK77LNLhL3iWUElK4kMAzQVY=
+- G9j8dRIgpIa8DOXzfeUTKEKT/2hcuPT5Nryjddo+ktI=
+- 7W4QS5CyHE3wgCfnpTU1T29+zrOCIEfJdKayGJJmCG8=
+- U5u0Pv5z3AGA+eE5WZAEYnBZG17fIakxVCd+hPjDPCY=
+- iaq43q+eYUv7PAwusiJ/C75iykmXMmE2seP//6TTSFY=
+- wo0d+kPkva6OyMyc9byBtJqYuvgU3Kx2P0kRrMrzFbA=
+- 6obIrd1Phj/e/UpPxVPcGpLfUAjENSBS6a7rsmxBA8o=
+- 8GiguxtEmQ6rZCN0h9IUbqkAfFrPkfjx/tQxMwE8xas=
+- FEyaB5/FhkHgQPBpZIR1eKLSpzprsZbK8K7twRZIfqA=
+- FQ6yMF0iQJ9x9SD9PwdZHOdNDHp+J5+UpteL3nEPE2c=
+- Js7VfsSqaSosVqtZ19NJ05og7nzF7KGM48VnxVVK/1M=
+- 8mA/oUy8hXn7j/2pxurHOTzIju2wpMu8qLDMVfOd72Y=
+- RjW40fDykyngdiRrks7SFvkPw70DOwwOrw910fcDhgc=
+- oOWNj7fY3UQzCxpVuhkAQ+kxYXVG1sBsS+9MLnczFkI=
+- JwLkxKPe7+exqqREwgx9P57x0q7Ou8bUgFKNngmPdyI=
+- s1scSQRk5q3Xm4n6hi9Nae3v0H96VLsuaapG9tIZa2s=
+- NDaaGOVFp0e6tab0osoXsDMDwH6jeGfjyLMopnrISZg=
+- V82aO75QP5skbnmKENhxDAhZ470JDJr9xknpv4bN+1U=
+- dnl7kG3qG/hyWiVazT5uost5LRIvHBgKcD/VPTpSa/M=
+- 2kDH+uwQGU6C/vKcOpQfDEBdzlaG0BJ7midG0/0ICDU=
+- 1HA/2tZdKRZVQ/Ugl0IZpzasr0wSaopxmLjsZKFQdq4=
+- 0uLwgg362K/r9YoC0eFnzE+iED2Ox/JgWINWGULTl0I=
+- Py3miAb1HyVHEQwGXR8FcqmrciZdbEa6cTmzGKZXabY=
+- 3wD5aTd/fOVrrUhcCFgYy83h+J9E9atj+kdUu7jBVJM=
+- 0iY7N3LZWfYz7pmnwSBBh26wMJ+/kVexiLUsYe9Zopc=
+- qSpeKViVMOM1iyTfMzpfVw9kkDOjfkJAp0nTcA02hf8=
+- WWZhmHL8HyP0teFXBP4EY4LBQH0cV0fUUxPSh8F1bek=
+- HVAHRwbTbsrsnYdchgQQB79B/x+97p020QGiws1Hj3Q=
+- a40rHPfmcaft6Ms9PU9RjgxOTJUv1rt9q1csvzwCeeE=
+- 47s24pCbC3bgW6A6tl/3985Uou9nNSj/p2zVgYFZBzA=
+- WIolfp8GtvzIhl6W686MkOKqXQGKx5XxcwgiE9JyP/Y=
+- pzapNfkL54OxLEQrVgtbyZGT28gSemS5HnEWzssQkiQ=
+- tM918FL+uLNyGKW8riBw5MjyQFYqRIsFSJxcNFftGWI=
+- NdxPy1iHRA16FjZnkENTwo/P7i1njo00Z4Tw9YNznS8=
+- VIobtJ8WU1ooLnhZQGSvdpQGmYHnV5uLtHsED5MpNIc=
+- FxXNHhLQ9UrqKOo+JgpZg3l02UBhfzJ5BR/b6qc2Mtw=
+- 7UVJxxT/vbpVgLqUalsMuOCpAsx0Swb8rtD6B07zxqY=
+- 8pNZgJLqS9p4U8nOOuEVxaKTlKSdJ5XSysjQzDHZueo=
+- zZupDfNELk7qN+whmnaVYpWfNvQGRgPogALqQm7AoRo=
+- bQKB+vC0c/yRUU6qcZjUC/Yn9Y0MuouqL6V2h+V/m2A=
+- An1gZi0SXeZm+KhNNvvJKxnv6fH2Arkqi0AYW0RGHsM=
+- WB3Nx1ets6uK0lQXSvgBf/3057myoC2lJNbzo1T9kdw=
+- 2t8WjWicy3P5/2DqplUHA0H4KbGnnJJ7GSG5CRecvBk=
+- E/vgelJgQ6NZpGUOZIuueoMHpKC/FY9Y61I256muDqA=
+- h8srspeWtxW876kpxoFvzoOiICZVYqcCx3Y6vff+d7s=
+- wA+wsjvz0QUzfNPywu+bxTzDkfm2ACeAbZ55UJQkW9k=
+- wFnZ9bWa8cKDIB+LI/OwwvF+5rJu779kC151QuC+clI=
+- ArgDMMBuP9SssCA6ZRrNi8yEeO8EvAp/L4OYLIIH9+s=
+- dsSRbruHU0LQBLqIH6TKzYAMKzpPn6I2Ioooxf8NAqQ=
+- Ma3rinvPde5Bdx+ymtLfbzkOWrmGIw+BYguat7K35ak=
+- aehxOy2DOh3y3nLriNz79RD2fOc2NXbiSQCjP217vN4=
+- 4LI2pYBCA0K3v6fCtjDfifOGNRGpKmymv/4X+l/EN1I=
+- pcx/iKSIvsaFCGn0Eazucm2YR8UiZ4P3Hd5ExkltY9w=
+- RWQ/y+l4TT3CtRnVKbw5Wn87WoWK4Foj5HXYQSHlNiI=
+- JULFpd9Nt7iJzCIssHc5wHuTNVaeYYudSQIaDY26EjA=
+- gFBvmp4R6f3ThqEVhN76/odm2vdXlhCUOIyrXHFJf1o=
+- CBG2xcMbBClrD4yHKus/5yiBL90ldhW+ym2oiYkg5ac=
+- ClEAsxtVIF+hkty/f2fJwmSevb97YcgaBwADa7A5eZg=
+- 0oLq2KcpfghsMf0wQNd6YS67F091PTdT18vMVr2lg5U=
+- Ir4q9d294bVc7ISVQUkDMXRXwdioah8BOaeftUOQDGs=
+- KMsBffyZBzqhtHwbMPQT4853TEmR60FY3lD527NtgEM=
+- mw66gYRw2Z3qW8ooUxKQHdkWJdtXZOkJJwPyVtO8cZw=
+- 0BmQCL7dyrfYlde0OpJxypx7Yi0hxkdwbu6WdWJ5hzM=
+- HnbrfnXnbI65A65qUDVo2iqPS5byI5w2xJARRoErZDE=
+- q/2unzWDT9YOOD7c4Hy3nbbllFVUE7gV3DotDva+vhk=
+- ltZn0JgSNxcilp1mEDOr/kyXzpAtarFcXJIt4Wbs2Zc=
+- FvyeckYRajM5dnFbTsIzmHUthXSwOCnAd4I5/WFSaNE=
+- 7699wzVfO5LmtyFK9zSDq2WXt4WOrlwwhrfaYQTG6ck=
+- n6kM0pi/rvobpKX7YxyszOp0g/S6QqyXFP8gbjKyjQc=
+- IiALApFHN7oOewZMva3Gig8su6F8ufwkXu4gVyo/Gvs=
+- EKuMt9h9SN/GDiw70Lo3955lioVbuI4wbCL6QivqKwE=
+- vK3ckM0mgavz0VZrJNdnsx4E98EGEXz5Lr8WE9TMi+g=
+- mEfEfB3tI61wJ08w89WehiPvMjaPtfCcA/PTstfKDrw=
+- muLIedS/KkuNXm357drLbhXxTwkcRJzcSnEExsJ0LFk=
+- CYRkdfVBfi7vBWES/eiGgMfQqKnyoHA+GAx94s7ju6I=
+- hVVUd/iu18krZj3vNHEkvFCtayjATuZ73MEA2lI4HvY=
+- xnKzQriupeTy6zG0vamtAjcBdhzObV2rLZ7J6nbOsZE=
+- VqKXlMWZCdjOYca/xNVEjQ9rHNeC/1oKYd9HbY7VUTg=
+- OlOxes1gdyJt9VrXU7nFNXVzR0FvXoNuLkFZWyPJgd4=
+- vNRRLmpzZ3QRKCvm6iCHVX/XOdZX3JZFqhpvO6EcFPU=
+- 4WYWZL8UXBuFSanxH3koeouj3YbP2U01XmBhf/o9gpA=
+- DrZD/TpvsQ46p4nOFHWfy61GKFrhWlBfKn/Ct1QOcDo=
+- XeWRfMM0I1a0sVyXEQY0J6oTUai4PYtRVsKShxgYcco=
+- RTXFm7yWum/nQmxh0A2DGt5L6fczAfGLMd0bA3CTRfk=
+- 3J4kc++D74Qy0Odaxk+5WG62+OmHfE/k8xAmjNQNidM=
+- yrvt51oJTe7zxEPgfX1wKaKw+Jznax5Po9GTGkJ0Eog=
+- 7hOgYrPK7iZawWcYZ76hEOwKxz9k7oVvqmN+NjWN2tA=
+- p/MxDIZLzRueJV7Q2TN5wxlt8w6HyDVyw+aIIXuxiU4=
+- JfOutR8cx4TZ0LzBZr2Hb4BnjVUow+XbDmJ6OZGrj+o=
+- XHc7Iup502eziBDn6a0QhkbtYuIxhozvsLEoDqiKxPA=
+- jHwL0pF8mL7yqR9RMwKfmPFnsbUK7ypGBvBiRZhiLv0=
+- j7YsyGr7EGwFhRiCLegqM9JCzizleIyo5Sfsiok+HA0=
+- "+FgukFNMiQbGSVnXkKRlGMnl8hFZLF+DlKmTCmDaEBc="
+- DcTb71CP2cMJonhD/2VUJehIgnguAMLvNLV4W8D2g1E=
+- iRSGWs5SIkBq8zmJHRKO89klVzC6iTEAmwgF7dWLehA=
+- inE/9axwDLpM2+5xWhu2vJR8+y+AoI0TzSGexLbWfR8=
+- TRpHGNuM0Ifpt/y2gpFl4ROOknr5guLgSy+rcxcGVzI=
+- mLUvU6kcsLA0ED06lHzkcVUu9KLVju6mlWnRVVKYX5g=
+- n9gndl4/2B6rBkDMy7MtVTUGk3S1IzLzMov1FLb1vMQ=
+- Zuzdkka6VUwV9rlhxx+/wkCyXUNP/iEcRSw4B5uCMk0=
+- 07ncz3ZIrZlfgtTKhivbvmHAQ5dHIINxXEMirSA7fXY=
+- DRMO0ID2eTAzbQhSJJJid3vdX6QFAtD86au2Q+bZrgI=
+- GtBdrxRufa22yzRfsc1YDXSRKrnvqOZiPCcscOlKQjo=
+- h/ZRXxxgKFgVoAoApQ9xdOyb2puLAMmgD1tuJdLQn6I=
+- U7xlipAulO7magSb81AI1hsNnrbTA4l9L/R41qmXsZg=
+- xkW4MaSwAI6+MoXKL7rst8f/PsscwMBbCrbkl/5Op8I=
+- uKb88iMeeVcroFrCS0kf1DR4jVa8695fUy12+Xr11yY=
+- "/44/ROq5zt3NwV/RndEbaTScZx33VzslIzRt+u+v19A="
+- SvI0cYSuVJ9B9ftlKULSYZS6JN0jOwS7I2pbmP/h9Bk=
+- tcdVqqsQOLPVYnu95/R8qAxfXASBxtM/BBOdB6oVMOc=
+- DbLB2rEWQcwiTXUiObX6qk5xiDt3n1FWuMxOPXDHrUI=
+- JTDV5+VIiRSfj51gSeJsn2PA3laH0PFFMs9FhJPeWmw=
+- N2U0rztlrBdPUyy4Y+TMH92FWxUYiMe5cwOM5EX7f6k=
+- xhGW8WvBs1XtyA9KXtWYw6AygT1BVpxLrJ674h4KZPM=
+- EhvfJNg3sQ0zdCP1vR+ofpnQg/dB5ybOndJkwPkvq6I=
+- "/l375a8JPxHYeXy3kYMwp9hntF9rtR2dkG1pK3WwsaQ="
+- gKEMrwdJIWr86KBaUuQx+IGc4vO81jE7H16D29bCUzI=
+- tJx/wO7gm5w2hcuK0KjiiG2O5d0fRM4AqKMgrsu5OM4=
+- Pw7uTsN1WVzi0G7KLLVWeK5L345A6jurK012edaJhO4=
+- "/4GMtJ1h5054Hg708FA9pG4CMo1MAAwg3NL5y6I4obc="
+- ecvcQ2rOaJhpgRCJDKVwQK2p+6fg+xXNDR1V2VZYtt4=
+- QMEr2cPhW0eZmu2h3Tvz7K13BJbOx6CrFiRvheyjZss=
+- 3y9j7uJH2OkHteWmhV/SuD5vxQzSSDUpxob9la5bZsQ=
+- 9o8GJ8P8uCUMEMhn4F06Trkl6PHYSWpWMWtpQ8YICzc=
+- 0KmDRMWOS4QYJb4lW0OV7yMZzzPVXVMBieyBHMvTWpI=
+- ngfxz2Rs08jmUOW0MjA+VcDPeajGVUgJo5qT38PIQjE=
+- KAMY96Rv1CvfCg/zHZH8HBZr4t7A0c1sBD8psLXRiEc=
+- L9b+PGfQorjRt/2s09jPSGMbfdQMBcrnXfy2n+jU0LA=
+- G4IVHlXotdQxqIlvmT38NAlo3/HB6k1T5xmCr62apgA=
+- 2i2PxIJMsymqfVQR8Z4A+ErmphMcGtPq266ndJrGkGU=
+- 3HxAL+2h3DhfBPOw5NleQ8quU5PhsyhvjQqmMmjcaJo=
+- r2eL7JOYwOBNq8y/gntdCZ96xJk7ErN69JZNiDiXeB8=
+- a1vGzc0XEPSRjLai4h3Al8dAK4J3u2eVHIauXWJjb3M=
+- tSfE7bTl9XIBtsqkkrp+Eb5nsX23D2+nkbaT5Y8mzL0=
+- KEkUn+wDBAltOY3fbmFfXgoM8pIExIGJXNQ6OmBVuII=
+- zQGllS1YmJF6KV6htUoi4fYqo6ig2DTm5sYl1YRpYZc=
+- wvbu/c09wZFB/mZeJx8KEe5jNO9I/k9BG+zQlMbwTVk=
+- Q2zTcMzUPWDX/G5JHFXE1MZZkepOanfvG+ek9vyoC2g=
+- beTKYqzhQ7oRgsYiVvw+sWG+tYLi3wmBBoAV6GCyoK0=
+- cq3H3DpicOFAoYo0R6+FoR0J+pLlwZ0cU0EkGRJElA8=
+- cPPitSHUgRDsvLSKPzDLFyH9WQOR+8IxyumTaekwtnQ=
+- MQUXQeRij/lgLwrpurgBSUm8XD0IYssXzqJJ3iGXEGc=
+- xayqPSUBjBATSu1BtTIqj2kmdytibZ529Yhv7sIqPkQ=
+- oD0uleWHdGCEf9Nnw3iJtG87wz1UC+b4OkmPuHXx9Zo=
+- 0pVGVeKbJog4XuP3M7RwB48JRUFAVsN15+003Ld6Na0=
+- ZGoWfcyL6NmsBcul8ld9JPJBNughx/LWAy4Gmr/v6a4=
+- 148kELff39j7rHa3NSkgUh9e9bctpKWp5DW3MKmi5YM=
+- 0PLQbfrV2188Gl9BmHvu7aFmhrhQw9Y72ESlKntTPh8=
+- q/NMqTzP2XzOfkcD3ODeppaepQrgHSKW1+sQqiVqOQk=
+- g2XcsMISrzYA5hUrmxGWEAJFtVIvOGsCkOh8tnmH4uk=
+- Eg2f7UIuSGB9EfjyMxVjjBiKRih7FoB03u3/LLoUp44=
+- 5eGpTJLy/RZFE3LUTk+aIYEhRpJsscYFdypiUfxjfCs=
+- g9nLW1t0Yvxb3Z2osIxQgQOP6v+YzIr8ZWm8cW2tb8I=
+- daSq3M/QP9kjkMkzLkYfTfSRhBZ2F7AjkPESanBIkQ8=
+- R4iRFbGcrT6gCwKp+Y1i145UpjDUOTS502GZvz+fRAE=
+- GUuNDXkyaNH8maJw5wu97HPCEB/Huj1B0g0PMcwn4Uo=
+- F1TnBu7P4XkUBpM7tMbGMctUek2vZ1lCs/vRdBn4eBI=
+- KAjl2nHGgnfMZx3/Ty7+Tn3cgEbVzpcbvNZwr2OQGFI=
+- sbU5m/YuyuBja/5gqLhGQTWAjMr+fXZMyesRJwYOWJE=
+- ogr/EG/gEdXdaW47cQUgD/dDMe646GW7gOvYKxJmWgc=
+- BLRHeDr+W/1LSOjbBnE3MZUmqY4CnDeyVZFUzszBBn4=
+- xMkhZfXLwAGKb42h8fSg9HUnBJWcsULEzHCsMHDiVrU=
+- cvEGrMJod12iiyHrZ0eb1lr0E1wk2ZnNlGC4MncqPiI=
+- efRGKUS5SF37XVDGSLw7TJgvMK9WAQOURF5uSVD1OIk=
+- C/XfO810khhpDfdB6y9+JAcRReJfIkXuQFf5a1+lO2k=
+- ljheuCj18viAh/M2Qw1ToOy5sQo3Fid166DhhbJY5+w=
+- 6tFVjJl2XJZ9v3Y5IHa01OKgsXqigVws2ZryHjsGqU4=
+- Pa8wZOaZSDwiXRVbIru37lw2dc9dEgo+NcxM4oxumH0=
+- WHcPdS5Xk9MFyNM2opxIOKx17voUQ8+VUO+GKNbBy50=
+- U8Zyf+lhcPXrjaxNZEAEBaZFYJJoEt45D4kFsMSBIcI=
+- lhpruKBhbMEqna29Dk15NKGOGiR+SFQLSCZcxKolWK4=
+- XfVYEzXvewZkXcLr9QIfcVVcw2tHRHCqnTyZqp2fjaU=
+- 8nbfKlphGqrlwQEkjk6ROUpgxkT3JiFsWD0YRRChRsw=
+- PXX5YkmdLzhr+Zfe2mYZuk3TVmmqhALiWUAZmHc9nII=
+- 3jbITuPoriTiuCZkAMwCQTQMetNiT6ghgQSuypasclE=
+- viyc4XJ4yTEYU903aeOUzeAEJYsj4e2CqaGMD+gwIxk=
+- AaaTjTfUeyM/TEqFPn7adNfpN+PBEO0BGqGLcTXOzTA=
+- N5DWE/+AtKV5qXAVqFYysHgDn3gxwY/7dGi5HYKzpms=
+- YLFTaqPoFeCAzNBSMB/1wuaQXkKAm54/Cv5e8TeUV2s=
+- CfxGpPloeqsSIVIYx257t0satryqiMfNa2q91AYbsX4=
+- h5pNdtl4+3ouvPOQ7XV2ALdOXfKKDmST2qiAcLUFXOQ=
+- fiX6VfczR7DAp92qGX+Hzww/CcoxNNqhLOFXAEBjJyY=
+- dScSC7tWpaQaYoaiGEjyM9StLMgO2HW2iika1KhvfPI=
+- i0y56S1LWunyi5QrUUYBqlLAYmOGuEPffqh6dqXkYgo=
+- pV+kHdgWQxEOymOmGlf3KAtfFc1REDz9D25Gyq9vv4w=
+- QxNqaz3Kxi9/flBl+DD1WrBeYBQefaT2cdHahuInWlc=
+- F8e0mntcB+G95+bBzYK1tuNi6My/GQNJFBk0+YrWYdI=
+- VafugmVZUL6wE8Gz7sEJJ+i1Elvx70iyDZgbt+hTMK4=
+- duxVK+r5yCMu5icDNKscl6AcqHgCtejQIwZNpJ1tI8I=
+- GeiL+dbqf2uei1FsWwawdp08pfNj6KvmtmulYGA0+Lc=
+- igsQKqYQRSiU+Hk7fvivCTKVDKCsE9hnHoZOEVALJlw=
+- yMOLnIc0XXOBU9d4sz7EK/E8XNLQn3xRtfeclfim1/k=
+- f9BvDiph/sS5P89434dZ5eTiotovWmJ8+tJLgBQW67s=
+- QPWYzHZVDSkEO0ziNKXkoPLllRoRO67Cgx+R1SDz20o=
+- y14PrHXJIa4CSH+tMMjQph7rPWx5MSb6bjCduFTNOqE=
+- NfkVZqaHwLN0ZjBI/G6rnPegUT6PCWzfHKK6aYb6jyM=
+- sQj9+Me2vdTmam4+LV3TY2RWgx+tMP2mio+CHu7gJxQ=
+- OldFoF+H3e4dtoshfcBDv6IG0ceqod0KfddrhSpzNZc=
+- HO5G7VT6BfPPBKop6EXSA+g+Xe/7GJ6EFVfkLdlILdo=
+- Xk/467X+hNjHlozsCMleCDxe3xIFSx0usa7QUeYELDM=
+- L19s5a4wtUql187RulZpgrqzS6KBSlHOGGXSwtiBXNQ=
+- NqoVqI56s2CEy2hFf6VzHA7Xaz29OHFGH3xWuPfAbls=
+- ibAKLt9tXVUuD6HSfDNW0mMoIqZ89U81CEqzFNNr7OE=
+- hOvBuseHn4pz6t6EDFF1R0hG7HHBSeaWQ+318Usn8SI=
+- gdBv6RZh61WIurCtRz+GDf1D8RUmpbQ3L7Qdwk6HsIE=
+- RqKBzTVJitbgswNZtXixxiIwaVcqFlmYQiDfp345Fyc=
+- Xzs7YUlXEAh8TYOylv48Z1qzkGFYN9UfJyvnDrIsAGA=
+- 29zwG/Us6sGFo+DXuFGZf/kLxm3kdSF1YtcfJwU4Rqs=
+- Q0b/kvW1deqrZz69fycjq722amsVeBMp52XzEGiMoOk=
+- CfunlD4irC7aJjOBPe8QWkvU1AIPNcmiPsFF38dSEdk=
+- J+7Pl/MN1M+uk2ilBjDyy8ctjOowySdZm7N2edluPtA=
+- Cmcki5rgZGhRiX0JmB/5QicOcXPN8s8epWH0U4UpHUk=
+- lY1RYCu/vRiyoIS6hIqCfCmVK/7xcMk2QZsJIplMBYk=
+- XVpwoteIeYNNs1g/jSdVguzgbq542w1ADdpaCJV8YHQ=
+- jG6W96tqApTKyoqWDZZMnC+7ijf1yniOD8gCvmvC9CU=
+- OV8pEHMcUI/e2C2C/1GUUUqCK6HIJtrSG7+bLT9xYHU=
+- qQogc3TSmnRnNjMBVgemtjbvyvBiZ6XOXJCvE9HKgTI=
+- xcCIEy5q2/MNT+Muk3q8mSMhKLZqt5lAr1gfx1YQ+HQ=
+- dlrZ9MfmLjHn0M3m8l5xMEEWx99si9RSBjdvgl/48Ps=
+- xALRO0qhpq6Wlxtob7wL3R/thz7L77D9AdV4ce4AFAc=
+- rPRUiJeNn/RR4wUZTl3YVFK3b3XtbKIjlCzUBp7VLaA=
+- dDBWFrK8FsBvGQNMqdsZ0qpJ1s9ctIGg0OtqnE2mXA4=
+- qR8Mwk/2i9cYDXSICxloayllxI3rAtve8twDY4ieWIM=
+- YXA0wi22ijplKa6RDR3FqlzaYjDRdzQLyU9m6XQLtIA=
+- zmQoco+Kw0lNDQVfjl/01s3wtEdWFS77M8+K+QAl9BE=
+- KUOlZ7wFvGbKYgHbxfAL7D93SkexuUKJoq6OeYNMIaU=
+- 5b32k2ZKg6dCeEuVyqWGkQwGFmzs5JNa9BRpifJui/g=
+- KjM0nn5gaorS4w48hFIfk3dFDPCQg+Fi4KmxSAzg+XI=
+- wbWboMVuayF9/dDeWeQHGFaFF8B2oBLE6jS6hn8IxeI=
+- zTQNGlxBUd6i+35Sqz8nrr+aQTX0UG1NbgMInwZumdI=
+- nt10Ev5l/wi9cfNOODq0NVt9HEavBXMYC1I/vzhA+Oc=
+- 3mJ4q57RKSyICemFIA720212rXEvdnRWE34SLN8H6DU=
+- AVAA9LWM5AIPzYDf5PuxXzmoZNd9BCM7uKCvSPoVG5g=
+- 8fpdbCZCbzfnPBw28I3YmhFyElMa3FnyIdi3C4HQVG0=
+- wryCnylRk5dfDLRpYkbigyiDjhUzKeK45D3iOwgALr8=
+- oYrE5vvT/AJKB6Idr7rDfYKMqKBKDjTzaPHsVODU//s=
+- MZuuKP5OZFwKywPY6ocCsz4Z0t5y3UhXO/1ePJyS5wo=
+- 9YfU1YZgYTgDnmT1ieysyzdepWOtwhoI+xaeZakZUks=
+- Q5CHSC0h1XWEttGibMnjhE7XXDbzPA95UgQqsEErJAU=
+- uWibRuBNqPHqKvFrsZhqc40G9UjzXZR72WRUBgeRjsQ=
+- WMax0yZT6Co63AT+E8AZJd/EFZ1J5eEaR+QBHB5/seE=
+- nI9aSnd55qgX7Q7P+7vPWTo1NwAkKHSDUDinn5Hcyuw=
+- BJWfqIEJNagJgYe3HSJ5tpPz0GbOrjq3I2dbvA/NxsI=
+- 71Ks4JDMxpDDEF9IPavlIcfhgcxnCNrnm9hFKPYYugk=
+- uCK7k5Bam9izoMCBaMQnaWQ2z4vzftSrjr9BoHZC7Rw=
+- n4Cl4UAXzMBasMkEx5KRWo4TSpfrwvWjx7yfew8hVQk=
+- P1wLX5wybnlopT/lIdtUbxaNUYSUmNUSHDothe6nQGA=
+- bu37ltcnrdR7ycEXCELh8JnukoDSIZ0x4rEaNwJu3sE=
+- yF9nuoAmDF+rvqJEJrg0qZTV4NjF457MXOG/cF6Lp5s=
+- KSniL0ixxnyiPYhx3YHM5BLhy0QQikaKsKv4jb98cyE=
+- BRkl0D/Y3LMKK4pawM+cos3gOOOEz5MeiqjK9X35GC0=
+- AM/kbSur0zPR2z+cH7PZ1sPVP9f+TPIGNQWm5abeOZc=
+- FQNDQxztVdO+VodW5FRTuO6tXdBv6PqPYs6uCX3S8h0=
+- rZsHArxBhJmx8vtO6j+H6arySusxXxK3ndLp76qb2iA=
+- ALR3dSD7HfrYomHcwE3JLhgN0DbxUZx2r3Mhpw4+aJg=
+- ZKgTa+2BMSE0YK8ziXLUt3UNcXZXzRAKFNOUjitGv48=
+- BbtDKkv21IRoYvT5igWaeo59RLnXCmDfN0//fPMXwK4=
+- s4KCJXicYbysWEKkwFnFWjOP4+RJ9G4pwmKj/pas0r0=
+- uclQZA4bN0DpisuT5mnGV2b2Zw3RYJupH/QQUrpIxvM=
+- IOfC6Jgn6Co+e0108wwtwu8WDsPwiUoX+5TXjtfDrZg=
+- PqRWtLPf7ytklsCZY6F3JJm+QNxwicsAe7QSWCYvQ0Y=
+- okVv8GHEnHGDFfaOD1QlKkoWAMnsLSbXefS3tgMe4EM=
+- 8kq8NLE/redugFeZ9xGH2mzZC5ysNzrmXtV/FDvWZOU=
+- Rchr/8uR1RnyUSzNcSs2NwOOYPl7uRGS/4vZHck7dnU=
+- vqfwiHW7MRzo38Y781oButo7B+0hg8HCHzkt0H5sz1M=
+- F0F+v+Blom5P4Cuf5F2x5pBcG2FSW5SK+U8c0nPYFBI=
+- Cx2/8nFKWozq1ygmKmYKWJUHLuykXB9WnSY2UnqQyWU=
+- THPWx311WcdCNgyr9b4Wc/qbjkvCqd15G8VE2Ft9YF4=
+- 4SuC0djXDxqEBPdRntEXjUKlFMuwvukAoWUOUM87ZYY=
+- eJuZ6SpLPbX40ngcXO/zGQU1Bm7QUO0QSZwFbosM0P8=
+- uNqCpJXm6lgvcW9yxwCVm7F275gfzinPBH1Zg6jEZuw=
+- XmEOa02CHgNaeGZjLT6rlI1Zx+9RVdbDQ2/lYAjBjCA=
+- U6YMlDbZ8UTgWs9Nf+EJGyH1To+gO8abGBZj4W+BseA=
+- r1f5ohtYO4Z0Qn70AeIih/R3T5VOXv942W0XOi82sQ8=
+- X1DdcnTv5CkRF6CJd5SFzkNTRT8JVgQ2lc8Ji8dqpRE=
+- tMTY0b+3vA63L65MsBvIKyGahhtuuNw2paJ3sGIZ3ts=
+- yK3kXtZPpO6NqfkHLwa9w7jlyqX62cW0gAwyd+z8I2k=
+- OLh7ENCNjCNGmHLxiAFwAz9Mp3yxBWO9RNcehXuACPQ=
+- 88iAEqyD7mQtqZvNnWPPbV6N6idrrjBl/03t/83CDGM=
+- AvUUgvVypHC0O7Jq6XkVlYufLCi++sypK9JBfDZpNCE=
+- aXRV7E0InvOvlwt8gRJqUUm+2FRf6qlOYtbbChEb6cI=
+- sCVvDvTfttJ81poboHEApjGv48p7yf49micWGgCPJnQ=
+- ggbSLwQ3gRCOaco7dLJoqC+h+rY+olgRXj7eG1IcAp0=
+- BMzGdEVf6ANTEhdiTLZxakWqSPxhBs031DQbh+ZXLsg=
+- H0VOjOjXxIchT6YzHXJMktfwYHFtIclrGWhTJTCcEqU=
+- jFyufA3QqcZrBBBr+XEAA8Gqekvjw9QhExVJSfRFJm4=
+- SsH1rv2bAl06+V7gRR3fQdu9FXt/vYppURyyHzaBGVc=
+- xrPlEC8mjRemBWJyCr62JbDTOYKJ9G9Rhh8bqzBV6J0=
+- BiXlv6Eeh7Qp8HaBu9/4u2fZcSA5uNjzYpoR3RmUIDk=
+- 5jgYAZH7pQ3jRvUBg9swG21DqKI+pIgqmDGVuQkdpnY=
+- pievSUPD4nEyghcFl8DHltzGjBIHIOMTBmOcNhvUMU4=
+- JWahjNHqxf4WGURD/gGjVA4mH9xppvDHm21S2VzXadQ=
+- hGFbGnvXaRLSnEQy8Rg7+iijQCzkIdcjZGhY8P2ywIg=
+- povzsv7VxcRK54xgykxYvf+AXyG/csxieyFRURziISA=
+- zFcSmkVJUZavuICjhhqr8hi0Aoz9NxeBb5PYxdmY7Ck=
+- BTQUFSSxh7VA05nmddxKDkYR3iM8DCPIyUZwD2YUdmI=
+- UPSAl+PloVZRJIuK40IQakqNamYlV5HCh+8MqjBLUdc=
+- x+QCJY7jlfiuCAm0kFEv1GVDuYuTgHex1Va6t1lub0Y=
+- ACX3VwTw15qux1kZbwDAXvIH3uDmeG9ySyWyNO+rQTw=
+- FIZKaiPe/JBdWOi8IXuTvBdveEI8IXXcCByrEPo5UrU=
+- 53O7XZAmqgmeeQzY79dN0XesDwLT2TFF/Q3WA1WkylA=
+- "+VK3S2CDVUgirrbwgrHptkb1bROF4tvzItSX8iccYuU="
+- F0y3USFJbSrd1m4SdRCtLIRJZ6g/9SofIva1t8uJSgc=
+- dy8P4bJuR0HAyfTno/o3W3AZWbu8bKRhBb1E5+PcjFA=
+- W0BicumJsVwMyCHTn0ifHiMMZVej4CFrFWtoEI1B+yg=
+- 8+rFbqRkeV88ziYxg5we272V85oy4HQsHsent4XZgYw=
+- trkBAlXOQK+ihKSLKa1dTGSneW3YmWztemWEnbQIieI=
+- lc5w2e3j8A8uSGemPQehI1N4NiDGE1VGg7afMEC/fgU=
+- kJzeSic+Xur4LVvZ9AiO0z2O5CGmTvczthZmL5oiBu4=
+- 4AD0D8Ts8DYHnBtrldfAMxudUUHdeb90vMqtoE+XTpw=
+- WLqjxUr1IfhwOQ8hJLa+MuaXiX1daTgY+BkvMFOJfy8=
+- ruEnHrbwwE9Oiif9hrC3ZXyqJvoWAT7Pd256kFGLX9I=
+- 9fHOjyXXgH5YMyxLwHRmjN120f54wWQVnsZ63XsADFk=
+- LLOAnuPteqGt2m9QT9jurqLGUFR3SyzpT0CwErf2I2M=
+- iukC3QkROqnw8CMqqGeaY+i5cSZij9+nd6N6M9zcrzM=
+- MABfVs8vTUTnLlb8VVIblmsEHyYjxfyluSivwRsH68E=
+- oLCk+dV4fpR2z0FuUq1I3MsVfmkK2yctos81inccX4E=
+- 2GyGUbeUuvqlNJb7uaGdFDOQimqVEWHY6vCIitnDyMg=
+- XpKG2oJhoV0rJVY95Cf9qlFe9/iOAPd2y6+t7R1MWvM=
+- GUgovfg4oaIVWiscpXmshsVsbMtS2XV6BgdxaAAN/+I=
+- boClvx9uFl9lllB2KQphY4394PKXJHTXO5VKEJYqOS8=
+- ZseC6PlbqVjyitquV2xComPCRJr0FvuERJm+9/1BstA=
+- S7XtUuVkSAwOtExkZjPABK6+fTIbPy0FywIK6ZRjMUg=
+- Z9cQpZCgbHaDbgzddbZEwnt26Z50MA1p8dhXlCoZKuY=
+- MfYed/JXnf3HFzgZTNejGi4/UGcUcORyREVOXt/WRl0=
+- q4ueArMmbwPJZw13vWKups8W94dN8xvizVZudkH57Xs=
+- 2EqaaysP6ubtu+KW2iFfMHmGhjxi9OpfMzBpDp48s8Q=
+- LVQ7vBK39q/nsOyyBTRgZzS54XbXR/Y6Js9B4mcQjKM=
+- hFul5BLQFB/X0pwIdiX5FF9f79+/KOW2FfgH3z2R0R4=
+- tLt/I2riTXJtpoFTw6XbsHlYQ1SO7A/CMZq1AF0dlvE=
+- WeIPaUVi2gmQIFjJ9G14lbcVO+WthLpqmNp5h/lXc88=
+- 23rZUDNuvS9VVjrZGMx5SvC07boDC1GBKproE1YT0Jc=
+- AKa3LUCJrHWyn9S9mWlgtTWMnW9knhx70PJYdWv8nKA=
+- 6NXRuQ/7Ld7K+xXNR9jfhv4nMDaKmupnsZje7xk2a08=
+- egGt6kuKEISnrr1/MlYIDDGjATqlrXY4rdITbW8+U3E=
+- SpxT3tKaDXrtzBa2yoTeDPVQO2loPqkT6Sn+eExXRTc=
+- AktMLyeSL87f08WZyfESiErfjDI2qTNbUfjR2hWhuAQ=
+- dMK2isGtlHhiZySCxlcsFMGjt5Dts7sZKlHtNjkjQKk=
+- gXSgXU4m0GMSLRGRl9PRV7SG+4EHRlBKzq0QOCDjbmE=
+- ssN+0ZpdJ2kaodYXeamHYF28A0jEJDR/R9axpzuNrso=
+- y3mwKyCv/xhwTJqd7bZQ2X47A1A2GIasIOht7GKOxyU=
+- ZbyGf2j/0cq3ct9CUr4mZILJ7FWHsU2x3/mtxdtBQMQ=
+- sowizQRQlXWNMz8a6vy2pkVZ3FD2sRZ3zpajBpgXQt0=
+- GmhC/8tou7wraZhowKnIDgbfrAV3VY4lSrh8yO1341c=
+- Mwh3HLGxntqRM02M0JEHkcFQI7CWkuu7SlIBIk7GBgg=
+- DW/924eX2oeDLEFQW/p4iJvRDKnQZ5vO6q1YxSyN7HI=
+- vOKWbAsNhTJ5Vr5K47oaAsYa6nwLLZqut19WvndUaMQ=
+- NieZllxQbLhkQO2IqPL4rDnt25EeCBkZOG+3mW+UR1Q=
+- W9etsCRGMbVEqF39SOkUK20f2rGQcRT5LV+KJ5ULAro=
+- lqHbeEqaxyFda7IA2ZhE0g3b9/WGha/GJkdpkIG1ra8=
+- c0duOCYxd3m4+ccgnHZPQ4GakBujezTnty+dy550r/o=
+- 4/O246ClDYsT/wjJNLqDyLcNoziYI+kGIwTXCIEx0lY=
+- 5xTMsjpRqEcOhAPaOEjmYnYvEQwg1AqAvHPjZh21Y3A=
+- ghooAgWqUo1pdvU6dnZSiqGa54/iDhizNkzWBO0XOTw=
+- KwqMI0u5U08mR93H/Ib1mZZRNXs1nw4TnQp5I4jraiU=
+- gNqfiAiVF2oKevCpG2HhIhiWQoHH23SxQHT65jwU+G0=
+- O02i4o6+C8Kw0wSX5HSKR2gWXFWLBzpquhXVffglPqo=
+- Vi1KukzBeDQJzDJ5bDsCQ7tnaMxV5RxN06fmXLVcJIo=
+- pe5w8VIlI/Gwo/SPTmGmNwi37OlOkfB5hjYq4rSNg18=
+- d7kOfpl4Olx/QuSQVCbvei+e1n1y536aYIh6KzDca8U=
+- 2vzOTH7UN4f5EVWkr0hVGFsAAldScQKAAElXNvIAWSU=
+- sQ5kJ4AuoKuWjzul1n5Pn5Ol7Q223eFvXcWtFw+8lnU=
+- NbbQqqrjnMWs3o89R/1q11lOUHxdebnxF4xbKO5fiVk=
+- pgOXSuSzZwbNBO7AnVvb7MXvjieWIrwB0g2C/akvXZc=
+- N+ctVHhL6TPdRtckD0eeCN/2qALq5dWEdNRvJK7tDe0=
+- VvSuNWOEfAlCWwS7epD+GPy8AiU9/CAf+KQPk+NR4Lw=
+- oDZHVaOKh7oZ57ohtmYFHx04fLj7va/zgjyiqVJAk7w=
+- GmvU2dedwKebU3lccNM0n6njiWij+++/6Hg++x0raqw=
+- DeBeRbnfM5UcWczuYuw/ONYfDa8Yf1aVmanv1unnH+U=
+- 6aL00OHwGxzWk+hpUe7MRCneQlkJqOUDjqCA+xWMP5I=
+- M0idJJt52Iq41QikRbpiYhX8juQdcHZxiEwHO97QAac=
+- "/Kx2tLLJmN780qBVtOrbD6jXktL1mZb+oJLfJRIcVHw="
+- XspIkdryrKvkqVgUvZYBQ9ZRsH/HLtqDEGBp9gAVyVg=
+- OTQsxB15mapFqJc1T//gZ1fOm+y612MsgL2iN75Peo8=
+- 5JozIW0YzfmJfIRb0g8DcvEkA3vgxXZj+VfCrySInLw=
+- xfIKZ50BTd1tNgg93b5hwV1lJhO4j8z9vPbXjYc4ZtY=
+- 1LRYZNnW+r/FaNdPJsNaur3iEFM316+aZgXhxWyJGqY=
+- yCB57ISiX9HvRjmEncnQm/WhUbhofRdiWY0g/u6KCAw=
+- hN4TaFZYV/gXAJDo1e7qk3JRK46k5yJPikI+CpswGXg=
+- GAPGoz0mk8kRS7poAiEDpKu1uKuwj+ELmAcv180G/0k=
+- zK2zRuJhCAictff+1JVxZDgSLGRYD2ZNk1/RNCprVQk=
+- EH3c6tVgdUHrfWMLEOFzy3rlPamI7r0PfDa6gUL1C2I=
+- qalaY6QuP93u6ZQhYEQf0aMle+RX8z81vlLgwZ1FkKs=
+- 97EVCfTWdcPETw3TfKgwuwLoz6WPBMRig8S/y9zh/0U=
+- 1SR1upSSpx7FB2KjoDtzrZR3K7GkToEudSMHIebUUf8=
+- voUAQsD8uza6xTjHZd0dqTWByNgejB3T7zfCqDpWYXE=
+- C2fGSk6WQOeNOWPaAEq1D6OFKG299p5dquH+xL0sMuQ=
+- "/U5+geH6BfUZ5K8f5mYjolSx+7XHKUVU73ZgkW320a4="
+- vFs/4y4jxPl+6jfjny+5gjx4DEurih2xSWaurGyyhKI=
+- hJXlcFP9D0kPNwnb58ZSjec7yQWN8MKw4wqMa70rDrU=
+- iXsxIHLC+yiDhol/rgh6PZQmjo1NMgGCthnle+YRsYE=
+- 3RDWGrjZ+qfYSoSPAazSYebSLNpAZXvwrJJTwDwJGkM=
+- CgqAt0wzuXB7KeLT6EPqC9woubIXd5EIb8wuRNYGMiU=
+- JSfVzuKuhuyA2IcHmKQ+aoe9JLoORAe7tv2zbeVYnso=
+- z6P0R6apfUGhWbRH3/mwP6HqGiH9XPKBvVCqXymhWC0=
+- yQvA9tN994p45a8Mmfbe2nTFKw+f94NB3MrxXdvXGS8=
+- dU33Tg97FUvQOM011nVM/q+axTf5nnIQu8d2kEiDO6E=
+- ocqf+O6EqydI9OWbgb+fB+/T0qv1ImcGKV1aACHWR1I=
+- 3vq7g3Z7aK3B15l3N5fRF+j5efvPvRw08mb75HFvR2M=
+- WjJBCFCKaUR3dj33Y0xmpxlqdN9u91jFKpH+UvhfCVc=
+- 6lWVzeiNgj1BEKLa+gKRtSsKW3lAnPShID4RDBIwJrg=
+- PFvbpOgyGUe0uw/I4UybmU9N5SAfHwEVyaROhLSI0dU=
+- hGBzcd5JKmbdFRT/sp7jAkMr2XQeZr0lyTKLS/PGSwk=
+- yrGOXAzfeiLLq/2eBrGmHaYbQXT9POVdN/ieySPZRao=
+- BNvdF3sky/AfvWFSZTi/68hFW2IjsBIlAgdoUq45M8E=
+- xNMI9vIKvk5rDyiZCP2Dzvl6H4myWZPgYS80PyVG5BU=
+- nlonFPd8ZmfPjcz1FygKFdUKoPsTk+FoSLUL9r6b0pI=
+- Vp0P+VO83+Tx5NMZcGOjXs1RThtnVUwP34QqPg4i3lU=
+- iPWd5IczXZjI+xsI3e5hXWRM3krK2KTRG5Zd+sFCJuo=
+- rebKXADuIFZLT+trZrbxRawNvlrBZjdPqdumAvsddT4=
+- 8dET+cCAkBJwGUYCvd86OnBuTm3T7cVl4oY+M6nBG30=
+- ivv9uNvli5UXHATB2Gg9Mpr/wX8/UMSWKSFMB1II5CY=
+- ra+d7G/ew8UlIiy6yVn2ow1dljzjpV3FknkIHTapCuo=
+- hNxrXW40ISRBZcTJQpam2S/vRBHJDYqhZ0AOCGNMa58=
+- SH5CDJ3rPIb7Do2R/bnHdleBHsJx0qC9+HV8dRU5Pv8=
+- UdW4SXohf56S5BY8Hd+x5HeFYuFZccQzFaapJdg8DiU=
+- GZHtdg8tzOvVCQ4+wGAI9KfdoZWyyf5LmAGYG4U75NY=
+- uA2k0pUOlW80yn6l5jmXmTtEqCDNoxRjuZPWXRdYt/Y=
+- wo7MTsbDw6i8GiK28Pc3rwE1flmDlJvPmNRhcFuEnYQ=
+- ZfKprgtD9CjlPmdKDf3WbL6zdUVdZtUorRWGBuno06w=
+- w5DPsQBPLpADa1ka/xBadxLWSYmZfVDT3SX7NNYwoOQ=
+- bTH22fvtnkI5VcJfuqK0PB85Qb/+BlSLG/LAcEYViro=
+- 7O97HmTHDey5eG33eNRw9yiMAu62uVyX2t5bRtdoq1A=
+- xH/hvv/eMUPtpqSMQhSUH0/60hsTRxuQyO3X/qUxPMM=
+- 1X0TmhiLDchOZaP68wbltwNd5lt7ZaHMn+gmcP48RwM=
+- AwB+kJb5xQDGeb0Yd0zlprY4U2tNEB4CdTRTTpCI75Y=
+- mmIu6vSmJps+6J/Wjbm/3hZj4WN4Ghl2u/yS4eCwmhM=
+- ghx4P4yVGjikJw8rrTL5NxDmo8Mv9QTmEQ58h79NKYw=
+- KcnDDgYEUVztmLPRT9iHUaj45Lm8adSDpnolfBSrefs=
+- kiam3ocrxI8EGb0W23b3QlBHV45Zz5qg3m1c9d1NuV0=
+- sqERV+OVkNw6CuNX5uikYyqiu1U9M41mv3D4Y7xLFHQ=
+- IBnDvW8Z3UcLbGDjim1uDqGBbb2BDBkFouDH4t4rzlA=
+- aGc6PUy41JfTGWCGwckP2W9kRU1mN4kMTr6OSoZKgZc=
+- qV5T7S8qS0CiTW3iUfTiTbSPSab9FVYv6vCm8V/Fzlg=
+- IFmu9HmWy4F3JhuaiVmk0yMwt8kkLiYQrPxPBzhCgT0=
+- uTo/XnP3D3nVsAwk7dw58J0x9E7DXIS1mHp00Hq71vc=
+- T3VGelLblr9yoxtvHr/YY7SGNjw3VZm0eylCsHI09Xw=
+- PWjZmd4ZTeOsPudRPIATiJF2s1Hkq+x4bP46naOF6rk=
+- pi7LjE+W86QBZdOjZ9HqZA/5Us8KomP+XT6Lp6ctkuY=
+- Fkb1qfjBVYAA5BiO6Yc7+/p9bBoKNBoDhenoso26LZ8=
+- CqgV/7PhDgk9cvXF3ureZ9i3fVrMjrBeyg6vCBnI7YE=
+- qM2fntVbf1hmBWyDrsFR/nvmvQCcOO9XrMZ5Fsqm/2U=
+- aa2kCIei2Af5eWqqXbSHTFXms/4KYRkPlZhvxMJZaxY=
+- L+928T47QkG82auAPDk09ukQGL6LeARXN83Fkey+zhQ=
+- 89CCxsoIERHMWu6g4sGGbt9QATjSXBIbPzk6Kc3j/LI=
+- 5cQe+x53uWAO7vxKwTJ2rt3EWJFWzIE6hOTsrWIWxI8=
+- R9r7aw9vjHIPd+8DnVN84RPE/+gLeacqb4qtcAdYjfI=
+- axVxMkDoevIEKakkQ7pL3S/kArAQC4vwVwiCV0ZD8J8=
+- LEBRjkKhHoIxMp7/dnZlw2o0CQ7dYRQ+ZulYSyuqMf4=
+- NV8gOPD3NRe5KJ212iLM9vKZ4/V5vuvzUne72XlHxy4=
+- wMwhMWfm8KexbD3eqwJTc+8hwUPxtHGQq6FFzp1s6ro=
+- O0hKzSpjcn1nip6j7IWrOL+xBWyzsh71tzJ5xr9h7mI=
+- lD7+0u6hVfOD3+XMrRKQJ4eyx8jZrvlmTr+fcgKXL3o=
+- nD9eELKHWQ69m04iDSPTZzecQPgEGWgm76O2w0nWiyU=
+- t7lgY0NWb8bYSxWjJPjgHv9YPMbGOAXHZ12dj8DaGwc=
+- PbxrL2/GeZU9H9LENE5glCZ7PusEMZC2Zg0HQa+fgUA=
+- srY8RCKwoGPyKC5KhH6muYxpZFnKkBVnljER+eQo3cM=
+- cExFnGcy0Wy5ZnJjpLQOHTwaRA9uB/vN7jyUNDCcsgM=
+- 7vRJGK1Blr8l9xPBuVumgKRHvMlNY6aH9Q3YCX+CMoI=
+- pKTBmYqkvIXaJ7gEuZsf8lnt0jwCB0IiGp4RvJbP/g8=
+- VMwUVgeEpz6grsIUWDzUpaPifPuo5PuQ+2E0jLNzE9A=
+- 8q88jgAhc5n49UGsCpGhMFmJrBjXOoyGt9AT4owcreY=
+- 6PGtK96jr5RJZR+Qb3tFgFM9bbqtW2qzZqMktti0pQE=
+- u0q1TuLBVQCgly6rWkPKSnDDsXoaIkwyoNHsgwvmYqM=
+- g3JkiKGxPgeVby5wZ/1pjsUMwx1OOH2BA2EBe4tYtcI=
+- lbb+FbPPi0xatsyTidS6MNxgmx44AtuoX5lRa5x2CrY=
+- "+kAWLYhY/YN07nYs0Kj+R09nFAxRSbBUHQRguai5s+k="
+- PxPagRu1oDZkQ+J0/xtyuDoM7XTd5/Fe/jSGfA6FG98=
+- qo+wg5ib5p1zK0PXT7XNHeLU7UBtyrYTYX1HvGE3ESk=
+- WW0VP9URU1lQzZ1W4c1VS1fqmsf68J/ZsKWlsC488vw=
+- SVaZ8DPNZpsuz6pCvRXN2g/MdFvkwm80JSJpViMebtY=
+- u9SxMYDFMFdWvfAdNQgwwQr67oXTVjFjrlrU/lnu90s=
+- gpo0Jzb4peVp/GeulGFn62n6w5Ti6ir1VVnj2tmLVmc=
+- d/TAtg7pOlyx5W96SBe4sRXS3nik2hnLbmJDoAwXiYs=
+- aXB+bRxafT9Wq5FE/4SxnoPJUrzkZ9kOGnrWKRCDfEk=
+- "+kYJGnyg1HnZkXP6pmCWEKCtC3bTiPsPGxFKL1MQteQ="
+- R+YlB2DoQWqWUY5DsFhaG6KCCLC9TrWDyWhVFthh5M8=
+- idMVq6f4csqepMAAiBgmrRyNSgfL2lN+06z1ys4g+eI=
+- PykvCZU9EPtrPxaljXv4HWvl73IADx5MT5SPVW1rlgk=
+- 8Zfx7Ov+ClgGsrle2N49uJjX/j+5QIQdMYcV27WxyVw=
+- 65p2UM1TK2HKn+wM+Ckkx7pzkL/ImOLUW8BnlnuYnMU=
+- 2/wD12KyD9uBBqv5q1d1MvcJDYH/HAdajWuOuvYMYp8=
+- 3rd1Kim5udn/jceKVNrXPWI9F0lQwpjgeAhCyH/0f9U=
+- asWf1bNI5vJubIn84urTiESOlFizrC0eIEvMNzWloV4=
+- tR5f1PcLBRLhq7db9UKMQvKvHLcwfWfaxEClFCU736E=
+- tEPsVKkfYen3Bgfxt9nstJYfIw4GPOJgwcQ68pTiJwA=
+- ZrETKgFzkQsB7joV705pWDu/L38eRGLJnvvhuatb+Ag=
+- 77I1nhi75RQpG30t/1F7/7C6mYF8ntZCjQ+hqrBvmXk=
+- l/jdamSEp8MusTuS1V63nlpoATWcPYpynXNk1icy3iE=
+- 1oLtTKTZicE07JTxVR4exYDdbVpuzenz015uSnF/veQ=
+- 2x7i68H1LBKQ1OgvTAH5II/UM3VYB1u5qrQMGnkeZRA=
+- Pckadn3KJp0WC0NS3BZCnMlvIn/2YdddgoMRqgtGoeM=
+- GifKO4jv0WLmJQ9AP6u+3sPdDJdRZ5Z3DPQ2osAzxbo=
+- RFcfp9Ufny1y/uFBSmiYSvGUS9qTieSlxEglYpJ5Aio=
+- beLUs2OC+KHI79S0I1HQD8bn0FRPE6A3VZIGrezldeM=
+- VwhyHEcQYzh22xNqlTDYgxy7xQIyCQgAyGYn8WYH1Kc=
+- 6Ut2XPMtrD6FU6RtB/vSG+sgl0Qrxsg1ZmFo/dlvVjc=
+- 9HWfO45lRb6lS3eri/dlgldaZ8wHVuVpSHxUIG25DJg=
+- zXlMs6JQQs8/xCY7SBjLNXziEhyyisk8jIzhwmrXpmQ=
+- 7JIzz6zgs67JpCFxDQ6ReC51Kewd672WNiygCg2zekQ=
+- Wf/hKnDfFRCeA0WVXjIwqXjzHrwo2P4+QtMGr7KLjoE=
+- "/XMhxAX4r0OBCmcju69vtclGGu4nO8NpPueQO+zE5uo="
+- FO/0R+dhIXS7vYnop2QHc2N9KtBU4lTTs7YDr1MtsWM=
+- G7S8x9e1DEiFSSiLwJtnDvs9y4lsENpuwVjvF+bc0iI=
+- kbJxqdnas1w5b826HbqNIcdfY5DxFM4pkQ6nWX3CyPs=
+- wIDkJlsWVot8IwQDuaiXmyKBb8P2HTUv2BfiaYFpZ/g=
+- 6lKmqJkPaoXrmGoIP2qX+lBiZdQd84wtn5Xv8d7i2Is=
+- ZUfyEIigKXwo/ub8u6NMoy5CL8C1mevJFVR+nC/puUs=
+- hMk3LQhWkfuXNYw2unI7oK/9adGVb+w8gUqMrl9Cb5w=
+- 9m2pFu2jhG5z3LRlpTRJ6mK+6E7gBtIT+W7qIrp88cI=
+- sNHYf2isKpq3eWoVMp+WP5VnwRdBtVXJCHN7nworOHE=
+- gyjU9lxK47jvJ8RrO6PE1KnMooFHY+H42tXEmHUYRM0=
+- qg+Jt6bMUEkJz5blYSF0v0FkSW4vDayV/pD4m72oI5E=
+- Qsw5oRYOVhcdQubVXdGYmiaV9BVk+pdJc7lGtycurWk=
+- 1uDTTvFjejgUL0Lsutihr1ucJPvLSUn85BfVtoFvn+E=
+- 6wqHGdhOQbTK202gKtqp2o1LTUroEGqg2YtG8NO8Z9Q=
+- rOeq8Mtlx8jqSulQ5/mj3lLOoG50T6PhbPMzoxnqI4A=
+- uNnCbH5gSwLIPZMnbxBpK2WlDBsHaotyCDWWlDNT45Y=
+- QYnZzhtSlVn0BfhnuhvEUTB6Ne7pyLXq625kd0Exo0M=
+- 2EWqBsNpfWVkPqi4QBaBuzzBxp71zyOA67v2nr75rSk=
+- G3M+MIlxAqhH0SA3dg+DsybIgaAdZxm3h5jhZiQt3GU=
+- 9JyLRDWOrItHw68e64HA3eHnwJ86KSDCv2cUUK0qtOU=
+- fcPowzD52NZ6BN5pB0Fy8NM+xIX7jIwAPjPay5b85GA=
+- toyIBgi9a2ynYLkXxVAuuRjvPaOXBZ9nCj1iTcjT5As=
+- 1bc4EUf2+7NIW3U14KSE0TYY4kVU+3xZrHw7XpBc/6w=
+- "+7YzeiunXQieHr/z7S9lv4MbdDk8mkhnEV8Edniw1jk="
+- XrnA9+XoI9mVRUrWqssGEm14eMFQC9jFE2ajyZ8nVkQ=
+- 2VHVPEQIF8u1Qq9t7SAClrs3P/ZX1kDhcSPxQjvII3g=
+- dV+dVRqCqD1HEiAJ6v1Jt+X0K2mkOnZlvOHi9akM/mw=
+- kjJY6dCVl/bvKW+UPd53xoSrvFdC+b8qZ3tlHCVJXrE=
+- zV/4GDtZysW/WCSVXpfOlAbGGevxzYy0rF20VTHqq1k=
+- 9Q1wDLNwCEz2dV/fOnwtqEEDRHlhwqh3tc6bXEzQqhM=
+- hNOsZEbS231+mcrL8BB9XhIfLp8yfh6eA3UdCW4QsCk=
+- '09W5yjMpW1i+E9XKVfXqof9TmDfRL4EI6ylgQp3zb0k='
+- tMqJ/vQtNtll+qCpu86zr7jgBjMbtJuB06TXN09+c6o=
+- wnbjf+Teh/AdbrvM66BzmtZVjTsQ0dO2aTJWaZK/bOo=
+- aFzsvlQHLG+Ea9MdxbVaCFzf+/SoBGCAQjMFzgGLfzM=
+- YZUZiu7FRXb1JHS/kssC7BxeEX0d2d286wj1v8VFoLg=
+- TKMDo79933voZSAx/wJ/NRlzogXN2vv/pYB1D2G8k84=
+- 53gMeUMuI4wj1nV6QOjj0A53XJrPNmA6glV80Rgki8g=
+- gSzMPol1CwsLMXeL1GwU6r9FpN3LMpjY0MlMJjkmhmw=
+- 4cbUfZ1hsJ6X6ujripG+jfEKMHbTqX05KPxjcgb9eXw=
+- UIC27nlODwzAwV13RAZD1vk8kiSxo2GLRDviArS4Ktg=
+- H6cEOfzFdY6pcHkb1KHZKLPts/vEtfAG1c3FlH2mHqo=
+- XHMEZ8AIhr8g8KWhDBUCiib5b0KyBpXE08c38zmJkA8=
+- "+6+OsUvhj9VRNSW8F8vLXNRuVUjvtrILij7nqhbQt/4="
+- 0bdlDOdL7JACz/uGgKrCDIpPK5TTl3k/27YNsLNKxjY=
+- YE0lVFxbfFUgCZgXW+BKOSvE+/h/r3HwzT86vKY8Jck=
+- P4mfRsmSgjgtuK+9978ECJl9esc/Y1PReb0YKCfMV9Y=
+- Jho1Hod3zLldibplvhjT0zxi4HM6LgHAqg7HN/cF7O8=
+- uBse+RNKjprW1EWH9o7Hy4GBfjfkt9Vl2ay3E/mCSIU=
+- eppfzzzG9fmqnR9u8TDvzcLw84hQov09Ymz6XYZRuc4=
+- EXavIzOMUNxqdhTsOVVdZTwLemvxGU6ae/kEO0zUDA8=
+- B/ndCzddqvCYsHuHbN52OOfoHZxOJw7zk0KDxGtLLUQ=
+- 1lSLER4HiSZ95uw1uAbNyMFtY073I/voczaEjR6qZ74=
+- pqr2TzDLw2Y7l/xQIAhz6ASx5ha2Jr1KinXGgK9QuEk=
+- LF3gw1HFHriB/tHTkrMu5RjbssUBso+GIy8/b4mNgg0=
+- 6C9FLaahk31AezvM6wUDHpKNv1JxPeBruOTONNycVVI=
+- x82OXfbQJK3kbelAc+Lnhjxco60KhBhJx+DgqKRL1Qs=
+- up5iPCPNwYKyWQn+NPp0lfGA4O/WQl1egKfRxQIHt3o=
+- vQ1VJVcNilH0/oOQV/Ukya3hraZon8KrnZRhEO3jB/A=
+- 8CJl4/M6eu1TocJ/ZiuwUAbjeL215phmnSJF4rY8CZo=
+- QeXui0zxuFD+K+6mvvqatRYqMT8ZB4lpIkFSVt4dCS4=
+- BD3/jtpmIjULcH1996augbJDuk1hsTytck5SbjL91ZM=
+- f2Rmw++qBdHIG44428Gcx+wFYJBP38OQPPoSzvv0Va8=
+- nRuxL0RMPWo+GitttfzkvuYM16rrv7LVg2lvBpQy/OY=
+- e0tZhpFXgDTPGYNISUTX0G2hW4OxmrUC57b/7JBs9w0=
+- 3w0yIfFhFENzx4UeJ5GdK2hloiDDL/pY8UVS/1iwmVs=
+- 3WKe49ZsPBOfj4GjVMfEf7WLtQPtNmnlk9I3wU+MSYg=
+- SwHTO6L37X2vY2XW8qZpkK7woYHfJwEwkRATCqnAu+Y=
+- 4Srnpzr0tPaT7Fm7pzGTvF+3Ax1Sok204R8z4zVrrAk=
+- 8bXLgTwib9JYPt8nX1G//wpwwWLJ7oG9pZXg5dohPk8=
+- v8xE9Yft5y0fmVqBtcbSs/5lm1ydvBTtCBkYpsuOZOA=
+- gA9V9cZ9YD50LN5fTflWjYFNSPVoaaflwe3MGJSV0hQ=
+- zUHp5AaKZXopIuEh71hmRvPfUa1GnIFaaA/0MuT8zUs=
+- VL8PNa1XW1B71n6GBsmzi1kkMU5cxqUWUyusFLSlf30=
+- V4ipCZbkQtXHqmUr9wx2ZQR7k2NAD0arJVEB0XUaCBY=
+- PuKA0JbKBUa03IQ5aFWu1CAKfyPOoMOLvymw1QBelTE=
+- z2iej/oIAVu771h2ADVTRVWiZ/XngABNhqFl94MaitM=
+- iaKIzIoe/P/tbWxX0aNoK7igvamsjacWoVEERobbsFY=
+- G9CjO2YFf3V6ZmBNYoqaiUrUZZs6pI8Xnk2+ohJRduw=
+- ppbfU1eocdug9wfI4KN4V6z2i2aqD1IvLUBUs6nT/MM=
+- PFpNzG3WX/Iv85m1J7iQ4fbCpLR6qq8XlT4AxD8qgzY=
+- 5wr8XPsKoWQ0rs3miE/VDjhCjFhVsFPoi9zA52uno2Y=
+- oXNEBirxwTjRze7Dwvr1HxJhSbN3cP0a+SB1X6ydGbY=
+- dirK9hbBeg+8OTR+xVxZPv9UOjX7As5B5L+bf+ChmlM=
+- YuMlrAzMAsYiw1MXIeM/hPW1FbXLpTzn44weunB9ffU=
+- JsonbNPT4YHFVucfgh4EVFHnubC6friJPmKFM7PUuvQ=
+- G8Bzln9MJPAA0Pw0AGz43oN1Kp2P3mgnixjAM7u2jSw=
+- tb0SR39RKBR+eZUSoR0sKIjUPHi1v5oM8+btWhiN7qg=
+- bnF/c1/DitoPiZ/Fx9KYASYElclUkAqSbPsltUb0Bb4=
+- bcgJC9npHLkMh5NEnm1Dqr9Pyxw+3KJmXlnn7S/dbAk=
+- A1XWPNs8DFOMKN0/Uskgo+8YuG7+q9ChQzTddlukzTk=
+- Es+qMFpp/Wev+fIxDWw+5Xj5sdsuzNq6+9omxmfrilY=
+- Cqi2xlkcI6KF33Yw0zoUHyaFlkLA34U1IpV6cN1LEHI=
+- nzQoDT3AZAn3xELKJONsuRRad9UlLQ2XEpRAgRkDhtw=
+- Dgxj1SHukVhcu3WTK6mvg6ROPHMPIpTrnmmL7csuPvg=
+- VIShRcmf4S4nZh1Eg3XGordgk4CazOG3XzflGjXIz4Y=
+- MvCyTBIhKX/78MVdzd/uIH1SUy4wx8gyl5USa9V6x18=
+- 9iIS7zck5q2bda9+nt/hQwnyXe8lxqvTprCNfyeeBjA=
+- gdSCGWkNAfz4Y09aILE6+WUlESLaQiVfxMk7XwE+hLY=
+- q+JJlTgnPUTz0NdcrgyPabCNT8QtHrTtNLy2kHXXR1k=
+- QxDVliC+2LZGz2zHWATr2Zl+4jLrhGSDCOyLWozKTyE=
+- 9L4R6FKwjcbulRdtlT22jOuFVNHDRqt9pDQ+UyyVB5E=
+- Qag2Xo4T8PM9RE4yNjQ4p+7ReC5M6mWX4xVO0TzKdtU=
+- cKhMnf8n+KcAsxQEXDlR4hD826UpbHod5sBA4McgKCU=
+- Am+fX8VW/lrI4iIiX9pbApTcCnPaniwgJYhI4wEssXc=
+- eitJsbkIghkFHCVswBRMSaU1p8OskCwtSGXTfPn6t80=
+- WE/0LhsjUw2BJmam/lIZrhqMPKfFr/ekVNnE8L7lpFQ=
+- FSvuKWVq2NvIdomdMn2irmUv5sWFjKK85GU7O9mQAZM=
+- 1B+G25rEHB14Zku4WhxUUyKHrmr/k5XXEaHLbuADz8c=
+- 2SMbiYQ0YekD1ThdFpra0qIs/uhehHFAtGtgX9DUXew=
+- XzvLKIoRHRR6J+ierW3IOBeiEkgID16BxKKUxh8uqD0=
+- PZt/z6dzA0zRN1FkWNuY8NNDCKcbBNLl8rQG5+awGzM=
+- SWqe8QoY2aeFg31odWyj/imdf9/7A7xAyb58MPGNBrU=
+- Pss0NW9b0ORJ3osdIT5re5xcRKvfZvsDaAuw4cr0h6E=
+- qaP9oMZQ5csp+VO8gSxaAO52zUHsnAHDjag+DBe+89c=
+- F/Yo/FBd5UXHTwfF5CJUd9MsVfT/+bH5T/iiDc2ZN1k=
+- pdFt1MV/XPUY4JH8KKXP8ZvZElvuBP/L/o8lOkoT4Rc=
+- Nda47X1vITbTJvFKhdMilk4c4kKeXFeYmPavgvZZWqM=
+- AgoVQdiz2jxNTMH3eXFbztdhjXt3yiK9MPvIfR5LB4Q=
+- cBekOZIAIK+FuK8Jy8CHtdbah28ZqCEJoA1tpB/p13M=
+- 4kVnYOBq/k4ezhfz2G6kOMytF1ZLCrOKkBLofPDE9IE=
+- kxa5+ZNZK/QiF3UEbFbVcyHqmdSX9cI9U8DGL+zWfCA=
+- i5hrfWNYMYnGVMu6jM3G4gPajVbZSFOgik3hF8VU3Vk=
+- ZfoctR1UWXHw6U1gzxVGWHpxYTvxU9GX8xEBZ0/8HD4=
+- pL1PLWd+iU2tJsoUdyHvqopGUbEnK1BDPC6by9UT3ug=
+- hR+KGBj+AEcR2J1DTKg62YAHFPIzGPnjOiEea7HLWGY=
+- GNwNsZdbUBmNgplTZK3FH7+OsLAnkOm9nEfzMzNzwRQ=
+- 1ASPOrfoUxYrsCL00zvZKae1lMm5w8nSVH428NMcV1Q=
+- QA45ut0Hm51jeEuCm07sFF9CGow3toPNw2eHH9jeXwI=
+- VK2nDkPXft4zLxCZc9Qf54yw5FNhNaD0IhEaLRT2G0U=
+- 1TBOOMkjLdz/FcCd17SREzzQ45sz55NwoFG9yhft4LU=
+- 21BCTGvV+h32xoHNGDHAB53bTE4zsOmZtKgA6oDT0eg=
+- FcYu73WzNHI3zxI378IOk76fZJiPGze0asDSrzoKCCo=
+- mDV2+NY+1JBuFvgdKluLCEF6jBb+xCnWo/DWHnInmRw=
+- dqgOLFN4O5GO9RUpV7C0gTn+OID2GugwgOEkPPXbJCw=
+- 9BbpKldFgFjqGYqHe7nAyJgYwISH379DwAsnuFhHRg0=
+- d1omnG96DE24RySmx7y+4mbXCvg2bxtpzA3nTpAVGzk=
+- gKSi5MbogaGZ6t6JY0Qrfv6lMemDsNcP2QqoSBV6LnM=
+- o8VAd73D/WVLjoUOKhaxWaOxYg3XqYDQ+cZTh+W+tS4=
+- Ats4p202ibznvMvFcIwuyjK+rnKZ8w2bwrbCwS/jZ9I=
+- n8WyMJ80ursSr66rqsbrqXGI9g1zzgeMN7rLbMoYCfU=
+- lt16+OX2LAETtywYcfXd0keBol8N7rnu6HMs+Do0bxM=
+- rri+UCZfdlDwzM2QG5IzRPOI/S2hrw2G86zoM9bF4ls=
+- iTACfTsOUILfZAUJLWPcBNaIDtbaNhbDeTxdx4XggBs=
+- ukHeygR7Tz0XezkUqwsYSssOPbp4BZh5LK7MNKrOXB0=
+- xqqHEBRXzkoq8UDDu6lp6MFgobf0yqNjI1NuCew99ok=
+- VFeyMsIYXU0dYG8HgMrUHa5VtiqwBdZyhOx8u4DOk38=
+- Zv0jcrOegIi9fIN3Wc5yCiRLR4B3In5MYmE+dfsg4xQ=
+- ryi0mJqp2kgiD9ptSks3zxhYAnqGSG+Frize58lsO4M=
+- 45qnPjeVp7QEOBksi2i12IKgIX65cvW1zwJeJC6+wrg=
+- awqHnu2rNFY3fabYUUONWCI0GVSJH2/UqJ0brf8fcDk=
+- 9SQmZrlI0IBggsh2DrSoLMun7NvT/bkztlKTYTnS0Ug=
+- rwuyzh3qT0u05o5XI7nhDbTe3GxhU9lgCo/MQM/n/ec=
+- 2oSCAKI+IrvBVVNgEqRv0nTzSwSY5tQ1RBPcF2ZxgpA=
+- "+5Hw/5q/SF51tY7sFaLQv7BS41LCHSaQxEgcJFMFVJg="
+- V7g8sfGHy5AHupI9pPev6s+VOg+bIfFETJtPDmYeqjQ=
+- YplDLTvFZMRgRaXdZfvd1NAFOedqMj/uk+r/WwtbWZg=
+- T9emxoQCM5p/7A1FQX0zndPMBY5+zM0jJEC9a4r/0u0=
+- Fi58rA/Tx2f5xrNAIiGF+fI87/MGbQeFTSnn27zCeg0=
+- 9Q/Y2bQbNKP0rZ/2AZ3jHDWLhQw+QtNrtZjvzIxrRes=
+- kUHm+rnti8YeyPgkbhq04LDcq+N/FRJVOlS8mrF6rE0=
+- MjanJH4Q5T2+AenclZ4GmNuAUMjs46wPx3Ex1pjVXPs=
+- MSItmXdgTekaChz1pvuB+5meGTAUSGUKGOCv4rsHRNw=
+- E7XiBiApa0tAmI7R7LzKJfoGfpIrv3j1GZ4tSVaPXJ4=
+- 6pd03DfMw86YRZdAFd+Y3HYCdAYshcUqKPrzZLpyo68=
+- tWWeyeWbG/JP7QHj6uAzXpBXm9NfpDD8/+kZ1GYgLuY=
+- tyhmfjsqaslx3xSCsSaAGFGb1qQwmL3uSCYKZ+YBW2s=
+- "+YCu6fHdbd2JBN0ZeVfyh3YY82CCArA7nlSBpXjdmz4="
+- gbNKku0M4sSh0oW8ZWslvObud1vQ9DGWyCu72wzaDvk=
+- o+GBljztfjUxFAbOcQ/xS5+QeQ5UiKcgrxZQqZ+mzlA=
+- gP+usTtGdcFs18SUjMF3RDV+CuIXRsXY975L9CKeWv0=
+- QXWMb1b/tLc3LGZGn+n4aKbOevB/+ruSxMRiLdF4hWg=
+- o842Bu7jIfNkDbodLvVd0b0solok2jzLtrxpK5EbZrk=
+- Z6g2Q840puWTvfLDpwaoDC93ClxPLhzFBJBz/XGvMO8=
+- X3NlwKecagWCwzeY+tskWNxCotYcxBJMTjDGjeqjk1c=
+- g7jhTMCIzCMI+SPCgPfOv6r1zj2voY4UnUKZx+ar/Kc=
+- WGrr1Ic++0UEUZev7r4r+QCciWO8YhUJfsQ1C8C2EY8=
+- o+LuUFpEf/vZIoCcFP/thQ03+kkD+TroqX3GZM2o1tQ=
+- nwwTiA5Hdl5MS4bA4nkQtc+rwcYAM1VfZt48wUTGS3I=
+- eaSP7LYJa+RhTn79MnsoHoIHTjTco2Egl0JGcKAWp+s=
+- Y2Ll3tE1hMZAKBJl2W9MOjP4I5vDihRRnhgL0y7z4Rw=
+- h375BKppyh8cNr4P34iiX5u9dt/f7pWxb90Q/cTPva8=
+- qJVIpWAOY4IZdbQp+bBX+KfxyZp8EKTp8T3Dm/jBxD4=
+- K52FoFWpFrb31gNF+q2ebBThjEGOKfYx6PdXzU3wx5Q=
+- OvVBi3ZxK6WsMy3/HyWt9cSTtiv4D+pUedStSn5VKx4=
+- 6RyM7a8vUWgls8ugszfRFa4SHMPXk0M0/d/6qdcHdKk=
+- 5LNp3y8bNN5eNR7u8+/9aPXflqS5PgqY7JBHmXXkslY=
+- 6EYd7uXthXVVQ3GyIjzRNlLR2OYBVEkO4BNuM/bjS3U=
+- FZ2FaGPh0J1MsI1LBs8xLu0w3sspi1vScnxX0HYOt/c=
+- 2Kr8S4R8NR0zb9o6x3niSsky30WHsBm0+arNZ0rZd70=
+- DaC5Q/MirXKtM57JuFkkzGNJQkyxB2b6+5kn2G0GqT8=
+- auIXFkoeO/5cXIm0JgqiCmD7tzUCCztlKnf5zDyoklU=
+- bF8oWp7b2r38rPqNl5nWyWcdlpWsfTRonIN9N3xaSU4=
+- QZTRcG7R9AjV4C1nJ3cBn01ThcdmqMbKisujFn02p7k=
+- 97zS1ONydvS6VyiLOwTCmDhk5bi2ea8tNrLn2CUmbtw=
+- HDEt1kJqFme+0KVxKJfIZP9JdJqY7ZQ50iYXzqvPBnw=
+- AfccmiurLBSDfWPr9DlZj0BYwE/WRdEbeU5wxpADgIY=
+- 0lsbU/7aO9Uph0Izi0sLdFZH2HfdOBEpvSwK6v6P9kw=
+- GL9u3ISAzzrzxIgGj85uNC1L1bfssk6ZHd6WttiSYO8=
+- SB7DEMKnfFKmEYLEHwy/oK0Qs7DwpEyvv+yrsjloFu0=
+- Hju4lHVvjWK1dZyxu+jlKSmSHuQKK180FHqZ2COtT6o=
+- i/TexUXhBbtU2vz+ZDa2eri/DAHXtXXYZYEGYbhY2G8=
+- cVqXSRxqOrWslm4feslCvlkThdImxk52pVAmxr026b0=
+- cW+f+Skxx5wdTiON2hWnvUE8z9Sn+lGu8pq8pE/SasU=
+- fcrJGqyR1+UTjI0SI8SpiFD/xXv+Nqjkpb0QEn2J4ws=
+- 9kSz0HcC3Ivp2MLuOnB6JQwsi/NFD9psvBm2eSLLDlU=
+- iTUmIaLltpiirM1JlYvaUO6XyN+BFOxUjLZltMLFjlk=
+- kBWzUCohdZfd/4cZOgwhn38cfKVLlEsQSIzNUMdyIzc=
+- c5jPEPKa/XFe13sHnLv6RyJxz9jkuni4n3LDRQMl+I4=
+- "+m5eWhiorxa5gjJI4y/ofZGlp7AODkXO3BYKLCvMf/Q="
+- khBIh2d60id47Zg5pBOqN74MXHLV22DFRstmQEndyAQ=
+- h2jO0l5jbt97LUoH/H3XTWbE6Ji1N78Ei1eJlO2RNgk=
+- ZnjUPnQtPzvgGo3oh2GHwAqfcWJCdEgiYclGSeb24EY=
+- FuU56IOiItEpBf56W6Fjj42VyppkWcAju61e9fk4pxE=
+- JD0CPMKyqDLpcXFEUWjdYibwZdz/aROnETWM7l7Cqdc=
+- SdYhMl61WmhHb7EHtticw6N/kxkox1I5haKKny9H3s4=
+- I84H/ofbhaZp1XImnECkDwdx4YGjnWD2CGUBoRLFG+c=
+- xlWNLBFoIjQ+AnLZQYJUzPaW8AWXv5bBACbaBYWQrOc=
+- 42+r2h8DYMjODgmY8kKCgC1K1qT4Xbzpcda58sYI9MU=
+- "+BWuYXw2Q0boxmGwenoTffCl05wRHt6WGI4GQdJieTY="
+- LYpBMieqJ9LSLIDPgXVAni6T558LclLWfPvdzBNJZho=
+- giNKPeUgrEPli3r0CeKC53llyuWoZt0HtwFyLiucRTs=
+- cXmwswmIAcK5Y4EreCf2fxOZ/TygOG9PbcXxsz6a9aA=
+- sCToQFsSdTvT0J34RJHU4RQD/ZsGq8PwI+kL+EWBC1M=
+- 4JjH+yI9EEGWqrcpe0c96TrFOMlZ7XBfZpLMh8XSYNM=
+- 9xApE5M9PX1rBdQBzPXB+MuQ1ZZqb9fN6Vbsh+BJ/P8=
+- JnXnMonAdODGstdS1IzfhcelhpL1qijULnsfMTtPaqI=
+- jSlOtVbffmLqMr3GUeaaaA7NnBBc7TYv5Ayb9hdGehw=
+- 5UaHxy8VWr+SWWbpO2Qby+axvfec+AduYH+gbieK9eA=
+- "/MoogEXt2GqYTPUAf6oQuDh4QrX2Nkt9pY6sK6lTJ+4="
+- s0Vk8cTNHZjcJqqk+IjjAgZWAzrdTdBiCyboIEk79cI=
+- NHyaOpHO7pYGU9bI73JEBfaJYnnOctjnf8dx964rC9Q=
+- nbjNaXqJu2baamMcwu6EGAoO1v3/naCuhOdbf494MOE=
+- eoJLt0+yFG+afLAKK1mcu5uItvTSxXSwiuoPW4dDh4o=
+- M9c+I0EcWTJyQd8cbOShT1dptg2w6biM9p+GTAXdZ/4=
+- Vg0j1/Fx/ihnGKOFq0QhlyNZCsuVwR+CkmlM5iDajfw=
+- C30K1mM9EkuXx033yOJFXEBIyNqSjeo6DP/16AzOH58=
+- aaXXNYgsjGEq3hzuwX6f1EALUDtQDKLGuYRIK7jQdg4=
+- HShxXkzXY12uGTOx4ImPdlvfrgAANQ9KSBcFiCEPctM=
+- HIgWjFJyudN9Do77V7GyRgd+YgkXEY0RZliTaa+PHGI=
+- GIdiR+YMUcHTWrhZ+LWkgdng4v1C+6zfVaBTQfW8chg=
+- 2K7MZSzk+zxjCVIWyxUnzXsVmWDapTdn+5aEB6X2jx8=
+- Fa+JUMiw7GKAuwOeWiH41mZbLdVxa+2Q14ti+tRT+cY=
+- 9kv4GlMVwykUFZhYHbNkDzONxmJsB56ufYLq7czuHnM=
+- RxcveXp13F/BkzxPy0yYHFuOtMZgnLXZNxx/VRgf5Mw=
+- IDdk4wB4PCC0twk/9Mdt6DYVzjG40inppvJRb6elSdA=
+- Epi0BcFr920vm2IU1aAfRdjeA88cfaHr6M5d+KUf/NM=
+- "+CQSfDnPFIHa9HUlv6l+USo2z6/lcdJxaZAJsa3L7lQ="
+- LR+dsTkgat4q3xGpJnv2vVUaWrkirCDPluT04xvgji4=
+- W6EC3ISSkS/M9TG67yX5Semj62o6uDBJ+lxVHot2Z0c=
+- mmWdFJmQN//6NRo5ixo0lTTZ3xzN6WUzzPHlBonO5ZA=
+- sBDvM3p6HFonREs9pKZKIlJm75Hwz/jtjiYuhzUzAOw=
+- u6ZU2f4KeHwyzqW4bA5IKnpS69l7OeC8Lm6uEwTlVFs=
+- 6QDwwKQKGJJ0sR37YPC5F0iO+/6rIpkamMEQen8lVwg=
+- 3YIHjDTrf7OsPFA9Z2TsjF+MooZbOv6UqSX3GdtXi48=
+- 1dOvShDFrvCwqVUgMCF/naWJDnkMJH84cbiS5d0KTCg=
+- 7ii7HOuIkrxch0wnz2iuyMfkkOhAVk+swAps37V5bRo=
+- vKK0Gisl4TfIP+40ave9Hg9SvVYFg8oHobQvmUTFxQs=
+- bqDipIQpzgRDvrRw4Echa6N7HfnD9olzuW6HctVPFyc=
+- 87LOGkh7yIdHToWSf6S8yk8/KrLp71MLMfSERH8eZSY=
+- H1qP501tMelooNzDNBrzxv4WJ3Du92BNCiCUn1RpoQg=
+- G1hD930uqmjDSgoVMYenTDLfhBRJDjaLV6sbpnejcPc=
+- vFXdOEbjSUCGcLb0Z31Dl9IOeA5I0l3enLeMZdI9Ig4=
+- qN1CeE8F6Wy1MwGMzgdZXIah1zG/Jijls96jLN5rjFo=
+- NwCt8fJfq4ICwTQ8SwtOP+xwbVfK1XQIZGe4s93yc+w=
+- TJGNPzGtAD1/1EnZ/ES2YX1HZdpXbvzDa+HRqE3lEn0=
+- cORI7zCZ39JII9bNAplMrDz5AydOogp+me0NeHFRrks=
+- 2h5n15RDgby8u6fXTfTR48YbRv2Ku54TvTEl6ddYKUU=
+- BWyny2D8pzaDqKy545g/zhL/FzKkhCRaXhbd0kxMO+Y=
+- lcSovp0/Ogrd7LHLowIqfu1LQtHR7PSBdsbDKowwhUY=
+- hhZYOCrrVuWstzuJODp6wbaysTOADNyeg9DymyPAXRw=
+- m/KW39XjIusEiH0vRw3SKVZ4HBh1Cuaki+fEywtR1hQ=
+- 7iwhGn/y+Y67JiOmKtbWqMX94g4WcCE+0X/zds4y2bU=
+- enrb7Gas+TRIXNiiOefjRRLdDmgeEIS5rTPG/JrvN6o=
+- Ro/INJFJPAenQhAfLbbhMOHEAZsfOYYKlmEzf/q+L28=
+- XLLY4J9tK0hZ8iW0B3G4QIxE/JG20wTQzY0xqcLIeiI=
+- E0By80Z9cOsho66QThheQf7eBU0ES4bAJMOARRAntz4=
+- nPubmHSw0H4evIAOn1asi3JiqbmM/blh55J+mY0g5nw=
+- O6fcBlJU4uSSxMIr1NPHozmxdclv+LSkmbxegwZ0MgI=
+- h7ft7IkEKSkA4/EkAAzxvpYXYogJ9QwQydjAOriRm10=
+- "+s64ZLtg2b7KZN1ejTzpM4y+rgZpvB9BqgJzsmQ6D3U="
+- tsdLlBJQ1hX6usbxi4yrKEKqibC/NRLL4UMpYIRSWGs=
+- CBWcgABdBLujocLHBEX4DiIH6jwYGgydE2rq8fK72Ls=
+- nS5ipUvaBeJu4IteDx68VUVOPpDhwoDAyWKAnVugEGg=
+- CGwaclbr99YVm1N9qzqKuJhNn/Ac16uinzELhNxyG3o=
+- iqH3IsQodCsGD1oWkXjW28WeJKHrWSUsZlzP4rWz3D4=
+- 6wzsIgm2BYdFAi+7jJDad1wwinc8DljXEQEThyM+ZSg=
+- kWt66Rv9s+KXPTUEas+u9TLaOvprNCgM86G/uH9hesQ=
+- NsCWWkxdabtW5ctqReNdRcVfk8kSsJYT4M0kzM1Vjq0=
+- q4H44VGGpI1LMSNWLhKfEr17N5zqwFNnFD46ZAc8p+4=
+- qKtnVBMGfwzGkm8WV35TYv9wMwyzGmkoWivNdbB/DXc=
+- 5A2uDvXbkTJZoRo+uqgzStQaA49S/uadB/kQp0qu8sM=
+- 1OFplN+QAuUylPiZcU1xN1kv0TuphvzQcCFNyF1lmWg=
+- LH0LsAG+GLbUvzvhyQ8Ukud0e+Nk4cVLqiGKIeJpfyE=
+- ppJjiajQpbvj8wbrsCxQB8ADCWecGeIqLfSb0AeRxrk=
+- KWiED+5fu+ATs1vYeejgxeiZ6/ppNnYyvYm4/EBT1ok=
+- xZC9YxZDJRaC4f+GkM2W6b18cp+y08J5xpBPpXGCL70=
+- y7mmw6Nz6nDa9bsRFFGIVYGh1/mn4dxz4gpwU2r5zW0=
+- MaiX1HmyqZD8k4rO6oWfqlAgq50K+/VtSYRi9smW5KY=
+- dmvZYUwTssLAs6o5hEXFuM4tBsipxEdGwQQTW8roO/I=
+- R0JEkFXeyKgO358pYlc5vOA9D13Hy+b2U3oQnk4Cce0=
+- "+DHhrwHeGlVVeTNT7ng7319lvGLzRg8NGXW+RmtlL9s="
+- gqeSaiKPh0aM+U/T1a7sYhqj27vEZ1BI5XlAzNyocK4=
+- GhabqvJZCzIqAAwdifMtXkOAjEgrTec9yJ4/o0bpR2E=
+- "/Tu8Lj+OaGxnVMHEI+vz1P/AdVZpNu9alSUmzlrN1Tw="
+- JNtFCFlYDe2aR8kvny56yDIrcOm6Mi/+XgV0nVnYkew=
+- M4NaWkqFZYAXaMK/XTEoTR/JnAYXNyKkYzFA14k7ZOY=
+- wgUnW0A1ohzq2pffSt1mpRnUhvWyd/3qiW+LsThHFdg=
+- Gq8O5RfC1GCKdoBziLyAAoFY3+g57bXG3zENs2KXAsU=
+- UjryrxH/MVGp6vLzQCh1vum3GJwpZUXKMDnVfhHtI8o=
+- "+416vYoAz91hRCa6lsAZ/Dnb0plO0Z2u2WY7RLEck7s="
+- KFZ9+bCO76fWPbJVlsLTZHa60xh4aLOXNuZ1JoOvNbo=
+- 79LXCyBJhUF9+XT0YkqJK6EO0TCS8x2ZrUj934lJ7Yg=
+- 7BDEAbi5FHrBcEH9em9VlMHCtJGx9Zdff45dBxWRgV0=
+- OtIkdteKlvFmGvVAwGbZ3lRXr7I8oY8DiOJJiMl/C4w=
+- 8QE7jJ496s5iwWLDQEHl/ANpBtgZVlxXz0jNYF2lezg=
+- EtDjTRhuHPa/iAcG/S+iyGSFJwli4QY9zkFhwpTdXr4=
+- "+lKNOt72HRmag0j/tI7wFDYD6i4K0AcSHDntxuOutWc="
+- dZZyIK0VQ4Tj+44Oy3315sCaVlyIBB/+ASFXS0RtgsQ=
+- ZnbqWsr7IryMJCIVQlnl2V8ay0SGdjvbfv/JhRvF67U=
+- 6KGZwpMRHP3sK7Ei/AmPdPswA/IKHCYJfgtQAtaRuTc=
+- FD0cIEFplJdiFF56fR2XY/7BJQqVNG8S+wNtt4qjs6E=
+- OMKDfq0YUP7UDyEK/5jZitrnU5heMijauHxBhdPVGJw=
+- iWG08JO3dgJEmg0wGe64/MGvBGpcp2PH1cBAKwWGRqo=
+- 9J77eQGf2Zrqez2KKlph42mryzmERJh4McnFWwAaA9s=
+- AqSlUlOcdWlQq42uluJRSYgut1/uGn9lPKkLa9PXvxA=
+- M3eq/s0J7Dfs+6ITnv6GIFjNfewRc6OTswslMJ+VD/0=
+- sU0yDqbwqoN+xkbqeA1eguUUQWegjk1x/z3P7e8skck=
+- vxQDxoJOguKT0uGRWfe0V7n2ziF111wlFwMmV9xHqos=
+- mu82NB70vK6O3DzTmK5XSkbpFF5Tj6rtt2AVsX85bVI=
+- 3A9/kGwW0cDYQu4N+4ieah3gAAm8GxI46xcJhcKq730=
+- "/QJmOfpBzqr74fFY18YREVS2rlp9T2MZGjb6+QblcHw="
+- wBHpjgN/GfAifPdSdE4/oRR6lwUmTQX1BLRGx7I3hVU=
+- f0yQ1ZwnMZY6GLviTpHOcocN2HIXblhkrreqigC3dTY=
+- idl0O3k7Iq65qBQqvVn99M2r/dAXlsMb51h8EU4NN8E=
+- UbdjaLOGgvyT1EEY0R5qZ1tf2nrbagkXdwwES2ORAFs=
+- KyB233k7pf2CyYwTWq4fA9BEt2BJxOB0FIRcSg19p4s=
+- EMyHQU9O7jBMQiBi3wRG5DUOEBzKy6heahHulVIIhN8=
+- I1uj+AM3Sz+OsFZfpyoyIzl9EaWG/4CPLkk8FNRxdi4=
+- dK8eou/cHJFC1w1Iq9Aaug8fYqNtBJwIlsdhACtISjg=
+- "+eLq5ok6duQ8AvtkwfKCHAFnhXiPw1eTu7u+5RlSXWA="
+- WG/JejRLINsuC9UgSm8RowQqa6YMxIR/OZIsfueLyIk=
+- wBqGzImBBP0QhmIgX8W7chI37ebdDWfF3TZ5j4br6pY=
+- 9hSi8ysYuj2sfHynrCvwSBA3xmJ5G48fgu7VXjMMiF4=
+- rl3Xu5clDu00j+jMY/WwHBOEVVmc7DEVo7wjZp4OZCI=
+- wx1tBzMfCanGHHjQ0FXMye+NnXYTxvZiPans8WSOiE8=
+- y9QnODWMTW0EHOmtAPoO5bj7YeuCdhPjK10kNjvQWZk=
+- vhxs66sgmRRQclM/L/EC1HGzJAGGRx5Qz7EeydV0Tyw=
+- 8EBNEUIsPF17haSWc7U0ToUZhJxIACEOKknsFb8vCCk=
+- 2iRuQPCsq0d2wGVqSn2GHdWbmQep/7aiyV51YtK7rOU=
+- K4OC+Wu0I8NwNRtbxh0QkN7gW7Xzc2x4IcrMG6qrWvU=
+- y0Lkri71F0tm90T43ZQq5HVg+4PGlFXf5o1etD599JE=
+- kjrONBC3SMnSd7Pv4vw+mSklejxk3Y/4ZliETrZGHX8=
+- K2KZIQIc5c4c9WEQ6zyX2/rjIShbW05ekarhVSc0ZN0=
+- 8qpu8Ux+mixcjwgZAv8wy4zdi+bwfyu7I+qdUjjrsHs=
+- ORC9o1lrvQSM+5fUXgZ1t8wHrYmq4rPmoaqWs36Anvk=
+- Jbf8hvC4YL1TBp20xA98xHt+Mcn7BNHNOTQJmYU8Vm8=
+- Rc0Ohu9i7dU42NhzpzktNewVUPpWV3WZSG0XDCWl1og=
+- WEgx6Bba2SWrvPXABszXI42B47f9CuUy9VoNNa2qd4k=
+- PtsipqcYmlXgP/kOzMNYCKapEhyklQJ1YIQ1b0iTb0o=
+- 7ANznY2U/zkWLD86M9uK/HsulnzdQSJLtrxVXb2vwe4=
+- 2qAM1ke/IZJaa8+56XxSfsO7AI6ZZlxe1F0CMmhW0Hw=
+- PCbHamx8rl8VcsG9+gumDBGe/rt+Yq58tb5IpMwj3+M=
+- UCHCZQuK8//Etp2DjxLyfF1jkK2p8N5WLiVPmHeRH0Y=
+- dFCUr/27C3ui2sCWHQA1ojkirThaDh86Cchg8Lsfbgo=
+- '09Idg6NDbwNCyPRAABkc2h5phZwcXc7hix8knE500sc='
+- hW1ToavAf/o/53LpPijOPvUChT7nyExtEwHmgod9gjA=
+- uWEYiUB7R9V0gRLkthQ4q2bhKYlT9EogvUGVvohNjVQ=
+- Z8/b1CoVuAi/PW6CYqtReLH9+ub2WfgsHqOzEjwfiak=
+- uIpUyMWsla5YGPVWrGxsMBxZe03k8i/s4PzgEOCkesA=
+- IjV28KVXs9N2hcB+59mvrjDnuKYHrK6OgzhXJZJEJUI=
+- Wa/IN6L5lw6xUibzaoW4+H+r3Kp8lGSBZrdChehdjN8=
+- SI5BXT1FyWU4zobywi+IwX7UDUt2C1iC0J0oF0B5LFw=
+- OG8al2VFFUBLW0STp1M/COSf9eYKNAeY+b3ly3FRbs0=
+- QSh5A4Aq/ssz4c+3DXoohbaWzyhe4GOYbm67t2cFQcA=
+- biui1ht2ZCtPXSdtftq+aM8bX4eOdIFJT8i45tY8Vnw=
+- 73SOf+TseWuG5ALWU/sDHFNjOeqZNaUadd1jl59rqOE=
+- pJdvHzpSjP06oyuxhFcG0fc2k2QFftBskEBD7nW4Kqw=
+- vXyu+dOUam3/DC8LvF8A+RxZbnz9WqpFjoAW/JRaIGA=
+- NLgP3gAE5beq692T8qzYi80IoEJnDsa2hsuCGWXMD0g=
+- 5+2g3BXC3zDD1BupBgWrmcqnbR+X5JCynYXp1W5KsyE=
+- loQSyXy0OKLP7Li3wl1obo5cmxHRIrwAyBa/rDhRUOo=
+- Q1xri6TgeGKtp6IXB1ISOh67QAggmCuk4EVESJlif60=
+- GFKL0GQcrL1bf1s91YU2GiBKfnvyfeZPLksZDsMTU60=
+- 0K89kDKywPPcH5SRgk6b9rw54LzaRmj3uQHT+PqqEhM=
+- "/QUh39zcgwUMmDha8DvAkmCm+fQcuDsy7f2tirg4rh4="
+- gc0eQspS1S/kWhrCAt1XknOcOz4LFDD0OHXg+aLBZ4o=
+- Tvpce2Gv4rVpgyy675K1IwmvtyopMkPuN1IEm3wry2M=
+- VS3SObO9ejN5sXd5vtdUawhZAy+oqFK4+58N+ySoY3w=
+- cUHdXSeDi5D/GIricwV1Sxm23U5q1mmYGjZheHBBebM=
+- pAcNhUD54w7NycbwbGKenFLu4zL/ncemP3laMl4MtH0=
+- CQlSRfrDFCxl+G7r22dkRPguJD2KYR+5La2zUt+JwJw=
+- TXwmVxIbEBS0aV+ouzQHkWTAwksGJHVVzFLCfJexOBY=
+- ekg1MzDJ9LFJ2DqwR9DTviGIMwYreqk48eF2Eu+/PI0=
+- 0b+EQgALTPG7J2jrx8wbOLRnWSBlQyXfPUkdHEb3yzU=
+- fOKuosEMRJhVTnIeuv3M8G9jWOimUGxM8d5h6gOFjuk=
+- LnejR38BfKPht911CD757PJiyb79jqBp13xHCZmRIyA=
+- VwytDJsKArzwLJY1SdwiBtmkgNLVP5hIfzHr/HYIZtM=
+- vTF8+wVJYhDbXQkNMkmRGP/NwnTfZH8L5NzQu72hPMQ=
+- zCltpEoGVskm7/H9qZSC5Bc0q7d8bLgJ9Gqq6J4bZbs=
+- aw0CuJ4Vtp2KlqbO2VYEpgFCBxQ2mpDrwR0psChjLug=
+- D1mNAzHgQJlPwjvCeZ77FQ75AnviSSrFj7zYGrylG4Y=
+- JALqMvj7UzZvl/Kh36A5kGkMAHngEUIj/6BP174cfhY=
+- STZ1oVa99KesLT7cp6oaGWwPNEavGJXbMJ/QQkv48h4=
+- rCDLBN/tvwN1wRnw5X+H9+KDE4JabDfoDKxJPvi33pw=
+- zV4mTtNEIpHmcQ7MMpMyKsbTj7CooFSWamoCjdN5RSE=
+- S2wm0bf03lNvtcxJZVpYDc7/25aj5drw0IIUEdhy0EI=
+- xE+5czyLhPUjwOu+3aCV2yNeOJ3HfHE4Ifd6MeAK3f8=
+- qbowz/yFNRspPsEOa7L9GqpDKQ6wAzz3F7MCATc8jVA=
+- WWRenwk+4tACIQCeQmg1n0OlYbwUTwH4AzSzjy/xzOs=
+- D3qXie6Qw+4yhuXm8/x0hM1BZVj1kOIIRnPEWdcipUA=
+- V0xnzVabqbxHU+7kBksXOjGiY4Vapv+GmrzrrtRWNg0=
+- tJB/oXuOmJAzwGCMostxZq71A29ovmlDeAlj7VVA50U=
+- ct69uVkbwo4gRCyH9j3Ylp3HZemRBP8qugEji6bUfd0=
+- IUE7WgFtaP4ERl9f3Lz2eLMyHD2nBBCh9rREa7ms3DA=
+- zCokcuU17Q+8326Vu5ilGfcda0Sqj+KFvT4g4RK67SM=
+- ti8stl0q3CQNLPi+Ebl4iBNOTwdcRkIi0l+134FuLKM=
+- 5PNatTM76FFyLu/TPuzvGO+hUgtkwWcLbk5+7YUQ6gs=
+- 1RqwAemqg9qacolVDN88kJN3cl9/Qg6cvzjuxVxsn1I=
+- 3ol+dL8XntDtHhzuh8BALPbyES8lHmAC/S1iczj+TeY=
+- VjHCXSghON8MJSlMVGswU13rN41GT0SscGlcVniWa+8=
+- N9PqadyG56fcIJWj8dn/uzD6xa84UGRR+6mm9IvvoS0=
+- VaDShZL2pWwQ/bqDnOW434fFWYYH2jVIpaDchCa3gqU=
+- S4Pt0kr+SUSKDV5Xf7+8wPmQqBdOS57r2maRu6iFTHU=
+- 6FLHOThm2Y94Q7OuuPRQ0XXF5K27vzcSt4zHo+X+1qw=
+- "/eGn5aTtMl/Be+p7vTJ0CTciCZkIfqSfALPzB5XmXZ0="
+- w2EmYb3+s2vpb5B4aApNAwp1YVMur2jRjcbLhG/P8JY=
+- N/v8Jiy5ywpL4UGpF6ga105iak1/id5cwvjaJ/YYVkw=
+- ZiCTQz3N2gZMz4ShKX0RoTtKLn4+5+kGLfy0vk0Efwk=
+- wfBEQibtvddwawDUicLKticxBpfyloIBHaeRJuwmCDk=
+- gxiffGrlT2l2D4605xOyax//hFKIuoe+r1bBTEX7fsg=
+- hxm74kuCWBe8MpyTmzaFGFpvRaGBnNUDBvkhhCFK9hg=
+- 3i64MDKLJqprrsXJfKa7hQqcdl5I+zIkgjM8ykbMME8=
+- V2eGvospHMuG7qtq3KQQRV2GNQLB+BOiLtUhFtrjKgo=
+- Lin034mcVJgDT0bV0IwUDtZ6beTXoNCtntIqidFNdUY=
+- oby8ETgTzyqOL4ahYjXCnGXq1ACtN9dJp353YT6P9po=
+- k8+0ggg7z/HASOa6LKvBBwReKam7OG3KMtZmmaraCR8=
+- Xtx784aAY/UqNNvTKaAVbXY41vsp42TpPSZsX9dO9kQ=
+- 6DF26u/MGujEoj28c+vPEi8mz7m6XHz0dj6WwcOKbGw=
+- EeKiRAQho4QDe5tTAKB1B15Q/+7V3+Zj1PzRWMRJbDQ=
+- EgdlISAJmCbBtCebZEGmDxh/IEQi26LN6X9BGJFoTSc=
+- 3mEhj9jIeR3LBHatXZpkgnvlhFkTosVz/JyhnOCrK+c=
+- tYHaBeT+x9moPyygMJ5upfHvLlxNr6+/s6pcIY0necY=
+- lT2kHTcnCaZXBPCJ+SyPIWcJydpMwxaj5xLA3mwEhDM=
+- XzMg711BXtp4zVfoPfFIrIaQMuGVoogJStQf+F1grzo=
+- OEVH/lJO3TPADRmJy4NkWaN2E/WuaDPNsIFC6vN5Gck=
+- chr1URqt8dT0OHJ3cX/8EkPzaF1+OoVQBgSJ4y1a92A=
+- 3wblA8lRJRbuWazTKcTqoNyjZvOwbKr95c+4GsJ8HtM=
+- XlpEfLWaR8qBv8l5v8mBG57XXJFsG1YbqUDzzhaRIvY=
+- TtvI9gIAw99urMVhGG3JiXVSXuHHu0sopNZt7TNh4Ko=
+- QO/gIb7zQAj0ROIuzUfl0ngWXcqaIJawu+VZaJLkZ90=
+- xIqFGMmHSG871bHkhnZrxji64LrtzEfp/0fPnpRydOs=
+- RiCDuJcjzwZXOEwXOvBYWM7JatbdtDZmyhMMgjmSJls=
+- Igwsc6/Wd19REwIXfR1nTCvqOKW6Dr+z+UlDlA2kUVM=
+- Z/6IpRT7JN1jTJvRmWoR+ew/1+npxoaQLY7ZUZwALUI=
+- dLPH3iZYCGJiNaNlJjFM9UKwod5X7d70EX02V0+VpIc=
+- RHBMA4cDKVicya7k6urwkgTyGSuMe1lizsf/wwzPnsk=
+- E8Z6ANi1YPjwlhvfYgJx1HrFtyTEGhX8eC2DfqtfMBA=
+- SFjnhohcEPuRX9zAQs5vKXSH2aKZRzjHW83nugkb6xo=
+- PHNt6UcdXzWi465M1HOMGqbpxwR3Ek1b/lYfLCBM9/U=
+- PaEYGa2Mx6zbaGgLs7oMi0qe7KiWJYsa9IyDh9T6hN0=
+- CmTua5c3wz4JpZNNMXFd1tZcT4GETzVI7cpMBVCHsLE=
+- X4lJ2FdrGLsQgQey2h3joqutMKj0xeT1m8gsAlqAfr8=
+- Npp2MI/6He1tnBlMVzPQQi6sTXv5Ct+/D3uqU9LiZlM=
+- miWPCgosAZH6vBK9EUNm83Q9tl56sBzLd/vbZ7Eijwk=
+- 63f5grXDsjWL9xFiZ6GFZvUv2Ohj+jD0jtbbD81inQk=
+- 4Rao9VUJGNkhLhIXFma+7WyRDtNfO1YJDlMbORd80L0=
+- W6zGoQgukz9UAn/cV3lJpQWSgYiLwP3vSl+0v5KxPSU=
+- 0L/Nw2Gp4SEuekWgWvF5eu70a6LJ00cptGzWml/+u14=
+- uECaZDYas+DKL71884vdxcDdp7UPfZ9n+7JNynrzNDg=
+- uIbpAeN+oUkgKg89+AdPhMxLph+KobC/HfGUFDhjbVs=
+- QLOEEc7rLusmRKc2mNWUlOGmSlgiPKEHEW5K5wz2FZk=
+- UWuN+F7ZColcICwnJGfz1xnBBZD1v0BmIYcSEak1X8Q=
+- pjhAosUkOGCq88/Tm66DUcvJQwMSAyD1MGIESuZNAMA=
+- W+/b4B246In/R4vygzVYu+MQ57ZPYw5cx0PkjxJuGto=
+- MDRuzyYk+13K8TSt6C1WdZJJRX8HLFd5K0O35UN0ZLM=
+- zsKprJVHlkDHimXYrJn3a+GQMbnY+szAT8zXCGfy+1U=
+- E9ClN2i5RUqOS0td9ePmJJBOul2lOeRcH2loV34hvTg=
+- hBVcGXKtmYbFCpZovwwvKOE0Lyd4YfFPfpUPHNyalDs=
+- j3REnyTbTbBRrwDu25zDDBByQ6NfrN3egc0jA7CTAtY=
+- uNmB8cfDwk/uiG7jt3iJ7sgjWe2R9ZtXovXEaor922c=
+- fnf1Ob1veX7/D6jvVNx7e21QznPcFqmhJtNUZ/iOgKM=
+- TAU1us6mFxEFJsdIKRkdf9Vuh01BS9aJmPw7FAUB/qY=
+- TGlfgxUFKkXlsruullDwzYNw7UWhpNHa019T2za+Jb0=
+- 02Mn5cXJ3LcPF72WrYGRetK/3LzwUkc3itgD0dXQO/I=
+- V1LpRrDinYG0iKsWR9AwpwWEU+bTvG7OkXyQhuN8FDo=
+- "/aPG8B/A0FF4i2HV1NPwUzVK2Cwddzk29qyYpcOD/GM="
+- 7izx+iGXV+0Na8s2pZkc6WmUKu6mXSwKb7dlulVMXOc=
+- vVIQpXLi6A3nlN6V2vUigwXVLRVf9Oy/wY1xpIU9yPk=
+- 73R5z6Dy4wz7Z94g9HskZ6IbyDP1TuNOSbWgva4u0CI=
+- dC0AAd+8OZc2vhCl688HjL2ELW9RKjBE4aax1SNQhPA=
+- YkMAC4Ha+Wu99j78RDb8B8tFPfmKJxlvf1SanIACY1w=
+- htHkWmkwHKK9dHxcfJTuQWwMjeS9z7Vro90SpJbEV6s=
+- TW7qPGvfZlfYBXOJ3gcDEu7cK+8HTze+kggoKKkycO0=
+- WCLotMf3s4BvtTy7HY1qatFdzYki+k2RSbkqFh8QwI0=
+- NDx5He2hCQXpwDvMrrdUE8nulgr3sfIpH0rMmSXiBlo=
+- To/gRsCo+x26il2YJYAHd//kNwzSECfOpT/Txly6NVI=
+- uE3/JMFL+yLqIUs9+2dJHd3tYM4+ucw2+V5joNBL+PY=
+- UwNf8ct0CV8nXyFdsmCVvZJufbBaFhcVWVI+6fqWOsY=
+- ozx/B39Hi8WVQ4MeHhSSQs5/njwg11MHdh07pG9ABYQ=
+- yP0XWU28OtnZsINQH5VhSfP2iRjfH+D9LO8mi6nHno8=
+- HYs+NfMBpbL98wfytHgCCyELoBimwD7rfaWpWVy40gc=
+- WnN6Q6CR58dBEocSmgCRcjzed/5VpnJrlWtXzu76b8A=
+- Z3XXi79Lzl/d7117+hg+LbPFu+RhwZa5iFP8sksp7hA=
+- xunikcc6Y8osIzQA/PjzdxTeBORXo3+L8IgLd2MJm6M=
+- eP7n1Hx2SOW+imuMQ13B+xaI/8FRwDvpN0OJP1YcCLA=
+- uCHgPBK+MQGfR81vzkSM69P93ZTcfQ3Izjg88MTpV6Y=
+- tc37EsCCa1fGam6mBs1vYRBYZ2dQ2efV2yBeZ9FmFG8=
+- Lltkl52jZvqV/EHJG3AMRGWoyu1frel1bVro0GU5M4o=
+- sPFezeZ8wElWez9z7/jAonA1SnkFPAegRieio+SS12U=
+- 6yHQKGWk9+QIi8wGbZK4DE6KNXrxRdCjS57dj++elTs=
+- eLcXtq7uj2e9AGoTpxUPKvPPjPeJKp65kEPkXd7XwMo=
+- "/nBgtUvu+ySTSIIeMszoOQqA9Y7/7h6Va+968A+zlZM="
+- pgK3fJGKtbXh41H06at9bD8pR9yJm+1S6uZtEqT41FU=
+- Q/QAq0tsZ5uDA646RsbfFpHb8vg4Rplum5j9q/D6yjI=
+- FgBabr8QYwDE2jaA4kTY2nDgRqnJRGKOoHtToblpuIQ=
+- TSdJF0SqZyIEr5sgNoIbu6luGPr6J/yAoQvxJSbmeNs=
+- u9ADSz6aprXfU3U0eIU6DCvg6EtXOJtsoVwgGbzOBxg=
+- WTVwzoH6hzLFcGWrt2V/XPh9WSO8fdKeYG5v1hWejos=
+- jMe/ZxeTKmsTthjLAPpaPt3XQpZ14ztossHjt6iDCv0=
+- wX562p4JFmXg4h0eln5KETdlZ2mcqRtOA0WYHFUv3iw=
+- G4lNxLqDh13YVlldca2A90tIkWa9mqWJudU1NUduJ8Q=
+- 7IN1novHX9uk5BTqpf2cVvkbOUXqT6Z5wuUsSmHl7Q0=
+- UhIvADuT7NJzWLVdzxpoCYwYIhcr+eqwz3Kzz0oIl4g=
+- gciTuZpz5B55Bse4iMTLoproIfz/EVuFpcMZf8WDdtk=
+- PujF/XbxKS99NVivNpDO3Yd8GwzI+PVAETB2+gEZXhU=
+- jG1TpkCl+fojK01KY7scOzGx79x4DqbuITLaiVq+jBs=
+- uiF2euSUr+WiFl3LMzjFMj6ZBwUONFQsQF1XXMMb9Sc=
+- K4++zHdomSEc1bX04tSFrVXlUPxyf2UqJVYoqvz599A=
+- Aqd1Mv028ktTJURaNZK/zZhPfnxXBSy75SSdPl+OIpM=
+- hupUmkNVHVe7allrqW1Qp93Tf0RwJ8lLUiMvk6b3h9c=
+- v6vKdWIjkFLpRJJCz3yla+d7JXXOsZavsRx/QizCbRw=
+- vrCzVZ9VxHiWEK0/Cj69gYaPPL3t4pkKI9YShjkfAHU=
+- TxUOLze+obi3MKphN/BjwduAqaQArxf2sT7FsBAhL5E=
+- C51lW5o6QUQqtUaHNy02Zi6v5WWB5R2CjFl/Sw30b7k=
+- WopZgTTEPumc0lTQYpW4ZnsBEcr/1dBd3lPBF3TVhK4=
+- aXzM7rR2t0gCyLgswTPtCIr5yzjqFXzhlOZ7+UzfWJk=
+- Y31hEsxPB6aUkLkAmhPK3124AdipDhW593Z5M0FTjC4=
+- fE1XbyzQ6Yo5l1xWCZ/1O6XzQqpH8Ravf1zCAz2gv6M=
+- 7MV3mN6kqUxez3mBx5eqtSnZ86vwTVtswGp4Iy4gql0=
+- m1KJ+ievuZuQ6SS+t94iuBcnOmxv2kbWNB+c6w/iLAY=
+- 1TUy2NJp86eGkLoiYTFk0CbV31K5dl2Zz35ybZ9sCIc=
+- ivf9wcZQyxDVaFJAFLHiMUvbn9XsPR0pYYD4yAeDHs4=
+- R5aJEaPUCU3qcmDO82cNKbTTNfC8AxJLpka+F6ltb+Q=
+- LIaALlXKaI99txG3KYw3stcVzbs8u4GMW/onSEIbnyI=
+- zSe2pq+RaxGVIEzl9j2dgb7rQd/f6fLuRhwNksPdP58=
+- Qq8gUosWDmVM7x9yQiH9tumeT2znoHn5ZnVWOAhK2lY=
+- AdczJWUkVfJ9rRf20HFnvh6AQqa3TYqOUuV3W3zvuS8=
+- OxSPw7CeSWTA9LCIIL6NCYb//zSJp0C60ODaFNS5Na4=
+- ygn1obdhDORxgOT7gsbOF+oXiq0gv8jnZqfOBcpIrSU=
+- demQMb8LZUsk48slwEo+4QuuwZB/G04pDVqdux7alxw=
+- i5lqDCv5zvNQ+2adZkMfBsfCnRDXnCc16fhHhnrGU+o=
+- jV+DUEu4N5d469LY/9Hgf8hzBzZJKa0F3YGjzVtDL1Y=
+- 0eCFlA3xHfN010L/OFFTtac6vCbLJFJAQGIFOwqb7X0=
+- 6gG625Sv1J4+4yH3uYE6OXLJ996nlSeH0es5wqOS5EU=
+- abBgdfOwWwIyHdUkUTw39XCu+S9eAnJHw2oLc1mKQ2s=
+- fKGoyGi9PnOFap+FDtjusIOU/PhGF3hwvy5XKw8QpLo=
+- 56fxwHAgiKOqLutqJrhTfVsylhLnBbxbucWl/V8tJMY=
+- "/64XViHMtkCkFBOWdi1mb+KMTWcycQw3ACg9+9pDsrM="
+- 3bJ1EX83TizmzylqHgPatX4U7ac0OlXGOYKsUswrDv0=
+- JlBVhMZkNlsZmUoIiAdvAAq7ajwZ/alFGrG00TkHFdQ=
+- XJf74lxPAwFo7xJl91aldj5mEVML9JPgqxwgIkpZ6DE=
+- A+oPsoOVHNXjgnqUouAK//qG/UJqHQFfFZmpcKAZ01A=
+- 9nRQ3y2t38qDpGXVWH00N0ZkgRWIq5zww+TnfABb1ag=
+- WfndPLoy1s1TJGlU8baNQZqOquYlkgvU+x8eHeR9C6g=
+- BypjjSLr6FNqUxMJcMh7zPN7+MdmCnIyPXp3na4meNg=
+- ejlQNGC9FAcRqybRD4nu70LMd8Dicfip8P9/FGw6lt4=
+- FnXBEUIy+hG26Wv0KwlINl+WWpuDF1S/N03NfqJtfyg=
+- qC3NWWj7Re8enfuLIP9/ov/afwv/Bb+5VuoJiTz2pak=
+- F1rGR0bFqBtOSUafYi2nerihZtNhBGZIqn5o6wRM8Qw=
+- YteIPR/BZp+U7cov6ILnVtQnlD5ydF/lLBdzm+7FSKE=
+- 37PhW3hxuFwvnoO/9rkHP61iyWS7R9wEyp8etGzzUvE=
+- 0CksZdFoIDqBW96EmteWo1p6HaDnRjgRI9N4oMrLbSY=
+- vQle9SUfM0k0Atf2uAOClifokFZekrM+GONwzvN7I2I=
+- 73vtho1RQlClUbjliFkZkReeZzh9qvlCZczQung9Pfs=
+- "/aXcPWDAyFeMKDBuz+KOg/MN3PNM5zOtyTSwAjSIcgw="
+- aZrNwxGjsNry7XRB4sEyiUH92ySjJ+aBUgUaGLIx/Mo=
+- WoOGCya+sRMGhSjKWux3aQ7y0o01fhTzBfwv8gRnvaw=
+- HrpL/XCb2lOOTTTEXmfjzo3P7QmptfTmlEi78B94Eck=
+- yG2dAvSmXhGrCBvHQ4BHX28jRmeDZ/FAJEkWs7CCqk4=
+- "/CNDFHEopQXULrWeVlheOo4JLYFVOBHvtCHrUn0DiCY="
+- F4Zp7+JBmLVLsU3vfAwqnXDe80YZ0Wf5vhjUwk+XOoI=
+- 8GsputXV5UhoQNlV4tUqLhLS95awgAaq9xwnb2NUD4g=
+- uJK9U4F2z1UPlU7+B64ModnjdLYGTngzkGsNZ+bCZRY=
+- 4nNgC7kWanej/ou7189FZIvomc1GioTx1yLMXkKC148=
+- 6Cukd0G1lqlGlS47QRaj73H0SLVQPpf4tk194Z+tzvE=
+- OkICZ2mpuv4knNwHaTEjNvO6DyR4L8WIMYyyo7zjIZM=
+- G83m6rdYBeTb5woDfpm7BYIwCDJqLx1mV+N564Yb3W0=
+- ECLG8I5Bzt1EQajvOJMSSdGbzJmsu2FkYvbYsBlagbo=
+- BCq3yNUI4S2aoLU8PNheyQTMK53FfhbuPIk4o6huwqw=
+- G2MucKEqZnGWitalXjka9+eR6ZOW/RnUDFGoaUe7Xf8=
+- kY4ZQWqzgxvPGIXOYhMOUrhxFBI17R5cY8UACvF2a84=
+- qmdTCRaDzrtgSJihKpcP8aZajAko5UKNvmUKBES2Mw0=
+- G8QRmWYLVlBCKMqqILr2T+9Xx5m8M3Dt82JVNGrPpEU=
+- aqRecnXW6O8X8xuOrv+QtrwsD3809dMaatTq/6AQN0c=
+- mKa4beZ7Rd4RGDhLRc13Ygf3sHpq2bw1Nzc+qrcay1M=
+- Omfygcm7L4QQp8od9rTzrerCxKZFJPq5QegmukzHnKo=
+- CcQ2IqWk/KCS5vVavhR1HsXYer/Cs9WP2EmTnSw4MsQ=
+- 9z1bsXV+2J8H+UKVB7PWRnoDQMRSea4O41sEY6O5dds=
+- wn/YqJmh+WRwe/ynRVHaycnzbg6uVSdgx/yNHS2PuyQ=
+- "+ZC5bpbcTy1mXEY8zpnd1VAWskvFhz3S+y8Rbkf4wLw="
+- B7GGDCOGRcS77952ClLSjP9rlQqRTci/7l1vzRvkm3I=
+- yjPMDESDo3r8eWZIAcIso5KJi8R/mu905wqg7CIJ0JM=
+- 6atTfcT4ml0uopUY/Mc2I/YOxYWTysv3t8XzRFti9cY=
+- GkS0XunkmiOG74lkoM2Mshq7Qx7rVhsH4G7oJFg0Xw8=
+- HfvifWTghvqpoIxsGiZSaU5t5sTkQMsxTRW/pSn5cOo=
+- CWunfGiLprYPqc0QVsYgYsDtA9/v0yhCbzWYSg09u7E=
+- muniwt9o/Xj6HrOr4stCmbJEJbP8U+Wn5oYWN8Sw9QY=
+- wiyOmD6lvDED9LFFe1JiaJCH/naCL5NIZrtHutlH6Ec=
+- wvtodXwi6Yrblfl+YFDrY2gQ1BoQuAPlwEB8K33EWbA=
+- aXQoDQoX/jjyoqUIp5xuaqEDWXRJrHSFlu+popk7gbo=
+- EMZs5+T17/AwjcYMJTcT/JcJ21Ro4AlhkUKKSbTYu0w=
+- "/tutQ1hImf2jrSbGkDPeQToUUfI40RFuNsMFADQfByo="
+- O7aKzLqLKKBg6DEaEN8peU6nvum4e9k+repgpRS5LVM=
+- OzeOShB6quCGMPpVnXbBki4DbR5Ojm7Auy4wm5IMJnE=
+- b1oDRgxSQ4OpvNkObbEtXJ1yJlKeZfrS47h5JeXV+zc=
+- WLPC4O7dVtCuZKE0ncLsBAkNbWVoqiEbQEU17eO2UPg=
+- iMuLmOpDkYXL+Hp4zq+q4xYXxiicFykBSFHJnNrxPbk=
+- fGirhj+OUEC866P9Q+aJFdkG/b0GHxpQiESLB+Q3CGU=
+- rdQly9Ji7IHwq/Nb/iNcTi/8o+a5yCxe/WHg9QPoTeA=
+- D1VHDX21Iky26QX9VBGHXIrtRxo5sJaje5wP5DmVgGE=
+- sfcB3lj1PLtn1htgmUkfYG2hXlapVgg+fNpBcY7YWZA=
+- pLWaOTsQDvRXbPkMbLbjfpX8PHdU0VY+zy38vSmy+XM=
+- 2V098eXuKjYbPU/h/bXxjXfykrWTXioAIhbo5QgL5bw=
+- s6BZM4ZcXyx6/Vdxh6B42xFgppAf1n5QDJN47Zk0WTc=
+- Mp8AT6P62rGD1g/PUOSZl2w0eVdIZ8uiIN7M336tU40=
+- PpXzDWivkLsMJ+M8zrZ+kCyr3XW+Q6nsWe0ZOFSuenc=
+- j/QYG0T5kcM8sQIJlpIgWMOvDEl47GZuyzY0TDo3UzU=
+- 70E9aj9Nm+61rtN6enyOJNHzrjyXpw+EQRVsTgLRkiI=
+- qFl8kb52VrOFcqUiD0YLNMFtGj5BSX3AbYMPj7eky+E=
+- HPtynkp3VoOIkXJy75G1/20bMy3wOJwheaOhBMoDGbw=
+- xXr/prilPEdQ2/XC/KosaDrubIdTZbOglePiMAWjBS0=
+- VORjuy8gg2XRmJHkpJ2YewabhiyNjIodQheQ9HXWT+U=
+- rSQFO5x7KSQJ8eW1DJcRlGdknEndx4HlwoU6Cs8nuoU=
+- jwS4zLHooWcDHMQ8c66UEByC+n6GIv2ltVd5t/YNcIE=
+- e2X3yKAnGh2sH/lBkxrjM7C+siK26w+sOkgCFnsWixo=
+- RXfVTS9bA1zUDlq4LwO7xOeWWMm0OMCzcD2ilwxgBu0=
+- d/7xiqwwoQPn2LH/TX9mgoDFJo//jeEpO5yIS4e8U+E=
+- "/NBJmXl4TxyFF7t/ExwMY1Id+3vYJxhF9cFIupLXCJo="
+- 1p7a6RDy1cSlDtbrAM4VTlHYnoHQuQfk74WEncLpcag=
+- 6J1pc8NiCiCUJN9XMXEMOpLwEmLn8cATkIs2wRyuyMg=
+- b3+XOSYtdgILKzCEGDvy7GmgFV67CRk2HNhILfoJNWw=
+- dqf+2ze1IAL2d9uAir6D8rIfZgrdtly+5/1VZKsMEAw=
+- Ahcll7j8+9zafikUrWeSCpVxwMwyd6k0F0q/RqASt8o=
+- e2FwtrxMCeP/k3bl7cPHfNOywswlyN1S/y2AE0N/mhc=
+- DTYsLYd7mONyJSyIzcCQc6d+/qvdWMEAVaVUCmDa7ss=
+- xA94FGr6YU+6FJJeUWg1Jj4DlTjjpVC24hLuoQDHYw0=
+- MgMj98cPlwlhd+1gA6bJE+xmlp4trq0rA9m0+s5n1UI=
+- ZWODJtf11frmxIq6Hc21bFc7zeGQK7hMBdphiULLkaE=
+- czKm2dZPaiIV17hkNMwE/uccJQLWSxnBwTAde9MVPKc=
+- lvKIbAoxW7aKFrxTFgRmE+e2Xl2nGc82c2UkE0As77U=
+- YAc1a/gqXac3DGpmHhdUO+4tDxBIYy+jbC7nD4qbg4w=
+- MzMFI53EsX8fo+GIHNPttDbfqm/QmeME0+g4EMrBshk=
+- EQtOUBT4SSk4fILmnOy/y1q5xyV8IMRFh0euu1iGZzo=
+- zdoPIGU+8ZLL/tqdox995uElnrsc/bg5vnCwZ2zxSqw=
+- iZ6WX5Dl/rnlIVju/pxVt6/vhJ33g7ZB+3EHKJu/cag=
+- 3bA03QL86Bk4JR6MD5HD2gO51olEFeSf7M4DMCmJpqw=
+- 5rMBX0Cs4VKmflL7AzwSJM/ihRCpUaFT8so0ZJKdt8M=
+- rgmJ1OIERs+omJSeReIrnrspAkrojDRZ5oEgkAALKds=
+- HRsRdmAg+9gxCVT9xZpRZznnQNFVy/MUKeVykaMlcYU=
+- vKniV4PdM+aybWMhg5Yrfbvnzl4IUCRKqWTWO6L/Mqc=
+- vmh2in1QHjZ/rr6iRcLy8hhdHZQGEInS0s4lp6uqEjw=
+- xnKjVLaLJIoPl/UmQzVqJJuxsk7M6/caT5qnce25bu8=
+- eGLrt+RzFPXb5qNR8G5G5yxMDHm0mSXHPiqc4YsjVoQ=
+- NBDYpR34zl2TOL/o/FGBYHGcn22++kT9Lbv5+nY6Vn4=
+- 8nb618gGZKOrt6voFygJq4bwM8rEHhNVDpNM8xAz/2s=
+- 0Yo97OBEoJSyqDCQp4zlna91p0FxQ16fBlhdYwL1W+c=
+- I6WR5IpIA9uOO51krbijxdjEkAcfTeWoaPttWmMJ7gI=
+- zPyXDiFzgKnwMoo2+kkfW+QmzUsQJ+QQ7OHYBKsp3wg=
+- d3nUmFHIb+2Gjk9HSkwtvH5n3lUkYoJKWfs5JW/d/NM=
+- D1wcL1WBxJ+guLsdYUSCsjaLGv5Rk5ehT5R5e9QTcOs=
+- WLbiE6ZIVucwVVQ7jRWUOLkG2OWxZGe8TYMf/Zh43mw=
+- 5uZ8nUl6f2cHmEgrSeqmjjKCr8axoNtyivKovIMK1sc=
+- AKWPxlkyJQvfyXIKIpuXzV7/j88vtZM7/4Tsd2rU/vY=
+- 61RN8GnsTjRkim/ETZluEESJtGEmh48H/0XuGvh5GN0=
+- JAo37VRwZ4UhCB+dvRY6lGDcpvk4uwqbFY1DCgaNCII=
+- zwIGN7B6upCyPGTdCYqmw4v3Ebc/HrCUVjh6KN6ekfY=
+- 5Dr3iYt4kIHwGBaA3SZ8aP+L+TrBVa3zcceECdDk+KM=
+- 2WIHl3wnoeB7HV9yzPlR99Ri20naIpaWfmS0R4mQ4BQ=
+- Lok7A2XMFrI1vMxq2NdtlWE4Ni9TAsbm5Rep3eUi69U=
+- O9NOErQWEyq/1QBMS7h7b7gMMQzZAnrXVujrxyqXXiM=
+- JPhM2B/9AjVQkGgXEdD46OI1VpbSqb8DJ5/uLbRa/9w=
+- IgxCy2dHjNfCZAk38FB5SqPlQLL5QDocs8qGA4Tri+o=
+- eC6bEUmbhdVLOe+6qNOAJZSNGNk5nokE6MrjC69De34=
+- CRt3S3OayO86+LsI5MYrtvy75KHJs9bcYZh+e6GPKto=
+- 0vCSHeVPclrVv+Jcl1lMzylf3ECqcL7mSphbXoLY5ic=
+- tWunK1yM8FDEnSVGL7WmCxiqB6pmqKSYXlKPKH3uwXQ=
+- 0MO9Ew/OO+c81xPEVXDpQPn3q5wKkwnZDGF6w6y+p98=
+- G77K6mlZNVwRU6PAzwPxnZnJJf5uVLM7YgkSBuR0Qfw=
+- ys/VJEADRN5RLP+n3Q0X6izIRr2fp5pmgfOBIHPU4H4=
+- Ytm1ayOp7hinI77UIlqxnkNxsvDk9MgwK+Kpdv85WhY=
+- AyzBH+elfn0KRMfayhul10rBRKiuCRJwU8Q2kCOrb8s=
+- lbOvMJkmFpVVWxKIawdYE/mkHJ2mKPIJLWI8QBILoDA=
+- Q3mx0goFqBfW2pizSbe0U7ZwZRFXiRgp1N+P9i6k0KA=
+- fDbFsPtrQ/o0OQdLxs8UDHop6rvQtsiFQ+zgDnj1+vQ=
+- lTEk9ZZQgRLPDGt7QQpZZG1NTv32WmeVBy6z7bAOtu8=
+- Bkf0sL/UmMN4PWlVYVmVmVTtpewByGE1J6VztMJsorA=
+- ZvH6gy1hmxxPU2MbHuCc22USTcip5ZiK/KMh21KYY0Q=
+- CZOPkSjQDZc/XPMYs0PgI2OKqIqT/Ycu2Z0hNGC3Vks=
+- B/UxYgNn4enOIirL7fOq8dbh0w/bY3KkFjM1ZxWRWIk=
+- 7vocfgyWS7ujpvA9QTJdQAgFD1AGLkPjvNnr9/dJaME=
+- CXy2wyWuv1MUyE6oJScVxSHj7hIBTR97I+mRDnQekkk=
+- AFSn3p1P3c04SrvFn+m92WoZJsNt+YcJEkwf8XRs0Mk=
+- GF79TOh2tpjP1x7xwQMRV8ecumLFEFx14CcPGhmDBh0=
+- lFcpmymsS6WpbHwr60l7GH0HRZiJn/V0ugGbOEq/62w=
+- "/j6Rr7CldvpTwJy65BUZvK5Ln169vR/7P08PGzqsWUY="
+- 4WiJe7STV/YMW3SQDFofB8OnlqctvdeEOqMSkWMs1/g=
+- nhXsgQ0kj9IDDDBrWCvzT9tTX5DRyTcDqePr0hJDbRE=
+- 7unG4ZBvblS0lnPw0bVuBS3irc6N9fM9YGybu8XmsEs=
+- GwHjChn5C1OhuILspl0oAsiTY3ZcktFtgbCTdjecgLo=
+- hmJGfcfJ6rajldxzWw460RCCzDWV38OmyJOqjNhmSf4=
+- MIlY6GXMyQ0cxB0peUk/6YYf4uZiG4lqgxxOk5fU7Eg=
+- s8Ka6ltQyF5KjWEQ+e9vzkNzQP8E+nI7ut3sEdeiDX0=
+- Cad/ROuOb+5kCrz6ZiachYW/wgVOQUUdzVqWBHDaHEw=
+- unXNOeqpHsae8gSqB+v/0kUr62yg/b5c26gb1zH0dG4=
+- X1cqDaQDsXqSUCef7rqKeXw4b0doEkexkPDYaemdSMY=
+- M735BEiyPUO7Xvuu9Zc3xLpJpz5XZAuZV4pyEEgix+w=
+- IOnBQizTRYfjn3TqyJGqckziA98wNCKTRZ3m+rNG60c=
+- cp72QrniROkpozj6e4ObFwg/l1VcjYq4VaO7lBYpkRM=
+- rdx+lF1hLa1sLuv2LVpyrRiSOv0ZWUN1BnKWcQ1WzNA=
+- s/iI/Y4rmIxyyqEuOK21fbA9WMtfOBe+QcXU3e9F0fI=
+- lM6jBeKpH+J4+tIAF5NRZx8xrfq9UglrwTBduaR61Vg=
+- doxa667dfdSpe/ZK9fJgZ9deTmHohL28o3QszHxM7sw=
+- tZQ+YEgeK/c6tRo4ftgtqHV8Gh6kmd/tCcUX5/ZGU40=
+- sbLBx93BTdfCmdz8HuxaR8gUh8ge85RfyTYV7Q/siBQ=
+- SgGxQJblE57EU66bXvprzz6rGJmYbuZNJxEV5Y4WlZ8=
+- FPtCbwLvyIpW7Sl+J+RozcsoLZxlyW/ivbXzHmA5XgQ=
+- h+bDQ0ygzydiLOuMXklj9WCRraXpSaLXgRnTMmM2jIQ=
+- iwBkgHWbs0GZ9TveQ6uYlC/tMdJOEl5B8f9Kp7CZixY=
+- zvcPa4GK2+SglpiCpW2OapSnhi77JgcoYRCeLS7JdS0=
+- 0gmrgie7g8inajsVK9+E2bcw+lNNbPKM5Aap0DwU7aw=
+- 9ckxayB6jvn1r27QEPjGclqRz8vRQxvEK2fn7bUyY2w=
+- D3PTa0szqDXLpaM7nihYNllodWHciHqU6T497Gt4mn4=
+- sV0WVd+KwQZb6yIakRuQp6Y0XtqS3/C+dytetE4N45Q=
+- mRfgDwVR7pXjg9a7f/BPgSW4JDNNQkIJdZp7HwqAmcU=
+- I3VKyvzM/BVP3pfb84+4mFc4ZjJ0F+X4fyyW+yvK5B8=
+- KSFQmXqyTRcBJ4gah/QX6Gq0bEGk70BxKWbmFyQBdbQ=
+- AA731ytHuRO8WO5AfaDgIDGGMRynR1egP5H65rB4zAM=
+- jStlehNVoFP/1NvxnhgoVgRwK0vLCLGFYkJDhazTc44=
+- lhNIyc8mNOicy8fgGLq/dm2fgUPC15tw3q0RovZF4Uo=
+- n4nV9ST9vYWQ3wdkD0e01kyw+yRRfS52VcREDxTFjJ0=
+- lGcwfZgx5rPyDVKD4o/3RruuU+ftaQUQIWz8W8aUplA=
+- w7s9RC66+JAiwMl1Pz6lU52wkN5uEuqL9N5w/8AAqvo=
+- czMZH9SW+ltzdUR72YkqZJonaereJyTFqIqgwPS3Ack=
+- fmnz5/NkSVlI5cmFdElJ1+a5C8XeA0QOaTV+/bFL2xQ=
+- KEp0ikkCq2r5eO/zoHWM+7rlhRazljcYxpmNAPVD7uA=
+- WPl0C3fLX6iCLd8Z8yHsSPCSIv8v7ywgCMDMDVAGT1U=
+- QfvrRvHK4/NTVw6xXCJL0J+5f9DtTqI6Yeih+k51f1I=
+- j/2ZZDNJ/r9EH5mtY+zy4s8W4/ZO1q1FMqoZcf3UAB8=
+- R0cBXHpBDOt1W1fzR/2Ns5hcTZZwGDD5wRklB5uoUTU=
+- iQ6mcbzc9mA/8zkxlN/WuUHnASt1qKVMPSkXrQtLTzM=
+- p1WoXPQUsIevQ+UxxPPv7GJ8hKZbVbBOPBQpv6KtCHA=
+- IwgcMuB4AN6t52DldHWM+NTegNpHtuKUlIAGsWSvvNU=
+- aif+Hj1Y+76cO1meog3TuV72N7Py8UfYG21pBd1gXGg=
+- Ek22G+51wXx4dKD1+tO2v89lAEo4FB5ycxnCBimZV2s=
+- 1gXwkbfJlNDhZW01MrIeOowG75GRKCzD96PlnUcR4A8=
+- NzybHRbD9zil8BflwaDokAnqYscjQxwfaoimgaA2dak=
+- 6CInmu42ReymSQ5aTPXrQZfWtla3UnkNYywvLA5V3dk=
+- gSnYeqUhafRqixmRNjzdTjsJx0w0qkMmGFcu4xYQ5aw=
+- pgR6GOsZeq2Ah0DKsghBR03XrzF/XicncmAGyaBU8ms=
+- B1wyNF3YIEfh09oqpo9MYlgeIPcVS3vBD7p5HO71880=
+- qIzCJ/LyLRc/ncYjbAz92jVooVZWwLvosoFOOPwHkjo=
+- efeSjz3rdDbW4RDfrjfo+A6pxl9V6oTrRJiVtjvFkJ4=
+- wqhN/64DmGuzOXaYZonRXh5Mh4ZAWFc334hQZE6lpY8=
+- KDrXhYiahgWxpdz2o38sPX0Eg0XYjllfV58V+yRFy9Q=
+- Ke2rXAMdb5k/IWLNHYuw/SiW5WA5zBxthcM62HiQ7u8=
+- ijHiFtK8oO+nrrRFp1Que5qtnvWNHlv+mxtdr/ZOrnM=
+- eXhLd6gS05oTvpsUh5ETVFAtX3SfS4ohktdeAWBvCPU=
+- 9bgLz2igaU6RNkrzELsyz/9lh7Snhv2WB1ypiQA1BEc=
+- TtSsct3+mzl0yC7yzU60GsjmY5xCb9VCOq4n5LGFEsM=
+- qIGzQIWRgVN5KQeORqb7GF/DQ71KGiP7yN6dEHNjlIE=
+- 8cq9D/jSVvU7Lvqdz+Ohx2Mly/CnAvsbLPVkMlxDajw=
+- yZrTahi1Uwqu5Ee1aYrkqZndVM/+mqvA4sYvrpYFZyY=
+- ktUX++jgUZLgr37JrmyCT42CO1RHQtVsgsXqZoj93EY=
+- N3Vd2tgpyqj9vEX7AVqFQuszrBd9+PTKhG6dCDpFtEg=
+- c5AvXIk96Y4Vm5SIlwqgDpBLXkVoQyPt+OJ2rU4sExw=
+- LOngX0AlK83FjGLTuxmAxIxCz3SdUGB2ExjBXXLhv04=
+- r1WC/jxUBiRe0/61uq3cRRK4BRdqkmFmTg0F2cK8Xs0=
+- TZ7grAQv9v1ulRm9Lizc3HmkSGN32et46pqtg1IOQiE=
+- vLvMmFbNw+KmTN5POomwnBuIqH0QNgtTvSQ3sNyZLOM=
+- A0eAYtlKmFBKBrNqx8EUF8UVIb2Ehlfb/DAwRY53UnY=
+- nMlvkmrcL/VIF/Jet4+DuXjgVYfbdQtZvtkOqL8WUF4=
+- QEreIqxRVbGEos52LUuRiEd5ZKmTVPc9KQXtw8+Dvgk=
+- kCiU+jjf0+TKLMGproBGn+X6m+SIrGVqONO79EJdc6Y=
+- 3fz1IZVs7AamdCdIK3IeJ9b05YZJiM+jxD2Lrk44F14=
+- OCucT46PSZ8OfrNt/uICR6F5bacD/E1ZWaq1AyE28WI=
+- V4pU+VLfXaKnpzO/gw3EhxSpcZdx7Co4gFHXZVZyCYo=
+- "/opWROu9GUxYf2+xp0/9yCZrQTGc0/IzOBv2LB3MOXY="
+- wHgKa+4pLlGMmNZob734TaopdH1xEOlfe7DYy0+8e1A=
+- ATzxm7WfQYwUN9E/3vOJWMbusQX7cMqc04QgzxKZLHk=
+- v8kmWAPy1oliyJ8mKkoTWIDM9L944YRaeS+dnC1+udA=
+- QEYgT7IeD/87ynSab1Cq2pVEByKw0AXGnm2tWRsqIs4=
+- gsq33wq/udldyk5ZN84paMeYxyb+pIwBa/l2MiHv2hM=
+- x2knJBmuQiKq7M+ouA+bO+C0DmVfiSuyI2yt8WtFc44=
+- SA2W3HDYVvFHtrm57/S0Cz1PahbDBBaAKMA857bmNE4=
+- epvgerBeGJquv8+Z9/ieAkhUdNgIK+jeLtvJ9RoFnJo=
+- ZQRejOc3qC+xDMkbYBtQQj2CaqjJ4KUmxo/DkVbZD/Q=
+- TTihMUUhFafEDt87LwOxc2xlYWRknWdbisi9Jr61z7o=
+- 3p7bIETQEvBFU+SbBNVMvsjopGpArVoZvF3M4doA7P0=
+- u2DMUNb8Eq5vt+2Fbh7E3P8ur3bCYx2XeyPdLfA7EUw=
+- cyQ8WO9ztsXGFIMhieUa5v0oNNG8xvI2RcYryAVNEzE=
+- AYx8OpWHtm1Nf626GpQQCFKstaKcokQwSnz0vnkGwf8=
+- 7p1KgMoxqb8AYDG0Fagx81cB8YnB6neOezaemXGZ7dw=
+- jkz85qB9RWpXPKZFYvpY2GxxN93Ovxh5ttSBhA7x5cg=
+- 7HXWstTle1caQf+gW64gypqOE0oayqnHHh4+9ymJUsY=
+- r6FEweQCv/1+p5/82Hkl51qfA6zgv5EFjdn0bXGM9ko=
+- OW84YTSu77pD6z9VnCLiDx7kM+A5Lw2c36NWqHXhqFk=
+- tsl41giTGDENeIZvbS6TwvDIrRh9Q/BRVGwLGn9p7kc=
+- VgLb0wcqVGTYEa0qobn97i6Pz63B57wVXB7pekOdz9c=
+- DNLjqF/HHxc1J21Jr8rIX5AcVQO/bOkeo7/f83YF2Gg=
+- Ad11H4N2Yy2S0FIif8ob2bYDtDcu7YQY07JbwPOYJ4g=
+- G+ZBvJYGdA6ErEbzNMw2cDl/g9t9YdMJFVh+TI2NGWg=
+- MVz/M9h8ZIA3AkS26TX+8hagZ8c4T//lJl21cBrR/oo=
+- mxiTiCESXdIF4VVEb3Y0rHpMb0c46DXJay3ppFvPLsw=
+- j8G1eRBCJMt1U01yucRFngyrek1g1GlGmQA+2nyZaMA=
+- BgxooIyHIGXt+TXoofYAyrQMred1M58kNjp4d1CdH1Q=
+- lOQ4yX+EIajfcru/IbI4ieuJlVoHPYyob9RlwtAZCF4=
+- Z+3ipJLhnnO7OyXk/wNd6APUf9QVo0gxRt9O+B2jhHA=
+- KH8vrShdJZGd5OagXy8DrvMn0DbB8n8H/SpBzwDeOOI=
+- FeCuSW6aXmKD6XRnyyMGpyHLKdptRtCzJMnOMsDhzWk=
+- DycVGGnFeGTnXg8qbm2+TEXJC+uB2F2WIIyWhhwKzks=
+- Aqs3jj+co4Mb2PC6RoGTUF24COsyju2LEa7P+2nZYLA=
+- gZWzQI31gcWPfAwDS7DhH5SmJMAHutriwCa7RlgnBn8=
+- Gm0U1boS2YcdoOLtm8Ahptrz67M6gpTYZaH/hVxu9PE=
+- nAlvpOYBSQAiM1Tva3HRtYvmTO87Xi7/MZbQ0mKv8wg=
+- WESL5NJ9gE7kesCz3Cn+4Cexdnc/gOq8pS9QKnMwDe8=
+- C2sMlFgwxL6SuBHNs9HmL2T4bfa4le58lurhZtpCLAM=
+- xwKwjbjjn+ZJMtR7/7J1oTD72g+5EMjBSoQVYuHsROM=
+- I0Z37/cJZqdbzHrKzsoT4obWZaF8DjOtLZoLsRPi0b4=
+- nh8cGAWGKbbAxBq6f3DvfOglIfwA6D2DxjcvFwth6EE=
+- QSmgmYEswpzDHX47T73nsJtaRsizF7zP0clAExT9h/c=
+- izqIsy+PBVFRmtsWq5GQJfns9tV9rdcnkKag2PIuM2Q=
+- wBprZzdlxYnPvncXTLmZJBH7TBVhsCwr3dtC6Pi/bF0=
+- K7+JrZyHdcOTXYVcJmqFnRRc0QkwEwsjtB0h+ctkH3Q=
+- lSi8VXB64MksNH2/9nonltXMY10ovSiH1giwvgEgm7U=
+- W6htl5l2Cf4iTU98pra9KUw3fTG7tUQa8/vSiCgA6WE=
+- B8xnODThMdVQqKlF6TUysYyBHn2ens31cokqa2yGz1Q=
+- JSHaow64/EwjauhP/PVDerdDE6FMnZJqC5n6p4N2hDk=
+- r1SsUYQTdZ7ANJp8kl6m8Yp3mEE7n0HRyGauALqw5SU=
+- 4UlfFnrQ2MOapKBefpRynaHv3gOtl5TKHNQ5C9owB40=
+- t4GIsjlMYjJ7t49O8MCdGP18h02XANX66syw9cU7o+k=
+- zBUyxfFHuTDOKYVqhGND73kpLFa0whyyAyDhNuEOJbY=
+- fLB2elch2nDUqoKT1Wwd59of9XynaUPC5Sg3tQpneQ0=
+- N1mEEYI/GGTgjTcB4drBkqHlXMrmSx3AmN5vF70XHNQ=
+- wQS74vhYRxb+io2L++VRhF/1/sVjeijoeClUul3tCZ8=
+- e97mb+qZR8yNWjLh7koJ+3GmRdhA7Zc0a99k5YAqpJw=
+- jwjUPqQRVEugetr1TlN2tnLXWBrsOG4jHvVw5dNUhto=
+- ocPAvRwszhTAGXWAO6YGz+fZuyy4873tardqDt1wW4s=
+- PJsEkjcbuar7QDu7IbQOvspzSKKiigQL23tkA9LdV3c=
+- sUk3CACdTZIwr/md/hMlELIK8SwTJil4HIkTBrkub6Q=
+- f2OE2RqwIN01Zwqn6MJuEHCzdxHd1KSXnCt9XJgiGs8=
+- unKYvsaJqYwZX7HJ4+dKF2MKmYRSjGHWnvlD6i/WJbc=
+- WpbUw+DyGJRanK2DLUBqnl8ZqAfmduP+ji0927QEZS0=
+- "/xTOtmWLzys8oOijkRSI7MKvb/NB6UDsuYUFGceaf18="
+- aey9oKN3Z331A81PG1ANe3hTAWLxZSYZ8XPdXuVF2NU=
+- YMSHWcie1pAoXeGqURSgkPA897NHORa3zuRS8RWmoYI=
+- bnpHYb3beS5nKCAZSOojxPQTANP+siAVXA+nxhv8Xo4=
+- gDf1HKUfXSkMAxxMiR3S1yX2uGPCmNXD9R3C2d8+NSU=
+- USr7bHYxc9OWuqDQhJTlhFaC31PRHwVhECIaZgGXPiw=
+- gQCsxSFfeCZFxgE7Zl1tIdt4JSZiLAbMW4qWxHW3pNc=
+- PKtw/uzSmbKpaoLeQwv3WrdHhNdj76aXJLHpBeI/oGI=
+- svcqSe1kVU+Pph+kS2/RKOzNUDAshIeoDaUWIilKsKk=
+- kkEZOfAxqUGNKXjpbrM5NZItZtCuYDKX5NMZ5IAPShI=
+- VTvyMHyfQD0E1UbiJOhl5mH1Irx3v9ygwGm07mJXhH8=
+- fbIpfYEnVop8qv0+Ot0d4XMZDq1KuF6DJG2aQXXGD+c=
+- j392I2wrl6Jw/YPilwaqozs7+HJ2+/ZPaFyXAp8xJDY=
+- wfmflLTjY8a8cfWlBc/ruuww1a/r2EWGkSAZ49/jpBo=
+- 4oYyDNPv6rK7slDeTF0UXB2I4U9JbuLN7eU5P4YEhnM=
+- rYjzhSt3ZwdaVrDDxuNfXF/Vqr57n3YMnSeXeWzS8u0=
+- L5kZB3XvFL6T/Kp4UsKOgqC70zpKG77T4KQbqSGqtFo=
+- Lobzz5+iyo2H323JGP3rFFlxdDPi9229OFJMllaRADs=
+- x7sqcgZMzfxhKw0Zb1wPhe2j7Hk/cwTMX8H5MsHHhFY=
+- HB2KrXXzFhmKFbV0xY2Y4QmMxtEfG9r1Xr4MthHVHGo=
+- h1KlVpP3mOJOX/M9PuHXqq71v5C/C/MtRPd5LxnlSO8=
+- iFg/4VEpWz4T8fHjyj7BiZNEHwYa2QHh7j+HHPGG/78=
+- TRTM+vP3UX3pVdt42a/BtGUYtMNeHhynPETHNQ3Tu3w=
+- 4XpbpTx9/McEHQ326d1yd2iBpDDE7l/eUNc+cXxOpVU=
+- 5K57WHH2CgGQwDaBIXFg8QZ08yLKSqW2UlJDiVcs5Vg=
+- X1xmblgv/JYtYyTFxg45MXS4ekQIxlnmxoBPAG0OfnI=
+- ALPohsDQBqS+r5k+ONZJ8j9F84MizW0XluaJdM5nPI8=
+- cFkHtznjgtfcqFHspnHdoSDFwA0550cHS/+MGJkGcuM=
+- 93K4v+EzAuPppyJZvY76hr4Rj/ZFiuDp1PSvdHDNPyY=
+- LbdkcqdCz/otP/iCOjc9eAp3aEDif1KdO6yT2b4lxGk=
+- V/iq5Qfnj+7rwaxZ6NIu55LbKSwKE/GwpCQc98jjuzU=
+- 31kFF09jPmU25oH8hVmSIfF4TJ76GS/Md50v/FWg4co=
+- rQJmFAjHJY9HEEpO0E+mvNWg2C4QaDVBe0In61k2yx4=
+- r8TWfJ8yYNWsr2FowqjgVc8DNCOSdzCOdOHT3UXl5Ag=
+- xQ84f8oNc5YiUbOEA7/6lLYgie0giDzxqpcd4nX2T2Y=
+- GGQJSbAPKADttb+JZVSuLahh3K05LkyrQsr2l6DeRWo=
+- sXbMA5IWC4teJfp8PuegdxJB+2x6Twf8/yoSHtw1c80=
+- un7RZV00h5UOFjKeZbKTsZwi4+CNbMcTKEq3gno07iw=
+- hb3IJCAW4IDGtA6sLT9V/VsA4qCKwh0cRykp0oYYdVI=
+- gkwd5hq5jezIRD4r9S0+6W9IBRvZJ7giUuM2wgo24XE=
+- 7Y1/x255Ol+l2K2IjokPJFJmnRnzbMt342C3GWH1vfA=
+- p54XlG4/Kq6EUEbVU6mfeAxm6Q2MsFuC9qGYR3T2fZk=
+- isSzuzcEfknaPx5yR405jkcV46fQ+WkdEiSStE+NT70=
+- vfUggkgg55TubMOD9W7rEvcZMz2mTHQGZ67LIg17bAo=
+- pLTFilRbZtI85tnBAAeInk00psOPJCPvh0VrvuEF8s8=
+- 0ehoevkXd90SS1nEOG5GpwpO3PqAcoYXgTV00VQfJNU=
+- Nr5OpKaXHhI0lwCZPKJ2woq9njA88nQvpKWDBfK3X7g=
+- HAWrVhNpj9r5seH09O9ftH2e1vXB8qqM0BVcSXkUyTU=
+- agz6CzfQb9KW7i1E4Wcymj6fUqp6jL02MvmDkl265WY=
+- ZXQksRMUdA55KKKueNxESMwqtdTksuFOQnQy/ZGI+/k=
+- fA4zLnxpNK24hSxcpbwX95GdCqLJA9tGCgvbEjLLy/Y=
+- ldMBaaWcQYtSATMV/IG8mf3wp7A6EW80arYoSW80ntU=
+- B8MP2h89+wUsLsFxrlzCzMiOShyKCW9cu4Oyxx20eao=
+- QUFcYOALUpwumyPvrRuZ2xq5m1eUI94bbhUZp2Oro7U=
+- LJduGMwz24ma95+pWigDOkzfTpT/HRJq3Os8IcQ28a0=
+- TmTC6L9LiKxZlsyi5elAmRl/BgOykMbsFdDKmZAJM5c=
+- dFf5jRQ5BN0MR9UEfYwoD9g72yy9LtgN7qDofv6VBvk=
+- e0HD1ItPd77YcF/JGj0xYDdKNGVla4PRb0LclixmYWE=
+- dysYHapmKdDcxeXGqvDoiwY2XJNvZ1ArAQgNdpI6xHQ=
+- HFBLIFUEvBlT0VpNkKrJZodCjvSovrVeVeToULhZWBU=
+- wZjqfp6Rn6r5BeEHu77nmas72JadVBIeSy/L9uQA2ZE=
+- "/9r/iokaM5kpyptQnT+IbkzKcGleGfmGwM7lYQ3pzfw="
+- ACr1j94KC9/EMkOgzWw7+LjtFdhFJLsW+ef520PkisU=
+- P0MKP1hLUfpTskx6y5zkqVauoJVw6BxXHt1PdEBlYnc=
+- "+eNKylZbP8d+UqE9jIyEnfVYn+ShuSqjAzI1ur0ZASw="
+- ynaFfEd43hFOfbbljQ3Cuh/+e8TwnS7dUWQZB6QnMB0=
+- '08bGvk36Ei/YrJMhY9rnW1OmowpKATzQ0GWrJ4kITCk='
+- Kjc4u1JHfI8OJawRsvRjgU0vcPeuMs9TH5OWZezY9go=
+- Lt+t3w0wJ0U3MFW/1EQ2/RElBVZTGPbjPq7KCQkyrT8=
+- A9niaVKxFYcuV6CtU3yhD1im2UwyKSpIg6n+nwzzInQ=
+- grxUPgXTCUHnXYSt7abyxV8bOJp1XljNB6tPhgcGA/Q=
+- cCcmuKs/nSXpA2pCiJiAUt3cKAeNhAVE9V42rnEyjmo=
+- frGoz6WrJPQFOatTwvHHVB/TK059QEgw+a2fuu2J87I=
+- DR5WfoJYItnQ4OouA2810tpEO+qpypUAZCjcpTEDrYo=
+- kfNOvlh/iVxWR62WR5FV2seKmYdeu273V/v6yw1fK3E=
+- 1FFaZqY7Y+lq8g+6T8gYwt2ZPHj6HEM6WNjNc4cA5t8=
+- kAsheN4/z84W78te7nRMQbYBaZTaHDF7vH21LG9CWcI=
+- T2XViFOj3tYBWDgSbuHbfBdcvYPNX9kAWiU8rzS0P6I=
+- IwduRxI4QUyPbmG22mYc9GRGl6pzaWJleFMa6QDrdKc=
+- 0/ZUvK2D2JDkk5f5XG9FDYheniqFxBGWiuOl53phips=
+- QOYkEShRuy3xpNfAhHJ6GDulmZgz4gkbL1GUntSeJ0M=
+- XPoO+i30iTGnd7KQTYXt9YkfynMjGVIYlzhEheljJ3Y=
+- IpB3y+bUpiXQ9JmGY53IG9LDh/u4eCGCsy5lQF2YkP0=
+- mJOIXBBSut9ukKAgFr6k3oKMfDlqrp3ycYm/BKChYtg=
+- 4kXpZfxY0dPUpDY5QE/GcljTN4GnId+N617CdJvvCMk=
+- huWdrApWHugv69jRvcIHH6xaA33LIXpS+mPRYKlHc9A=
+- iTGoWuht9czk45m/BAsiUKb1EgvQs6LqnLJH7pPTcFI=
+- l6QIaq1TToQKTI2gA2v1hbl2Eugl7s8qEFc8vFsRwvw=
+- YW4k/gEDfQ9NqxhxLsaEhYAw2/102eUC0F1B7XdNeRI=
+- 5lDafrvPL5GBUBhoLkE+9yK61q7MiVLrqBg2PBUM6uo=
+- ya8RDch52zkyEqXBAM+xnejMqn6CPU1LWqu653ts4Ew=
+- zgqvxGvGoAcUQuM9nIil1WTqZ/dDg/+QGY/F4Zqh21c=
+- TFZ2lMVTnfKyxZS/LcMGWabwISTt2KGeSbWjn0Jxx6g=
+- S5lDz6xtygxs2HSd/aI7j/v852V/NLcFgspEc4zRkbI=
+- 6vdhONKvCIVXUBzEQXqpA1aWBQYloruNzWqyqiiLgjc=
+- cw/Erz/FU9NpU0OtNpuQaDKf1HBnHgBttYgecr3l6+o=
+- vnr4v1N7JM9PZ92AwtQPBrxX8G4Zu0MMJseIenrx+xc=
+- 39ijFfG9rPsEJm6P3utMtRD1+piBg+ufpXUpJxaZB3Y=
+- T/DMHghqr4xXN6UpT8Ycyxgq3itHeHN7eyyukeN3L+0=
+- 5iR8a4Jmyr5YnVoW/QpVyYyWBS1F+Y+HocR1PqTAo7Q=
+- QzqgWCu2griDWJnimcycjhDHO/uyeq9uWVWlUEav8Go=
+- DOeVsygcxSuqM9F+8tZiqnIA1d4KPGbzSTMLV7Q00+E=
+- y2f4AIU6EHhFOq/rW+BFZ358MTTEbZFhuNl/PygdRhI=
+- GVOcnIAkHmCQtUqxguwqooSQ4bnjAKqn4E5hwWdoGbg=
+- LzC/OpxIJHOC2zOura7LhEWssd6jMxAYJ7quE0UG2ug=
+- W3qR3+aT6+L2pNSW+fNJ7X3gP07Qpgap7nRM7xJr6b4=
+- 1lALHd31IoNKEkSogg9aFUAauPfJwH3afi46j18R+Hw=
+- mD8VJXljHxqBK9lrTapUjimtJp64D1DDlpZUZm4w8vQ=
+- X1hUtWzabnEgqO48CnaC3CXw51gqY2kQl4EKeEmHjo0=
+- Pd8rnHuPLx7ZhQp58U8BUrPC5w6ds790ybbdpK3iQnI=
+- WSRLJdWWCHmGdi81pZhX5gETj9X6pGtWQM2txESzO0g=
+- rRd5gTuV/j9X6ZA9kY2HWd6Zxbame78PLOZ7aq7WI0o=
+- ND5nwIeQh6XzMhJ/yL3aCiwDJFE1uOC3ya8VJuRtYWs=
+- KHOpte53KEIuh4A3bImNPuKt8nASE8n4in8oWWjGXgM=
+- vcaitRCuJQ+D0dCGZJs4hRV46h8Y6/GnOayNSzjgzUw=
+- aGZSp+V2znbX+ZiP+Es3+pPlzSJI4p4YZp52RpBWYhA=
+- NA+Wsa5TNJWz/wXc8c7cptxPhSv1w1KUetGNRJrOZ3E=
+- QSNXXY3kDA+l9oaf/7GlIXLVJIR1Kxfv3sdaNmpg1Tc=
+- QgwH8YpQ3l+Fp6TwotTxxY8bqg51lgkszpCsRGQn36g=
+- D+L8N0mUy4EJJo9bc2v6m8Xc7761Pyzj47aWvZup5wg=
+- 8O1Tsg16xdVFkzaJ6ZlugsyXorGPW42KQuZqoQvGIJM=
+- 37/xAtpTFUStUUdJdztmhbtLwxqDIOu++CES6NwgFyg=
+- raQb9uTCD4EyiNwT/rujSM5tn8QzNUGTQt+N4ow/Tfg=
+- HmUQtt0y37TRibzpEowxFcTpSeZ16ARoLc/ZECHbF9Q=
+- Jt66v2/cQoWDRzAfevkFl0mfsDcU6CaofsVkEO18auI=
+- yaAADX9OLv0WiMraUJ9YzoPJ6IM00wsgqv8PSrhhdxs=
+- g193uHJWRzY7hIM+9zhXrUDYZPDhmJAQUVwUlWS2e64=
+- zL2g3vR0QJP7GabobdtkqGemJATdXflHt9aEjS5yN1Q=
+- 7/SGCusnwJdWrmtX46wwqOe8ZyzpwkQ3DcfiaOCJx8o=
+- VIYdvZdj9kiHhU6iLC3olDX1sZF/gHmtcZ+JkFY66Rk=
+- QoNudBH4RTpDsnam+SkLck3EZiW0d+8IIf8dUhQ2vBU=
+- "/F6RqRm8GtihSQc203f58P2QjkZ6azBFJBiVr1Gmv3Q="
+- nWX4cAQHx01ET+I/XnBHqkejalhVs4GDaYafWybE8wk=
+- x3FSiVr7cFL06grFFOtxA2A4bqsOccesfJB2E4s8GOQ=
+- KNVq0peWbdIGqnoSv7Ao+SIa0Ot2lYA6352fYHuy4+U=
+- uYhHeDDOnG7l1AYqtB9R8VT8eS92wW3CDzBaA+7CGCc=
+- kAok9rNjU7aisoAWTD6ydR++Xl5x3eJgotLW9Tz10L8=
+- 65RZcg/jRAWsddJhbK+UgKXY1qis0J9Dn73d+QbMaHY=
+- Y7/O7OQ2F6Ga9wTZ7LFGUw5nhFQurY2cxXtLqplGWXw=
+- CyHinLCU0Xg9OFijJz5JmFMFR3yXGokdGrhTIoHcO54=
+- tX1YV4S2Zd6aC+Yc5T2zZW7k5CzPzXCEmdynpZKR35o=
+- 1wCoreov4fNi1faaJTWHqoyu2fFA+tvxQ+PNFLtThUw=
+- CTfMnS0OPmy9K5xCPJW6N8HnzEC423xHyTYcy11+3pQ=
+- yR5hfdNph6amdrn+WbTc3qPIrfsV9T/O2n7YG5HiW5U=
+- 6jGDbWUlpJZvFgFB4bFkN6E74O37lDCylYj7IbxaiVU=
+- YRTmWvD5JM4bjI7K3wh3l3xNeqWkdMLdqofa8Qstbrk=
+- A/qUSm4dNWQpmV7/2kgB42Y5wYQzZmrY6vtDApahMuM=
+- 58cjCH1ksMfDl37C+QZ3JWXtIMfnlnTPN6tG/BmDcA8=
+- 4TiyuwK8c458CDIJfJG7EBftWAUafJOU6C2Bv/2O9Io=
+- z9GhuvhjIriaCTqIElDbf3uOqMpZzFi6TIyRKq67Qio=
+- KFWI/R6bVTP151XAAAl4z2j0XxcUUYKN0JJU75hbhyg=
+- UbrW4j6eyn0jaGx8u8NmTOXyWjZI6saCMnv7xMfeoHU=
+- gdpuKAGnlrtm5mV9J2K2BAjco+i02ZG4ob2fUNoUUBU=
+- AC5uKl7iHwWH/Elgzbrx6pI6BvBgI8DHzFrRb4ovJWs=
+- XX5JXrhKNHVhIKCBRboPLsos1LZojFJmijt/k1fi5mA=
+- Fu5Uc2OOWReVvpMHlhk3hJk8XnM7Z9ciDAvlBdqVSYg=
+- 7cQ93CgzsHgvLIb5orwTYF9n1TOcxxy0jRUNdLaoouc=
+- EwR6xVgeQhMLjISI7rAfLmisnV35wHy0Thvj0CQMEhE=
+- 1WOKgGXSDMgxT6UqHzZi3I9wGGg1/d/BMQZEgrG0DpM=
+- 1RQffdPwBjR+THYqnhTDizHmjI2eXPX+tFFqylMrj2E=
+- m/oo709U25rWb2q3YctlnrovBdZT3OeFrCw8+qqagkA=
+- W6N3+OKPvmGa/DxT+ATRXvBlkzKyTU4gJ4TOuTvS7O8=
+- l+sw6+MWv4Tr+20zhLX/8GcVYciv1W88TJ7Loda207w=
+- XzYadIKOWreLv4SnQgoovPtzMGBWgJw4D7lj7ucu/bM=
+- wBpW2pkJ9pez++XQnDLbgNCNCd7Qinp0M5dHmCscVos=
+- rzPVBcbnK03GuNaEOd4TFGbtQGa4Qv6gPw/2w7cml1o=
+- Gwu7Zg9IgMmhkmSmmt57/qQF+pdsPHht2P2TUnBWvHg=
+- 8sXt/O4MKLZ42rcj1aE+GMyavIZnI8eComkaNdD8XgU=
+- yq6L+mNMy5LMPx3sObU9OBG28N99z8adIZW6GCAw9mc=
+- PFMML0SzHRhngs2+6KCwqBU1DqU9TLe5eC7J2q0Wtsc=
+- r7nH0meriXdVWyNrUYzC7qFZQmaRDkv0B9/VHzDopys=
+- 6LVDukaFdJNkOoShnCjPhHVbneN+oI/7NVd4jz/5Jsw=
+- P+2E7hMDlBvuNXvrnQW5arySKiES7JCFcbdgNLl2BV4=
+- gVN0RW3K+C3l8FL+BfPpKlX5Dw4WStLPcOO21qSq7gM=
+- xFxiaYWp/9q8LmPAiqtizKJKTl1EBc8kph7NAh+0+U8=
+- B6PBEzabdhqqo4gS47Lju7omqS1qzI4OwN1dWza7DD4=
+- zwvvwO1kvgTeeLTl2OSbe3ek9DuYvmxE2zBU0vD9UuM=
+- 3bmJhkOF0phkYXOUVECMliXt/aiqQ4fdzi2OZMvHXMs=
+- GrKC949/yghx51k/jdIgG6bdXKxQRT9dzNPPs9Yq0i8=
+- "+Otzm2AQb1zd1jCB6Tyy24BX97fLsVvFj9tG0iBFyP0="
+- r4lk1ZIsZV6vjNm2thilPpwsB/wwsFvNWdYXAq8DRUg=
+- 7Di6n1gJsN8btiFe5IiNrf86I+bS0HrxOKFRz0c+VgA=
+- f0YrBckd0IYu9WjE9vsq2OrProMtE3kEd2kdYkiA0RY=
+- ulPxjCRUl+TXh3FtEVPAKU4EvbH6Zhju2MH3GSnGCE0=
+- KPxlZbOtYA6/rnp3kLbrm9L7xkbhG9mzkslwPUqulUE=
+- 5LHGLz375rQOO6AIoUiMsL9ryc6CkGwMqXQW3L4tQz0=
+- jRmhY8rcoUKjF2Jz6DeuYHAnunrWs88xgNG9d7AiFpM=
+- Ro0DPtEiAiV3a9mIKdCjBR1ykElncXIXbaC+vFVfbTA=
+- "+P5749YcU9gb0lZpMJTlL8+GK/CSAdHI1WWFOtPIr50="
+- pFRZlwpb9kxhKitUb+Gaswa5yCuXqfB6Ssksul6e6+k=
+- CK2WDqpLAcqdEaIHNigxeBRUXIlD/AzErissqEfrf4g=
+- FU4mvwMKbpV2fB5YgJ3DCsyBucNkjecp/MmH4XtG6gg=
+- V939FvdoD5i1pKH+KCLr0FALZwIxH9BixOCDe+Na54Y=
+- nMJCUeO5c7TM4tcoUlZX7nAZBYqGNW2EnBe2pnqZdEA=
+- s8YbximBuGaN7Q0pkz2YDBAjDJzBnqQGIh+hzoTLxf8=
+- yPSE4mCCGgJDFhZCiMZ1WbKom3Y+yph0KP7ATv/bIWY=
+- lznATkegEVex0YLf2qelIHaTxkVoxXgkKnqecYnO1TI=
+- yv7g4DuIIfLWBrbfgN7dNiWZNtJVcUqydb91GhvzjaE=
+- "/1ieYptUCh2UIoljhDAs1qgMm7YzT51TFjP3px7vVFw="
+- DXgcc2AwxlEtBKpCi7siiMbgm7tdUlb4nm7MW9f7R5o=
+- 3xk7XMHSD0Bb1Fv87ZOTlA41bqJHsiF0eZYClwx8hM0=
+- OymzMuvSqRJ1pAqz4zmh691H8HHsmAs3EjfiyW/oI+I=
+- 9Wyfv6qCDhXZb8O7zQCQKuI8kM3C0/+l8mC3X+YGYlk=
+- tbuLpXrUDOCAvVwi3DP5y341RrWQSBVDbnRjhOQVALc=
+- wev71EbMw/StugH5r/Rv5HpVlxww48HUjyNQMA1crAw=
+- YCmPRC8Z8fEIDUfgYuStdeji/C8fnzBPOuVLdGlU5aA=
+- 40QUwdxdZSzgvp+S/m1TRHfbzW9cqOEjnR+0KYHgsaQ=
+- rKaGOAllxbNuVUbCUkA88j6rtli8KU7r3gU6Ax6kxYk=
+- 7YVGbIPo0V2Cuq6Dl1WmPvjUasQ2l/bUDj5Pe1biy+k=
+- 8RsSw0GTuoisDYZ1AJbtttSeegZmC4tH6RN/EZnObww=
+- E4HSH8oF7s1oHHh5aJc8EPOMfpR9/zYfbvVLROa8jVY=
+- "/qfdQDzRcPWUSiG44DC63g7XXQYlTk2wkdVU43fZ/Bo="
+- dpMX2uoLSRDOe4UfWS9yOlAcdX+DpdAvSBmSFmfZi0s=
+- Hac2LrD0acHVcGBWejt6qH6QzoNWlYCdM2S0SGcbgPU=
+- T2MvvRXqIhR/+sCsvcetmIUmazQOg9b8eqVRiQUpwQw=
+- "/YUfT2nhONGKUJiMkRMooa4UOW3BYOK3shDmYhjemL8="
+- FOFDfSeQkGY0iFGnsKddMlcyz0Fi9LD2/+awGgzIzcU=
+- OB6Nmp6+2GLBSZS7O60vaqVToCND8arjZ2x8srtI0cQ=
+- C5S+eXH/T5NPljpgGpxa3Kk7dT0i0wsjlMyopMLp6qA=
+- ocdiDlPKaBd+UNNtgIRufHn1nWPKRSQoCCZM6q+L7h8=
+- 7w0makeGD/H76LH59uXHSu5IcfNPHskxmMqnwpG6FSU=
+- OUQE73K4JiCZy5XmDDva5SjYtID3dG5/WIv9huGaqK0=
+- oNdjDFglMgeOLa2nQa6bCuH7XGv5GCM1HnCCNiY2OWg=
+- C+dcjERnQQ+u36bTgvwg2WBudz8rfoYAo9UdC6RFcvE=
+- "/7pkm0Dd/1fDQOaCQQ8uqZPUmRfzQxHL/tX2Tn5m0YE="
+- N5YMS1iF4cEZu7yE4kiLtLGcLdKwYqSKbfxt5u2TBKQ=
+- dwyfB7B02JoF52bzTOorUHcaeOAn9I9+BwfvV7kE9JQ=
+- al8pjoUzD2/bEZvTCWeKpQqH+QLNzSst5/zJX1GyeVo=
+- LyxsvbbVzlB1NFBrL3InnR5ohvFFeud7ZItMVPg3Cig=
+- zCwK+W8MSWRu5x2KFSLv66Vcxf3IMu+iAcFZoGzplyI=
+- D44jGfHSqo08MyhM4z9b33A6mZN3Dgx+n7QlpYI/KAU=
+- id1z1nDHJLXYWLjCMq6Zd9XSecaLiOGB8H82Bg6y0f4=
+- 57m1WvwmvkOtR5U6IjsckIgvUyhfTBveRlN5urNSIms=
+- BF6KMtlOnMmqv8Og3aD5LcGM4U76dzw7dZT/eTt+fNU=
+- 5OVAkEsiJZ1NL7VHu49ucUbhIj2H0CjmqbP1AINWIjA=
+- 25x0XTnMqxgQQyxNX2Fm/xg/zn5RP8F5+fcNg6JltL8=
+- DZp1ZlA0mThldESFosPfPZpyuSVuM+Y02ob1nUQZXCI=
+- 65MQ6zqxnCzu7ujJUQTHV0DzrWG4e3eitpPVeEw/IiE=
+- AgVG6Pk6mddAvgElsMfBtctAioNkMLIctWqX4TZAit0=
+- He3BRqs4WOSbBOvPXacKuNjSaCJD+04sz71sniF8qS4=
+- LARwudzP09ptq0lLmlOGy6sqbX/FEyCL3sL2KytWHXo=
+- gcAwJoeWGok39ID2vqrfWWqP/U46tCrPGsjE0OEp2ew=
+- Wbuv2fsGq25tqEHLiwBUmIlpl3BPBoWmgw8hDRROyY4=
+- "+JQLvDBfoHdlvHuGow/iCce3ddypCnPSdAVNPLu58bw="
+- z1Ijn9YqRLd0I0oJTTyGLAPw87cY9CvpECUIWne+EH8=
+- zGiL5b1e7XJ9Q3gL5127bgAq4/k+JjYrAVfTPN1Z0WE=
+- VYNNGO1oHkl7Swt2cVXRIq5N6dBEwoFuaYjM7cBEgvs=
+- Sldlkae9lWyRXw/eN5jNg4ArHkHC45zL1VXmBSnZu94=
+- aTW0XAvjLNuxpXnXUQPkTdvFMG805YY9Jh3n8oal3Ns=
+- D603pG/UQ8ymugFu4eq9YfI0h9pht0ZvlmxBYZ9swz4=
+- cNCACvPjkV4IqNK7BkW1uYzMd9K2LHBP0JTvH8EQiHQ=
+- aOa3MxDDzI9DooAJWgKtqamY2GFjGh+T1lQdbaSLZO0=
+- Tz0K+ok040cA1J9o4p1+Nw2m/V+9ydIB6uhSDs786bM=
+- Nn9KQ+C38rsa31oLDNH3ZT8M1p/+VZHvkcW9VM3KEW4=
+- 5AskLPbeQCweHgHlJpSxVIU/vDRY+CXTFEL9DvcAjzU=
+- l+qdLSoxTr1WMw5EcPj87tt61F8sT5+7d7qHVXeHN+g=
+- c3djDh672HHcZP4gqt24In1lmQ8FLnXXkNi/1YFiZf0=
+- WTKnL6CI66hPjrn55XGcJbAJpHRM7shP20ABrhDEHd8=
+- 55zD/SRqd/gyDBFJJ1X4i2HyxzVnE6Q4F0x628ExoJw=
+- W7YAvi6KkaUst1k38olX2Wsj+gnGPczAkISGnMP7oRU=
+- d0ciT01z+uBybg5HMBst42YiE66hx8gIRaZS3cvySLE=
+- VCiJ11QHFFCoFo6MKzRDkRrDjJRKg0SIhi9En1MtwKk=
+- 0BatZkxYWIIVvkeuaInPSep6yOAOWUZiPe52mmczXVQ=
+- VFcLDOu6OvqVtTRqwDDFnTWQ5Q71EediUjzMnKMZOoA=
+- QZ7Mg1miEziiWM/DhWAk4P6gzkQmGL6MFnL6m7YyGww=
+- LxCB5o0ojZRPOboAXKXGLHme6fpvdtvzvd34tYIX1P0=
+- 2KHoIjqLlB6lgcmr16ftgY3FePyJXvOIGQVbvMQcLZ4=
+- 20oxWaH4XdV1cnFcOGkccmAqQnkfiZ4B1E+Pk5HoQu8=
+- A9r9Jt7LyfquOlS5EjBgb+f8ZP8qKb0rPw9z1c6q7I0=
+- 9A0csZZrlHckXAVOpSrVHzl8EhLP1NH8XVI3lnWhaXY=
+- Oi4nCw21Lh5wxL+PVVy6mRISWVAkSaGquQ1IlgaOsqM=
+- 7lJ9nSydVaaM+otdBIsCsNp+qVh7rTkN0so++VjkA0Q=
+- W04C9WuY/rSwGkEtOQv9plRUZyKZNJJPc10btMwU0RE=
+- viAwFbU78y77YENLE101SaYJ9xzTRO8RrYQlWiOj9Os=
+- Ft/A24xpu6gdfAaZNyj5Y3kD4qq/N5IlBJuhRgmKTuA=
+- qDjxWMZGDpbinSQNT5vejiyqMu1Kp90p1AOmxr2eQRk=
+- X69oOWRX8TJSX/k3UN4uIZWXAUWcEsl+zLmLoKHeMds=
+- gCX51AHnWxFYSg/dHJ8DSWjo+umB5lE6I7jmG9uebmY=
+- KX2XsoE4EG8yO2sVoR32Hx6R0CMzw5x855fJWTB/KEg=
+- iHQCclrunVhV1bLqt669c5LNLLqo0uLDGaLNZ2lpUs4=
+- z64IBbjtBLCQ/nYcA7j6zKWDiuS8mg1w349cRAv9oNY=
+- "+cjkGG3OHNPBbidw6Sc4d+6PP7xlhvQTLBRmWxFfUGM="
+- qxfTqsxqwfmRCv8P3RFsDLbmmVsneXYCJCdxkJDcxNw=
+- uy3LqDoqhBvRYauzjGsyu9jz+PD1Egx9FehwdgZsSLA=
+- Ycd3d+qcYOOeq/X94oZjDU2N0c+iM6Eb6aLbuEdlgAY=
+- 1lrPu6xGuMNSXeerqW17Fin5njFN94tV44Ql4RMeV3E=
+- KoFDapVEQW2jpg1fvNKSYkBLpXO5V5x7Pnu3AmT33XM=
+- EjIUjvkXbviQ5rD7yJcAgycfX7a+CKxJEgIpbViQJIU=
+- YNQpxZ6uT2QjTKF1KaGDTu4ORQS9esMTU++6Qv2R1jI=
+- PpkPuQ8egd3RgosxtfZt7CcWWHHFNmbq/cxumIN8rTc=
+- DXuwPjqgNt+h48JhEB3QtieGt8DwhVgRJVSbn0ssMlo=
+- IbP51gteVxwBHLOAztlpLghkcKoMA8J7vK+tfLBrnjw=
+- d6fPr+2XBGFrlm15O1RiQ5xDIJEbcdKOBGBBE7x8V+8=
+- bwH2he4m1g7I4BNqJ/Tqb4E0DGHUiy3ElbjgDbIUnw8=
+- 7s3mG+J168GZgXmVnWwWuClmzIKhFF0f40aUbBoWshQ=
+- MaXltheYJtxOQ5f7t7KdyN7JWxsBZ0OemFLvH93fIEA=
+- zljq5F9iT0OkEAqxmv2gNnzrC4AOJA1dyZDWfBs70kg=
+- jS2sEcCfru3fVOfHDBc596cnejid39+OMBGFQdj7pvA=
+- OsoSD9LMwNDWAe1JqJeezIeMYk0fNA6jLc/te8BJTDs=
+- pY010/P/hCQv6TM6aPV4fvLwysQzTaFgQuAehmGg4EM=
+- layulIJA7KrpcdbYNe6uQZ1FC0qR1OTtMXtEUw+eHFA=
+- 7v7D3nyqXati8ABVbuvP1ErgGaNrLU2/RtXj4ORu6eI=
+- Rgu/fQKJPvfD4ActKiCgTnE9cb2HzWIZD+9vtfMIMzs=
+- nXV+ofVzsHckQ07l+LtbDUNDh6OFblicEzQ3sQ1ACDw=
+- f1CIdillAxGsOfFxTjB9KdSvk8ErFulvaz15Zb7SHFM=
+- 8Ho6LtmOStJ4dahaSky1AHJrfHNqVEhGcJKrktcS6iQ=
+- hkK+CrJ33U44tDSSSRBOA0GqA2tkNkEwUzuEno+/d3A=
+- 5GclakQfZhXXfSwRt9Xsf+X4g/Al03jNDUdXIOmFLlI=
+- ObaNH+IHIXbmyW3sw10SV9p4/S8jdCy2Y5oJwYqRo5Q=
+- cWd0jnIraEqfv8IuX0DfCRyGGt0Tcrccyize/gPIMyg=
+- 8As9zEqWuOYjSvNZ76cAeh0KIAzndKqgT12gSV/RIXU=
+- eK9z6wt/U2hSejAjNapSM+B6vqFVsW/5p/W0WBuLdnQ=
+- et5DQGibUoy+O62HqAdIrSxe6ya2glGNivxs8bYdn0E=
+- iBT8YQODW7/8rUu1zk5qwT9s+ic5k9CtE0/r8aGUsj4=
+- rd68re6otiRSWziOpaicq3+FMIbPXGtH2FVPoMNOFuw=
+- 9KkEzweaj0bSx2fe/m+5M5o05PLaQlMn8KNaE75lTXE=
+- XeTnBIjMCPfDwKzizaK5X7Jjt1CxdHL1f+hHq4c0ID0=
+- N/pH74mV8/iwN03W4SI7iXEtaikQDLO9ZOM52wPtd2k=
+- r+TFkPUIb1QnEn5FNetRKI4M5i9COLyuOewIwM2z9Ks=
+- C3ytmj8KWe42ShY3kCuBy7naynYj34g6/zk11Mxshfg=
+- yNEhkBAPBy7I1HlVhhO91KsrUSuTjCjoyVD/iyu52GM=
+- ERfuUjY3GySS7cw7PLvcvmD4gpT9cVH8ZjjXyOporDE=
+- tiOY4jsB+qrHXJ9slkDKdP7dc+kqQu8mKP8rxl4iUPs=
+- hEqUeRZOFOfGVQ+WHh6rJorUwWPRuJzOk12qrNqYFeo=
+- NsDneuggZHtUY6PFWIpHKmjILJfcgfnhqNIkOGRVNHE=
+- kvsMCvMhogT2lPMPRCxoSM0xlHk/4AKRKx/2/PyakGQ=
+- B5H/2pLBFsfRG+aDYkII3nObJEQCWtCje/bXpgPpKeE=
+- 7daKsSt+ATYaYYc4gWOapYT+zUDbSU8pIDkJQxBCRUA=
+- YcjXYKOsN1mynr4fwtE9wDRA+WUfIMpZQ4ZUxsfzlJs=
+- 3wEOH2qrW9mdnj4RSUYX3V/T4EIuR1cT3oii9cgQ5Hk=
+- 25EgsT1S522iLdQ2sFbr2+ob+xL1e7WfJDQUkg7V+U0=
+- e1sXx4zBhZ8rcv/LlGzAdb0qiIPJvyLU4oTr9z+Az9c=
+- FKTm5De3OjUPKmpI0YznAWnRa+0JUhwDckbHavSc9Ik=
+- eKG8ZYANyYpz9kENU5nHvmJqcg9YliIjXRpHxY4MFlQ=
+- D/8odQNERqESlt1fZbmHPSMJ+hyy9KRY+uXkRpODkp0=
+- eu9UCBZRtVXStVm4HvECBceab3p0xNCkDDTh1hu+i+Q=
+- d1ucIAACxMwPQlMMKNk9D+KQmqqw+sba/pNk5qdIyf4=
+- rl3rhl05GvHFCINUNeCht9lA83fk0iKEA6fbrnYI6WI=
+- YmXbDIxdsWGeVzNIHu1kZPiyxuT6DZ8FzxAFZpZbbBs=
+- g3A1SQ8Iy2UQvXloaQgoCFbrKj0Hj93SGdUOR3CidHE=
+- klsTp++bS0lUlX6yjFl2cV6rpla+X28GjBmTsY1FdaI=
+- FLvj9yZIyNxXufGNmY3K/E5vjtpGtczCae4Ba3pyMDc=
+- eAsQz6qsSidfuLc5nJ2EPVqcRLzYYZGW2TJlR9ghLuE=
+- 8osXxChGDRypSRAAvp4D91zD4a8+lsfumoGu/fVLZyA=
+- jflQJlOPt+8FyL8VggWXXFww6Na/P65GBHPwBmjlYdM=
+- KIn1Rq+npmmlbhK0S4gVkT9fntWtmt1Pg0oYLUwgBQQ=
+- SJH4VkgKkOLxEyVVz0YX/QfR+uwcOzffCwnIs7XMsa4=
+- a4QZn1Y5Y+gfAjZLNRVT+N9BatzYkaoap87XVgjD9FM=
+- xoaJszjYRe6fSMnTMW8l/ehGL4xK5Gw+KMubLQrXmRk=
+- Sss+YmQcGYr1x2nIkH4BBGYGyG2yTYX+KhsubpKjNDU=
+- 00R2UruKX7spyFQjZm1kWlDBLUe5sDfS4OMm7wkiq+o=
+- sB6wAIBQt4gJxHhILbtVCjlI62FtYbVjNoVnQZKrV3k=
+- vQhetZpV9/cOc37wjLZTxEec+Agh1kxI4RMCizuViik=
+- DZQEOF6l7BHopBQYfrX0cw4JosBmIvLQcxIcRsYGfcQ=
+- GFR1XADNu8hYU43w0J33aHqWBnfYyImQ+GbIT0TyZ6o=
+- tO87Ct+94R/2R0PXZOvK1gNcZ3DpuADMXSrxbJGl3e8=
+- DjyxN6RigDVuy2akRyfPizmLgUvSI49zY4NR+9GUsUg=
+- SrWBHoqgSxqGsaepDsKFCUfzlJmu10WzpxajkBGfPvU=
+- mVE1vk46jWILVacl/3FUybslXK4C7guVAA+lQ5/60Vw=
+- XNPmQmdOiT6dP+3DnsU9FAmX/XDjQ8rGFkZNVUucO50=
+- KKuJUVzilGVR9PP0RGbYPvZ4aMGpCZ8UxYsZ4bKDmoM=
+- s/sohxuWETfHOMCDXZg1miPqQaal7BBxwDeP1aqm3lo=
+- rdumoVWVkIb+MoeuLSxC1o7ly9lfp+pprY7l3y8vMeo=
+- QoXWacyOufGoYEe/UEkY6xGyUsJV2MSwx5H+UhOjuLI=
+- gjXANKTeny3E4ROJTxVWzcA9KrClP23vfTRGQnxgQko=
+- IaqeWnt7y4zlGrHzorovdAWZCdA/FaROMsqtw7vtkw4=
+- tYrRGQbMZJCTZPRQez49d10xzF+6g3aMFngNsEm6VTc=
+- h0B4QUDYVIZbKqDybSRWOnTRn4YVd4T87jzmiDJKzbQ=
+- iLsNjS3Acu/wkNwZ2zVtZYjhu6rz8R0UEHuLn9xQgsg=
+- G3T9gp3e+QjjVqS5wKBZe1YoIREpn8tINNCDRYmLaL0=
+- "+vmeEfjfz8XU0FXbNAtig7DdkB3C/fLOy/JdHRz8GK4="
+- 6RrI6Ot1FCCPyE6T5VLGtKaxjAr7FWfa4E8x27IYmbk=
+- 3SxHrF+VSLrdlLKZCGI37QFrYQ+bm3i1bmWEpDg/mIM=
+- KhbMd+/nacW1qc2b1TxAGgnHGL8Dx+a6CeY+AL7Iiuw=
+- ELpGatN0J5uY81p4IB9dTJrfNqoCJ/kAuRCiK71La1s=
+- fgcXhqMFWjfGsuS2SWV/0mtKmQHYV+HYn6P52sY/Wzo=
+- JMBxzWZi5oMFNY4ANeT314s4yKf8Kiu6zzs6ZDWmI+A=
+- 0pqr5qim5qsahOSbLeLvs4FY3uIxn4opwyP0ba99Y1k=
+- GFVWAvGaJIivvwfBJezJs2VKgD5DbxRkUkKxrDB6YoY=
+- ooe6x/v8uQG8TAZAyLozFNL63UcfEeL20JG0TqY9ALY=
+- v5ksg3tA0y2I7ZUlZbPbxJoFt7Q/nrockAZKq3HqUUM=
+- 2OSp9hChZifCyGz8UXfA6Op7tSqYwGMfX3ZxwS2wpno=
+- W7ycbxUpcdjT0cQM2oHwDi2Th+yV8xK8gtcF0JUVmAU=
+- ve/0qcB1+jQnMZHxH0e1ciHsheyiRZ7z2IIpA9l2Z4Y=
+- DqrTjkSQtv+kh4hx8/+X2MqhUJEgtJvxhiVhxGrG0ec=
+- maUCjsNR8s/c9GxY7O6wh35liT+6DHAIqJHZ/23mECA=
+- r1DjKjslY+/4eppBigw0XYaIzciEhGV8quB80inf1SU=
+- KBT/+Z/AFuseJk05sGJjrN2ujbs08RsYtQfOQ8QJYfw=
+- wWwDs7TiSI9/m5hxLnEuvasUyjVIignl1Vz1e3ptRAs=
+- vXHfj1UdmG6OUId/rJpS9h9FQzOe1YgXKLnzZ1C658A=
+- dssk/+heBCWk4ap95/NpscxO6iRcMCWQ0ZxxIHnjBWE=
+- E/bWZ3f0tZhwGWqmzJVze23DxBxDRff5z6sAWIQo+vc=
+- 4yC3VJFR2a4PdEJ3tZtwY0OtMN1xYq2eHiziU4uPw+U=
+- Lxu3y6OBx3tjMhMP1s1qm6kVuJGAzTKxeouTceIsOzw=
+- PMA/awwvG80iMdVU7kMHYipQ9U9V+2DDQER2aPjb79Y=
+- 5xuvL/CV7ITCD9p78mvWYAiQRA5H0z+i2fT39g28Z/0=
+- rBa4ncLgBXKGDqGRi01UbgnLKA2CQtlMi2C7kqmqdn8=
+- Bhepa6w9XG8oZqCMrSB4ZSntY8qOuyiGMwRIDBvzrcs=
+- Q5z7MDJLLxBY2zUErGaTiDAqr6jUBJMQlS1CBLO8Rdk=
+- 3Q0q8f1XXDOPaCQwkCHNsJCgs218DBJApqJZBFcjgfg=
+- SjLrbtlLNv8FF4KoWo3dhLL6gnte1sFpsKUdcMe3944=
+- atuWskxWXPijy4jjuaarssdgK4A6js9R072RntVnPBw=
+- PNLuSXretLTa8u84CcLTFDPUR4FdJDz42/XBsKmETQU=
+- TrS5skSgBAJZvN0SWXcXpcivGGh9076Ni2IsOZPO8Wc=
+- 864iMXH5OrcVKBGV6mb99zhr2GBosf7Q5+vGphl3GF0=
+- HVYqXAWsjH/72dupc+P/sHp+SrLgX0bIr7mvr6BfqeY=
+- nNn8lgg+FJkdbC0UjGhbGNUSpM+bmGq68llVakNP+bY=
+- js7ciWNLmGvNbPsPenGw3+bwhdSi4XM+SOXZ1dwQ+V4=
+- Rk8MSGOiQPa7T5fqPHD1XE2jTUUK9YT+sbUCGPI4WSM=
+- "+SigciPliK9a1iHI7Q9x5UlaGzQXf5kiRPa30OGnVI4="
+- kadfRD+GCxDJU1hztiMstjSbKAdjMwvpI18MRVOtJnI=
+- AcBikd8qWOAvANta7wjdSJLpnzpKh90XsEKyK5dQAD4=
+- PK1SzjI/rXqAVZxQSZw5V7sQ6A5P69yNJV2SJnrJU0o=
+- TtHnhVkNUj4opdaX9eyTYVgUC0qEm2F/66hj+w9Djhs=
+- X46AZxwKWZFSMiJzrbrk2DmJDYOEseLWdnOjW1oSIHQ=
+- XL+KrGWiA14aSK75snaia515aWGc+F0V26XYNbGVLy8=
+- 1iBFTutW32S7FTlKDELxKvt+BZ6GqmCQBQ+VJtlBNaM=
+- v62ADo8PM+7xDC117Jcd89ZZZfyZVLDgO0z1a0CjizI=
+- "/ZaZwx+Px5JTXWH/GsNHAPtJ/85Nr6NAW3Q+tzKJ91g="
+- BbStE7kPXzaD4hj7/d/v/9WV4t7UGVEgCowuGEHipzg=
+- tcZ6UIeatgAnAdd7m2H2wcSpbTRUBjYwyCa0Clk58aM=
+- 46XmPXRG1CaOdfQZtqqpF8G/wRjrSYLv0lByJxCwMv4=
+- "/dKOUbBWvoLP0ahF/Gmy7tKdPvlwDCZKcEDb52SnOTU="
+- Bhs39EQ9WGuCz0ZNie8JYYzrpfHOLQEaRUxvpOgQUno=
+- Q1Vw1K+BkkfdiTTcIgQhrSz+gJgaJGD3CDcanzeRCJY=
+- Tjf6WjvL4oyxPApsyGoJAcypQeI5zYNrMhmwrc/a2qA=
+- bj1AO//K9RrXSU7r4MOSyH6HKbIueP1a8K1MMD1S0k4=
+- EpSPOcvRu0D2YQCtFkd5tZX3H2B6Ov8ouT3i35TP2Fk=
+- N5i8y+Tv0RASTGpHbBzSXdeXnaXL72nQUm28vNoD25I=
+- ZXS4aZBj03fvjAnxnjW4KhgHUa7TP6JF+EXHDSSDqJY=
+- 4np2hrgCjP7ntX2VTDq8z7KnAZaJJfUrvUgud75d4Ls=
+- FL3Nb9ZBgK9ed5Hfkbavjpo+e8hEmX64wpJScG35fKU=
+- g0jPQnLjpGI5sZstAqI3AkNwyNpe0fF3JTjMx8NMhCQ=
+- zERCkq7ctff+4pVMtiaHxOCH8QUtj0xHmI0xcfzgS8w=
+- XyIn5AxDRJqQM2xhqposrChP/EV/hCgSIH7irJFoG/I=
+- fbqTAj9DLH2FLli06cRQ0GXPts/E3rGsS9f5H35nOe0=
+- 1KSQ/2sLLUsFrKQvkIHlW3gT3eq/k+PyGWmmzDw9qj8=
+- mfd4SKJgJ4izRzkozDFOS9u0fi1z7dqiQ6m1UfL61/M=
+- lqHF3Klpb9n4YNp1SIkUlqlOpYOP+CT8H1sq5Zr/ykA=
+- 4cwLDWuza0LglQ6fIDdRzqTusKRAJVsybYYfTX4o3Es=
+- FBn0vIIywZy4HH/AL0FjG5lMr1ti3zSQ1IPgzdGBsXE=
+- utuDS1S7jmjAUTtx+LQl47s4v6MKyF01F6GeLFYpgqA=
+- u3TrmoT/Go/80ERa3rfpXeqlF6tjya9h/1QvFPYArKo=
+- 5F/u5/jRBg8bNMdoikG9l09sTUijW+q2TmxpDgdNEeQ=
+- gVjYSprbJopptG6FNJ0UV9GB3dFxiMxhK1UoMs32Pm0=
+- lEhmg8cBlAm5gqG5mhCnmBxOu7tR+ZntCHrOe3eOyGs=
+- kd0eoMoj8Dnp7VRbAslAKCskoDlN6thDeJM3WY91YuY=
+- AwPALDSwJuR8w8maZDxQhjgH068n0aUT82X/0JHQ8d0=
+- BcecW4vcLl0jDxw13B9m85VVeLayQ68FAkZxYQIhSRM=
+- sxKX//wBhykctXUyvoIBPOtNMyeEcJ+EoqEPcJDiRy0=
+- "+dqF+HAeJ1q0vlllff6a31+gaP6xk/x+Y61i5YgdmrA="
+- VDHZD+hKa+D5UMkLS7Pa4kXjkAYikfaJCkHtm8g3TaM=
+- PFsR++ABKHONwErjpSo0A38d+1WQadNt+S96fULBQMU=
+- Ds0l5wMjXN94E2rEzKrVrJCy7GniGq0rEex4WWY67KY=
+- "+ecUoW/ml4vyA2+/jXQih6DCQvg1zgS4L2+OyXF67ig="
+- Iym062M6LmLMwbbxX4e/RpK+az5+AG4Sxzve1JhyzL0=
+- gPD/G9P6MxV1Hsgy11p4rU/NUsPPS29YcVCkkxtEiyo=
+- Y4fGTXDn9ZBp6XRlO+jQt87GJt6zCerDU2K47jwCvTA=
+- Ou39bfNKsjtbEPsixmGFqzRunBx5/tcObUdj2HCPsuI=
+- LNZzdy0cZ0aysYCK57ywiLIgC+IslV1E9CxElTcL+ZE=
+- FJvKLe3GRaNGF4rYkO88xCR7v013z4fom+gWd7LBTSs=
+- GXmb/HAOQQU23BnxhKbl5KFxjEk0ITH3KHISLz8IBpw=
+- 9Ew3P8aF6C7xKyLAbWWGYo7sSw26jjgp2Oj8St1kh/I=
+- kBZoxA4anKbiLyStO8jA7HcN1uZXO/NrGzwzr6fEHPk=
+- bq4HwjFHN0PUzRl6A/YLENFmmMeCTiz6J6XwNXP2VgE=
+- Tfm4ROmPM3MyFellyQerE7jZUiHieGzhs1+yH8zA5F8=
+- ECukvxleU2N8BxJKPxpQc+3ixlpAKUFk9ceo08sT/YI=
+- zrdgoY+k5BBQ9k2LRxdBfiPFXOd5mV/tFJidBPaYxtE=
+- JREr6HQtN6I5fazgGbaFNN6H4MlE48kiuBbeXPdm0A0=
+- hY8pA8m6P5HMqQfvVTLDcGkujWTNtQ6BlrF4CPKsTIs=
+- FDl1wTZgscRBn01adXsmQgCGnXqw36wYGQ06QlctpL8=
+- iiYPBp5lMwb1wwTPQ4r0YnyE7aazjej8zLgBuSGBs/8=
+- 5M3SpSzUq0kh5upBE+Gnb/NOGTMc6/TfvkQW46uVG14=
+- "+jjiBcOzcbXkvZa5sQ5UTbK6bNfIg/fSBoDUavxMJ+s="
+- nlc8+f9ubLOB9LHjtUBhdoXuXwOT8WSV7fZV+4Z0za0=
+- R2TsRslJS3/uEUiOE0ngOGSF86G8OmUVWMlWOV30q24=
+- M1ankolPcEMcn3f/piA4W48YCKeoABdzLXoas0QFwo4=
+- nu8gbv9L+S9AhblRXRDah0KKObIHbmn9mXCHdjpzHWM=
+- nYLmiMTowUrbXr1VoDfRM0TJSuAWScdujUEfg8XoPSU=
+- dcHV55Kuis5tel67oJU58SMFIIuv0jmMzJcddw3tq9Q=
+- LqEHPUImlFqXF+I+FV/Ft1JoFDyHjvP2QGmMmNYTS3M=
+- YAXtVkmW/vJg4fzbLhWuBLbRroeYSTLIuQqL+8zciZU=
+- hURx084gjZkf3snIlKzeYGUR+YGvz/QFmCwK8qbzKTQ=
+- ukwURYWdlI7shWCChwIuFqd83PAM/4ti4KK5Rg4k4DE=
+- KC9grw2RWstcz6wpZTLoc3yGvLqoS03v5JHsv0QwnHw=
+- ycQzkKz54azXvaaeyrouSKcEf8b6egqZPwx5mwpU0eI=
+- iMWjtrmiAuXU0/Jmyj3t1i//Kqk/GfD1qg74uILpwoU=
+- jKmhQMEMDeEFbomSAQB1ML6ElUn+78Qmt/MYq4mb6Fc=
+- ia+rrhkoHsXYzJE/gs8fdlUgPrmTqjMLUURf1/fnrX0=
+- M+UcpbDrrO1M4Q5dug3BphWU/9c1LKkeJ98sSX5yE2E=
+- 8FEAHzINvZrIciVDKA12kp3DhwYMWbhogXMfOuNx2j8=
+- "/OS0p7+PKlROgomwq0Af6cJFVm09OiUNGditWQlQCdA="
+- 3fXuBPbdQ/mN8zbVjBefciyPv6XiQ/lMRL0MC7HTD2M=
+- zGZT+E3qt1idZvO33KqdSEwjcZVJJuwdbleaECa7Fvo=
+- O+SSrASeIis19e8ZuRZbOfia2h9k9XFso7ExpbXL4tA=
+- 1K3P+btNHJZYk7F23RPZ/NkTQ6Nm9tqP0Xi/qA/N4GY=
+- pmJEfTEyrYBJp3jEGzaW1lVWwGsHQiUXF/l2fvxoQ9U=
+- "/emWyPPP8INInco6CGAR3k9mG6Pnoy/Wkg9M5PO+6DY="
+- gf6S1dG2bLpkNaCSkiHpmxiNiRTHoEx+gexSSAcSyTc=
+- JQUqTRFiXFTWS5PdtXGaLcrUBJryOWa3vlw+trG+NgM=
+- XQR3s2C4gcCzVbAxqYLGTHWvQmR/3Wpwv1NtRoo7yY0=
+- 40ogLlM1PZhtDpqfpcHR6vVaMAE59W1U6uNEBUmxTUs=
+- dJ3lfA1bCeLHT4qWRMR/p3atqZ2Rkb/ItWJoaX63kUA=
+- m1pfxTvDAH/2gnjxS3ymFZbBxAGg9YGV2DEKgY951VU=
+- S1urMD5qRDRkWC3EtCjhyivVTlN4gM2mdxQvnch5t/4=
+- YkhudQZ6+icX2zzvEPxfuNg55kVZKPcLhuAIDm0Z9eg=
+- epvIMhnOGWotwLA2/tomJA/LMTcHf2fTukkbbuG9A8Y=
+- 479n+oTik5OpJ2lUg6w/DVBvX4HZJ/AKgGnTYciFyqc=
+- hHkm/pv+3qxUCobANQKDm6Jlj0xwUp0OhZK+0yM+nBo=
+- zhLYiNQ7a9MHm0PtKAyNgh+JLIia0rR7yWSFIYineyE=
+- lwDOpCDz85yAnFUAYadQvzNjF6I6GxWhC7JoPhaNk0A=
+- 7y3wtTnGwj3g9MvkJkjDAa4OIuiHNApFmftO9OJnjkg=
+- WbLa3z2EfK69ts0q5GLrxpF+B0uc0/lS3EEXGkm4fO8=
+- H1D7VhDaC74dSIlaKkEbwSnf3OoA7V9TBY7s/3/Egn8=
+- JWe7YwsVHHYPWdMsWVeI9sedssKXlMFW2dXidlOa3/0=
+- sZlsHafhA+lbMsXU3sEKZfeDF8jBoYSMz+1RajFMFOE=
+- hfOfVRScE3O9TafHjcjfXofmEjUZ/8tB5/GhXLnKe9c=
+- 768fe+y5nxGhV9a2hMTjFdiv48rmYzy7QT5qLjLbSEA=
+- Av6z6Tx5IcYQe/7o/rikGVN8NS8r9mDd2Anw/SjXEWI=
+- H83SqQH0qpQAge7YhFw8YYft8tUXZejwLce6B565BVE=
+- h8Q0I6N4efWv44UMOJXlqc2LTOlYcIdFe5O9Hq/RyKc=
+- "/rxKxm7jq60s4q0+oWGSENlmvcsbgnvqgMstKh1rM3I="
+- 4MyFQeo1i0IrFClJCM5OKSdOptESkxerH3qXwF7cvCk=
+- WvJ+Dt69K7W5XXiVO4n6J22hihnD+Uxs5v2ICV7cLbQ=
+- HFXqbq6zHiDdfChuJlcBsDOHbiRKYKX/BEUmnJgInEA=
+- 1oRR1BqjUXivmgRib5sthC4xNk8YVhQ6+pom9CCF83Y=
+- 1EBL10BIeA6Kz7zSfzFi/PhhpR21m2vrflz5aTlEfMo=
+- vXg1y4WPbxhXKJ9ml+in8h/bhlSoul8m86dXNeVmFY4=
+- iwBALHvJK/1f6vjtW5ESLghgLigO8O47nLzYZ+ctF70=
+- DObC294+SLUGiEDC+AfpA8b5n7X6oBynKxtxt2ACvf0=
+- voxtO6ZNAZ7Qx8ctrNdSpGhCt7dLfEcnd3qNcgMYc18=
+- rsahKk8N7QLijhYR+gzCahdXOXpt6fZ7Ne8IBAhdrr8=
+- vte0Pa1Z3rqqjfv+qPqDxMC6vbQ2kLWOjTkv1SbTGTs=
+- 6kJYYfcdDrj/sUkRElXSsvjWz98eEARgoefTeucrBdQ=
+- UFy6TCurBz/JoDdEYELhtqB+nR+K9Opz2dfXZ/Q0WPw=
+- aPOJOE5fAROUUtrVO7K/MojD1aVW9wepoP0o0QepCFc=
+- IOW8EayYbyLw96Ebm7PxuGqFy3uDFmZOxQRcDtoKhiM=
+- Hla7jd9krQXReqH74Phk7d4N1fZPSH+vJtCwY+LcinY=
+- mFxV17m93SaHZ9dNkKm+ysB3Z7urTx6AiejzvemwGnY=
+- fNtK6pmofCJNMvWPmu0hyf9NL0Q9U3/YFXf8LNqGlg0=
+- BFs4nKvmhC5MN3kvygmWT2JHbcHIfBBZj8XmLiNsdWQ=
+- kFIbyByuj3Dg2J2/P40cjxgad8Rsv6/QW17nTE8sow0=
+- 8rXoNiS5VjEpTyIoFr4yoC55Wl3OsbPzIF7Bvr0JdtQ=
+- g0kdAElsJ6JIZcj9XwDz+TDi13uRyfKTZB7Hov866P8=
+- 29b8CmXIJbs/4B+MnZqErrsdGijQ4Hk0oQbXlUNQyWs=
+- aWWdPmMfQRLEzH6d1QGu7bcDJ0FBOJ3tqBMLvo7TQZI=
+- o/3p8MZWvJbJ5V31/QBOu53Dxzq+YaJNeqNkBYEyp7Y=
+- 35eTUfFErNwVk4VQSHs+ZLE1ko6bIOiHRT/rUwyX0ek=
+- Qze8Uwn6GptsiagvKwFegbZLdz20zYU6eghpJQ3khSo=
+- dbL1jiVTtiA4DBgWtWeHAmvdGjwQYSlq/ppV+QFFNsY=
+- 5o04eGlbj6ukln+IAPP3FS3LQGTVd6vgZZc16pUg+2M=
+- FFRRdkuVYg5gSKmWado9Wx16xv/Tf4HmyWqUDwgQzcM=
+- 3O3516E1WTrBDCeIbshvx4Ub4AS5mCj1Qd0GB5tU68U=
+- h2Ma3hV+Gvh+xJPR14jtowUHvLc/CQfu/dOJFOAgZ6U=
+- gHzJiU0RMREdjHI4qQSy24+rzZgICDvlK4flx2G5KVQ=
+- UiSd6faBG9ep6q5wtJ5Zkw0YhgJk0pNSoJ9QsDAnt20=
+- 4+Ud1CyqoxcSBMKX6cz62z9zH6p3BARgkXfupIFAGTs=
+- 7EBkxth84wQop+PlLpaNAAG00jC89CjUgxRuONOjYdU=
+- qIcKkJsL/h6LgnhfHJifI6DY5il4o2QDEZBBX8DIh/I=
+- adYh3gyi9VhgpZdLA1t6RXCwreNjFivTHhEsHUdxwmE=
+- 6a+Kd4CYRi3nfoFT8NB3JFhsTUUAVpCj7CKTG3lcntE=
+- drGIO0qAlQijui84eN2OnQP4iUWpkau1D6HIeTPQIDg=
+- tPaR69bUvzy637YwzXgCi3VhAIlmRY9lY02iqoesfKg=
+- CvN77hl3wDn8UdZq7DLXim2m/U68Yy6rm1tNiIenYak=
+- WHOfAWB0XPi4Gqj2njMxYIy1RtmKuoV5MAiCNbvvmkw=
+- 2iUVm3jYk4IXX0kpnyknXhs8+LUrya9al/JdDHTRD5Y=
+- Ipq/qhfEqlCJlfO57M3ndy6FuPdBY9jkrmZgL+/REq8=
+- mc0CkhVxCpHEtRUklmdK8YkNCF3bBVEibC9wUMdYS1U=
+- r7Fc2Jw5azsxWbSDwg5XvIXgXOcOypsReb6EpKAb/q4=
+- ZsnCrnbehqs+n1Hmk+TWpOt1Fxfk9ZWaW0KBdE6sCmY=
+- nCW6dD8lm7sHiG1IQQvEAN15ak2lKMftReK/0ODlZwk=
+- sruEbmjuZQfJinnFHxvPpqFdYenBl1fGnCdhdmMn5Js=
+- j6Dy5P+/7zxKdAxbNw5Mb1c9tUZDkUytmAlsD95yvfk=
+- "+sdbTelFSzBtlAoQ4f3eCSfhkS/39ZMlisH81UNBHLU="
+- ePL/mcVxLHxu/BU64+fqTIlgXbaKzvpSXEZlUQPzuBU=
+- B4woNZICD1ZWsf82rTEjJmJwwfDe5Dm0P3I9ZM9neWs=
+- MJBvGg6F6WhTN/FrYiI/p9TGpxLd/IUg6q6tmIbNX3M=
+- nX3rllAxUfQQFxg0L1bYxCuxxPw94kaME8q2H72utRs=
+- DAzg4RdgBmHiTJjV4WVkzwhYH/l+z0SBkQHtaNUxYr0=
+- chdz0ueMCz+vYXSSlkkaUBtKQHSr8lHPJoqVeiBhJ48=
+- MhIp6CRHXRhOmp/JYMIT3rRDeV8OkjSB7WWZ+f6BPMw=
+- lH1RqfpQJrl5ACn81iLkDOmqrt8N9fQViK//od5i7m8=
+- C7h41OQn+POkilZmyp0/chDkr/uWHWs8uuUsAT5WLX0=
+- gAp/aAJf0JzlQDFv0LWD/IYLNkg9vBip8jnEl8ferf8=
+- YDAp5Ca90am5IQCDBAIoTpDraQ+o8O/kuoAKbLLmsEA=
+- th7Q9sdZdd9Exem5hb2cf2N/N1Dt5fXX4ppcMz0v5XA=
+- IuAtfzI1psMOKFSXuXxdziasoItlpgb4TXGKQE+zofY=
+- CGrVxOhZ6n0AJLODpnS5x51xnTzDECTL3a/h4eZ1JS4=
+- 4x+9mp/U4Qgh/8KJDwkxoPueYF7Ay+s2SyKUe4V+jc0=
+- KMYrOfESZdnX6EPfNDBuLx2KXOlqUoyXkZTPRhNtwHs=
+- 1O+HlsYkNJ37jMcRHJZbrsOWBfT5DGY8kggYINfdOsY=
+- E3/TlQtWaOsk4fAIO4elWRWUX1qv25KB++SyA+VCP2o=
+- kaN+L8us3cJzSbKW/DfwDSnePW3W9mP2Pedj7EF8XV8=
+- F/lxwxSqEcDbo74dTollKEjHTRQCugu4KRMjA7Zihuo=
+- BkosIdwMtxcYlwxEgUlT7pQla2gxh0SIBjryymQWnSE=
+- s6C5oHPfjiFfHKMG1D8BAGcZAKADisL/d3gRvRX8hfQ=
+- ETkdTRB1oipqiEW2DGwvUn/f2XmPIKPeSxR9jJDB4hA=
+- GY8RCccW+aJOk9XJYD8gC3cx2wZgM1jPQNNXTq3gIEk=
+- 3AP3PqQm9Y7TVONZOn81JaxiXwl17PAGkF8q2Ezojqs=
+- LVxy96V4+g15/uQT79FDp454W/2dhp0Z4Iqk1j65glw=
+- 9NAwGWahOsKBptVfoE/Py7fQhCcfwBu1bkAZ/VGv/io=
+- caQX9j97G0KoECH8artSzQewSdKDFbcGJht5Pdi5ibI=
+- BcpaZgBXqwyDdNZeW0kyf6FZjwVccmSlOA/Qmy8PpSo=
+- PMFPAya3quxBvDU4umHaeAlQOyRar30liD1EXyZIN0Y=
+- qNIMeqNzIkKYJuHzz6uwi7AtKyvBPBKyJyzCP/Q4lpI=
+- Gz2EElFYuMGV0PTejiGM7EjIep8wBTe7SEZrpSH2xeo=
+- Ec20FO3OOkyXHPBSJq8Ew/SVuYUiSOJjv7TNF9jako8=
+- qs/cF84i8B+XcX7DLhoFWGhYZdI0cmGUnUg3tIxEObc=
+- G26h0F3ZyRNmyjbMoWSxxxiUEMuX9KMGzRSf9oA/Qmg=
+- rJ7zdYoPMmNCklQOPJEHUwqdILFSIsFIJVOg7JrGdvU=
+- 2lsjUwjqx3gT+W56MWsrPONLY08eDYapYaqG7C3t87s=
+- rpPTAg7wpD4Z1cggWK0G0oyM898fe5WoiBATgBb3wdQ=
+- QNJH1Tl7C6lh/58oMsfs3Y9kqB9ThanDet5MwJu3CZI=
+- H6Gr6pcgiuyyTJ310nx6q/gl2Iu+Ds2oMZLPtRroc8A=
+- ycuuMhNbUSIl5ghrJIqzO6s93KUq3J0b3oT/DAwnMMw=
+- "+TzXtEZC29eA5ATdAVSthF92Ddog+XzuHl16otChMFM="
+- E5JBWE7aYaE86ajZq0TrHC+VdtFmIdcpr+RjX5+raiw=
+- 9O0cAfxj8g26WZTGE8cwP6LJ2p+c8jefSjIiyB1f3e8=
+- jCLjgI6suBKFY9m67H8te6PwrY5n0kTJEdBu0FBP5Rg=
+- b/KngzNxmMPn36TcY1zcnIqiL6SKIxkBeotFl0mUYsA=
+- ZU1ZXdoWrbiZQ/x1W6GQNKy4wJ91ty3Z73rUJ9WgFl0=
+- QcEazUi/cPNgQreNY5MCAvuUZFdWcidC4VcMeQJU768=
+- wVf3btocJplIJNi52cQK91v76+D++wAwR5EjRmRoTyM=
+- eoPrjuGNr0ODw7fJL9jwzN9hKxfyII9BEUKmt728P6g=
+- RE6GzVL4bn/VnaMXG4LZCRuY+TGV0EYa3xfvDdoeI/I=
+- WbJFF7IkyJxumgwhQTC89W6tHue0fXO7JwaazixMil4=
+- E2jZ5OwyYLCrzCEnDJiT3qliPCya4juDkqLuekHEIdU=
+- dICN4QWg1M5Cia9dlgiqy3PPhbRQuhN6YRdYQAdhz/U=
+- wLdCXGuST97oUnWsY+sorZ17kV5MJ+MiA8VnvGweNsc=
+- "+qG0rUzOj/hBsg1qieJ9f+zh1ZwYTbcPQInBehUvg1E="
+- Dal5qPwl7xyfZ60A/K7qbL58QW0heHyzhSboeRYQrh8=
+- iUAWdinADBE1MNWaV0CfBRyPbkKGqUlvGHWStkHP2kI=
+- KYOczAfGGFtPCZHCRISr7OyeoP98gpSy+T114c/ODTM=
+- "/Ea5e49sAmUrgTqncccKTjJzUdZ0TuD0hdqpdthHGD4="
+- 0m3dCjIkiW/qmElSu1Z6/zpIyKYlzJN7pVglVfzXQuU=
+- tY7tLgkC5ohwT95rYoQPnw8lRRjUejgcJ0IwHXh4T04=
+- il9m2WK84MDyt+65NchsWRFUQTEKpoRwVrW6UrYi7ZQ=
+- 7GOwSFJpTzeS2BZ2FrYw/jRAs81c350kmt/XCXwb+FQ=
+- 0I5aaqn9/Brp//AHsS5l1XkTaL6jF9ZfADZeVENxLhg=
+- Vl37GEwLCsxCyl+aeviZgAeeZtFMmJc8b+/vEyEu6eA=
+- ACO/scC9kKXXQvgEFKdEz/B80FiVWWO6aRFVo3RLVGU=
+- wg5P06cvNKQzEuvNx1cmTaRfGF9mfyv9lGX6Gi1eUBw=
+- Jb7HA3Mj2BGoq0F3uQqm3CcY0FJSuZPyvR8OcPSWneg=
+- Lv39bORofAGlsFCLV6ZPVfXWWkoUluNaGngnlVFhafI=
+- 9RKz2Zjh84ngm+SX00EyTG91rL2uCtioL4wKouNFKxk=
+- aHwL0achJtl+EI/YjL9o0z/hjTuDWjcaZkVhX3LSmRU=
+- Y5qcugGIT3paREQ4F9d89ZIE1arKcZmqFSlyszoxhRM=
+- HhdIwCM5V5fuFsKIry4qTyLPjpJL1Gj1ZH8/pmnnl8M=
+- K8l8LVtXzCdIyP3U0eM8zpcQ6krkVpNIOmrrKycVMkg=
+- aIWiGFH7sR01QvyU0IWsTS/L3rFK+Ttib3MKW6hUMMc=
+- uuAYtCJ66okLHznmhrwVEk6ByFBxee/YHJY1WTN36Ys=
+- OtWBY+PKl/7Of+o5JmduyRiCE8Z57QUVRFJ4lncgRFM=
+- kcljo8/Fre6lRUR1pIsHZk9OlrgCQyMu8017LHTVOTM=
+- ZvwLvY+5pR7JYpv1oYuktV00x3sUOUTLjxkbcBSpwNE=
+- NTFAiA3VZ5hPrqC0hm/F7Witqgtm/iiWjimD/y1c1UQ=
+- BDBvtDjy3e6dWYbUz3zbhmFR3UzeOBNP6NEiGqC1eXE=
+- riXWer41kM8cU/jemMmXxDMwqM3OAxdboOzNBmV04+A=
+- 3/gQxjmLp2J+q4WVpUXNcbG/rJFJDPOQ62hbrfEKi0E=
+- P3HcX2LiGrreDIO5lZUOwpseS06xkW+2M2SqdWWiMXE=
+- LVzqfqsD0cysqpL0600IOCNHjStAfalCWiTTmlLLQ8g=
+- d4fkdqjemXbney6g7kwQ62BmMmtL0gvmU0DHGETw4OM=
+- pK+9QkW1dM+Hg5Tv399lF9DCtK/zyvUWpL4WWHuYA2U=
+- be1IEkrhY4eKI8XxmvU6ttdSuRCnvKGfYeQLK2zafAY=
+- BxdywSnFsyhS1SFZResRSrwwHMPnI1llg0XSE6QZCWA=
+- Pv19A7LWgj5LzucfE7Zans9Kf/hdsNQ7xfe0m8W3fQU=
+- 8IT55ySOeAygv/YFW+C6PuKxMzkfHF2vxqYucCKg7Kc=
+- PSiEUVLD1e/zsEilGtRRT5SmmWkPhXsiW7N492Knoac=
+- TxKrhYSczebVWvG7/xtJMZtch96ah+d31qoPsgNAgnw=
+- 2TMn8RFuobPA9coIQbhRHvqnPjE7W4PflRxfIc2ieLs=
+- zMwAupmXRSuVnpe0bRiEA76AoFXhDo9bjEm7Vl0VmJI=
+- "+0k6IMdGr0XHOmo9k58GcUbG/BuYaVomKpRMyRpiGZ8="
+- TztUn9VXIEfjevZF/4Y20e3KF0X89MFdjIg3ieVytjE=
+- vKbLm2SMNd6lWDLrl/GCwEF3cLAdLD/kg+gQjf8xqx0=
+- 9fVa4xxHTB84QZHFNh6gCmHOEl6B9F4Q1V9Ss9HAx88=
+- 25DXvIGS4FL7QJcK9lm3hJ/dE5rRq9/wi7NdRrtSdOo=
+- b5tBglNCDrA5g2PFxlSCsE1uLut2tYLwYNYKb49Wr+0=
+- 4f+euC22MMQkuYQgcKx1V150KgamOtrPDNm26lzlFxs=
+- b41kOLtOJAkK/CC9+YBhaUtGh9HvtDX0NL6O+8OOgIc=
+- 4FYc8TnUFC4bONd7arLb8kE17sRDW/mALyJcd45Dt4Y=
+- iPsqshwb6kfVTqsVXlQcvvUdPqh5OPioskI422hcPaE=
+- OpNl1pX7os6kHru3wDE3TRsZpT1U5AjS9t3Jnhxy87A=
+- Jt5B0jqBmbq+BKmPhzK1B2RWG7ScMkr3BX09FP9eiOY=
+- LKrC5CqI5BTPc9g1ioKsyZagD6ughyQb1t7LLQ04xio=
+- We1fVlbr3tdWpzArszyut6l6OHLh8wjtHr9NlPK9+1E=
+- 51bQn/27GpofCJkduFACT40ltfn24q5rYqAmcj4ygdg=
+- B0gOOjnAm+ZNlasdh27WkgW/a9fwrTv143TwxeNVxJs=
+- Y7HPpolBgooz/rZ7rfy3kbTytj5kJdvxi89F17Vv3eY=
+- MO1IIYMn3bm746Fwia1HOeqI4dcv9xm7nW/M9bpRjtY=
+- 9UZdyrIw7ZWf04we7ggJcYc6PevWWLCyinx3HLE0Szc=
+- hdCCYuDmz2lurNTkjLItAky9OCdUO/zbp6AOO5TLmPg=
+- DWkSzcEi/WPjLgJkqw37ppj9b9I58WHMrOobCN3NjFo=
+- 5U6UB7Y/HSSzuZInQeCgHi1lZPhIDGHGMU/L9VoBeLI=
+- w/AKKiOv613b2QBB1nlNO4FUnpCF8ZGcpBo+IljQu1M=
+- McOVbcPpFONk/n+sU2wUp/1TP39dt0j/MZBxYChaxSQ=
+- VI8oMKmW6NCULTz+Ngi0AmqfpLcyXXFQMSz+v5ekfeo=
+- 4iHLscFNFgnkMwUrbaZkZHA9fggC9R03Ls6L5uBqqSE=
+- 2WL/Jl5Qgy74+sqnvUmAOqy1rkA5wnsWSIwQgh1eqb0=
+- zMaS37BLSp3fBFi3SfoGs4ojp3QwmwFXgEZhITa4oCE=
+- h+wRwq+E1sWnlqn/K6+zQbXjD2iBdYj1I1MYocW+X2M=
+- rVLWzfMCMn/q6ibZK0USvE35dxCXKlt3z5B2/aoWku4=
+- ga1vXDPf9TGmqvlxcLGVLkEuY6cyHiq4zwDCOnkT00Q=
+- xTzBqonY46FfhIA5QzPQDogOho5Z/Ox89a0cmaaYopE=
+- 138neBWyLTK/YlWDbAV5ibRPTxQ4te8DtCQF8/eD5EU=
+- mrdBucgbJz34alynPsvgd9vdxsXcEOL9KvSjLG6tdK8=
+- bh9W4xR7vnGDWQrRLRjGshfu4Npe0fhyxPiEAiGOh8A=
+- 9lO7OwP6Vq3MAgphRKvXgzOUngpEwD4MIauKZkolWeM=
+- RmWe6K3Y7GsIfCuhiTeEbgmDxuzk/U4Xz5IgXXzrx8s=
+- yBBBI8siJIVlX63YsGBFv913s2POeiHGHOMxWFRok28=
+- mkQMoPy8Mffl6Af99Wwq02MWBUE/XUivAroIssSuzB0=
+- 4w7PwcYdOXAuWk/bAB1iH26hbodN+jXJTAaDfG8kYCg=
+- 4jcW6rZrVo0t+u6drEd1P8yykjfhUsAyCdXxvrzwbmY=
+- RhcFexa9SUuTIGp9dLjiwWDJM/TM52zIy1Vnrk3imtE=
+- PS9j4Hs9sKa80Urc907OVh2+Ksk6+gT2Zqe/R7kZY5s=
+- hG/Wbndn02A0PfY0C2F8E8fIAbiudg5A1grkojrxq0A=
+- 2HPA+BerepJ2QCtDvc/0aL3pAoF6Wq6HWgLfap1p1rE=
+- m4dnBtoNynwOF2rc2qy1aceQ0nQI3vV+m0eqIrke2V8=
+- A+pBkedoA4MN8hMSc5GTYnzXTJMLCpYybZqvWacfYSM=
+- 4dO8EG3tIKlvXFCbtpGXjKCyvCU8naAyAHYizbbDc/c=
+- IcOlKawwQJEbDWXnhkStV2RDZby5bAgMrcrfdnVN8Uk=
+- Eiv2rMB/xI4kJ7nV9st1XlcNmkvu6gUeVUcbhFavyMs=
+- lf9An1+R+ADW4e3hN3WQucNTBOCCclDv0p4o3pkr3h8=
+- SRzVW1JOtU/esHOldJk7UC7bH/tYnV/3RcP4PTxBwY4=
+- MZmHg8pHycpmuSS60jskifDpIzCU2+GghmwEE0Dp8Rk=
+- ONXP48ps1+pJko7MetrH288sVK3BE8fGKTdaAQl5nrQ=
+- d5RhsNSwhBYjIFN4a+XA9TYjzxUKvDctrPMow0F2abo=
+- lZehTLZ3M38iULR2RBnLpyTuOvyM1w56ggcT1R87+lg=
+- 8Ah/VwgYpu+V/adNz880hXMfvNXFLnTZWpYqGce7xYc=
+- bmV0Px+90kzmDKRxnYJIHnN7ae0KPz4s/JQ6OmQ3oxU=
+- FXk5JoOiXamKc379IJd8Ve0B6rBiD+pQN+hBJXAYz1I=
+- N7aWcTpVzxrPzFK/5CUKPA0fQuhjZ+HY4iGuupanmvQ=
+- z2Fr1oj2NHZyy3AJAe2/isGxwp2RqmhKImoiNfT948I=
+- 8B7PW+WL67fsbfRRUUX3b18rX0KseA0sc/GHikWagq0=
+- ktdAKFpd6AXfHDVKQ20eZnjpz5HnIUaGFuu3uFjEbyQ=
+- dHBbJEdT96m1FOUCp6C+kcbERKIENPt49XOCQRdtZMc=
+- bBw7fx39xEU8zXgt856KqjBM521r8QBHJgtYI6bfHWU=
+- bkcVdKtHOrKZYYovu/jxMNADkWKaiOKiAgvDmLA7538=
+- HcWMK7bl/jVnNozczE5GFRP8hdC3fxdWjO0WSIbrLZM=
+- uEaB5y7aNjiW9PvSbGYP8aWFUXb+Lgfnuslgfhahes8=
+- Z600IaWWGozdrWX13h/2mGulCzuehm13Dz7hzXA7x1o=
+- U0HMZ+5qUuMkcwGqM/5XB4yo1GHIsLFsls+8hDNUsDw=
+- TTl5LZs1iuJQ3sAm2gG7VXoGqN92qxgGvwCmzxwuu40=
+- Hw84GKSNVUivWnajTRJcltAaNIMzyOv6wjjrrOO3RVg=
+- MuzguPF5XBuNybgElwe0Im5LQJpv3mxiTRVNwea/5p4=
+- l/zfdCPQNo0naOorqLBCbnLOcgRgBNgJcv9TbzRybOY=
+- tKTtBUpsvb5+d/Woj50n1gHGFBLSjMiyuQc0+Eo3p2Y=
+- peGL8X9YTnaGjSIuxzJ6oEeDhErbPtknb9Bl6603MB8=
+- UdkM6jlpFSap6wTTxDYxNzcFricgBHZKxJXpwNSADaY=
+- gnAlTGzKk+JVXP1dkxXKae7+fx71cihyTWDuKYPzPa0=
+- eUcwSHH0gSlquFDLMnSRytMxgEnPk97tGEsBjuIuwkE=
+- QW5IqRGG9hoCbZM7M+tNVTApIDYv88xYPgw9hWhxjhg=
+- DdFcX3gZdkWx+9PsCL87ywH4R9LQ3r6H7sH7sPLmylo=
+- vqocgBT3SIR3gkPLlIXPlUgjKQTfZmnP4gSFbBBbwHg=
+- icbUkUeGpQwDH5M5vqfCc5cxlXpq+hlQSMPA301dLh4=
+- miKHLh0BUrcJ4qe49O8byeI/mUqpZphKseafkQ5HBV8=
+- 1do//MFZLBILKDTBNsNdZhjF0MYqjUIqZlShIZaViS8=
+- 2D5eI5SJqsAt4RbHSRYga1o6yyviGjpq/y/KsDcYdV0=
+- Jj9ZpJ/ytkXLjM5KKGqH2drts2d6Jdq9XjrzZDgxMdo=
+- EzV+XsZaZ6HeOVR/WQo11d4OUJ06ADU/PN6zt4qHGzw=
+- DjcaGtgLZQlOVF/lVYmumQ6motox9YKNs6+JHJ2jFY4=
+- l8ZZgeA/8VqjcXnn9kIF2P029qcfQBKbrOO2rI2fiQo=
+- 6+SOXKdGQUPESw2254UCviCTlvgzKdhsoplrVmTuzfw=
+- oK6PCd/Pe7N0ikA5K9DG4VU6XrcWNWsQKFqW6hJp68g=
+- A8eA12/gqJdCoL0m8oruMrvCbfp1li/DRw7U6jqLefs=
+- iL/8XcNXTMTFd+XvPL33r+ZIT6EPAXtSxyNqgYdvN4g=
+- sXdeIpt/VQEHE2fJur6GdHXwnoo8vl24vNGUnSiVizo=
+- 5dqWe2guRmP9s9/LB82U8mKzqf4XWK1b1MXVmHX76jQ=
+- RqW2xPfBwLUvpmHrYl2fzMCj7F2qSW1nchCMSQwjsKY=
+- JdyeRqG4Xj1doG88Xgz/5TPfdQxsNyXtx/EeYSezbz8=
+- v9IF+DAX0EUwPUbbfbPvANQVd7GIUDLdUBtfmzoP2J8=
+- "/gAwDQxGeBLWjPLI8hkszVGN9ApxycWP8TZo9yXg4GA="
+- 4nFwdRdkOgU4yQlKu/8xSAao6E0WYv5yCJoFJK/E+q8=
+- oDZs/20iBoYWTZ0ThLUSaH+A127L1zNWBRtEBPr1NjU=
+- tO0QC4PRSAcLTvqS+yKCSSlQIpUOicSX3osZMc+7NfM=
+- Bw/9VsuZXHsD/+wepo/nVjL/D00HM44mglx+l0S10qc=
+- 49q0eGqgKWHNThA4oZ1JBgxcYpybvESRwLN6qkqcMZU=
+- V/UewvrM+Z3YxSXgHCgYDxKn2v1lSZP53+iDQG9BpKY=
+- rocewR9ZAACMTR9tqOPO1ruQH3saOmfwet6lc7rnVBI=
+- uI2h4TnNPNOk6eEXDJOqV2lQ13Qh37da+2Zo2AihQEc=
+- R7OJlCG2px5sDr1bDuUlA+qXsYL+x13t7GwaTt3s460=
+- 5OgTrpelQzJ9YYKcSYiR31HVN6X+wqXEZtFya74yXwc=
+- 2ljlsWeAhVeWxvuslJke6jlMtgToSjkaDlP1VshtZjk=
+- dHQrsa1Bc+xYlYJ0fVfISTk13jEbVNUJpIRUj4vIhkY=
+- Na7WO5xwLO4rdvUIMKuGxUlvOBr7oOjqMyP2/0I5dA0=
+- l8WSMUojyFxLyhIqZAta+sctb2WKM+sM9997yqKHYE4=
+- fMq+b8Xpvs3RYNmjigioHBiQwqQ9Jh/mzSGQd5B+ta0=
+- kHGesevcKE/D28JXohISPAoSiQG+Cu6ajHrrqhQf2o0=
+- oi/PbvD22Tirc5EHsl05qOVLVu7TC0fw2LfHGGh9RU8=
+- Qq6Q8aCvmJEo2ik1gQF64c4DYnfZE2FlbMbWTRA9vEc=
+- RaCEnT+Gv/B6229Aw8ZMgQSmSW/aCu/imlqcBGNHm9w=
+- fKnIYHFFbdBRDtyPl0/xIJKAz2UCp69P0VofYnQ+YHQ=
+- aJmoFpj1yZ91bNssMd9sSAHeqm+YsWiY2NV+Q8NiiBg=
+- jhS0V4VM2MKMQyDKwd/gsI+qY8qoi8bZM8hGbf98SHE=
+- 3EnHs5a+QZD0hVlKfpvCdaDoZVkphieFHeNXrb7o858=
+- D9H/Ovw+wZb2e0wx+OOeUp5sU7KRPIvgnzEex6C+GAs=
+- 5/1XaTw6qivDW6AH2rsJ5yCJJ1fO/mmIF7pCcjfp4lc=
+- dH1+njb/gJKwoJvAdAL+IrOcyxLjBykyK2y0RF7tO08=
+- gCVwGGxvoj7el7Og4ZIW2QFikbx0u8xfzfEDbjfyH2M=
+- OL5V1erC/CAVMRd/XVYcTE0BdSVDUwQMWsQ8ij8S4zU=
+- 0x3R1btlF+cr1Z5whDqL9GBNICEFPP6SOT7FtuWnTT4=
+- U6XcijXrmXOrNSWD/AtmGHGSGIye3TJbG0lZTTsPax0=
+- Zm3rbXbRnWAx8y/btwSSM/sPWIHlL8DZJIDyivOL+GY=
+- 1Humh96D9is2EFvy5y9FYHCDsrGABSq5shRPihUL6Ug=
+- 5e1oRBp0XISL0sCG894m78kMe0kZpDnNCzVkAmZvhJc=
+- nNiwznJYXo3wwDKfq5pWInpp8UYbhaflWi2kpmK0j2k=
+- RMdqCahLDS3lYQLHOAmoz1gW+1+as9M9NITUzGwH+TQ=
+- rZ/k2XPg7q5qDH/fftGaKfhRgu/g6rxvYYB9EN4P8Cs=
+- iY0RNfSsp2Phr6X8O7sJiyK6BcIBynfff485mQPltiI=
+- fGQNc/jENKrDSPb/85zFvtVqDS5Y3ca0dpdZJf9WaIw=
+- "/PaXeX3oxH/bNI6OLkEG+6Etgggh73OkFSJTBgAGBUs="
+- oEY0fcLMMyAmYQBlcJXVolYOeYq0kvteGE2gsrWY3oY=
+- Prnx+IobO14mPwgoawTxDi1vDaiAsAZtr2txWG5dHbo=
+- Szavhm5PsSs1mnjzyxwoUiaq9JxOqsr0LB4dS2eX3SY=
+- MtCg8jznVSLiIZETfx7yXkiUXiBEaBcWse3av105mPc=
+- wkyxTSjuXrMLRU5mIWhqjA9sBim7sY1esWSfQIj39uk=
+- Df2qZL1vC9M0J3Vc9nLZdaWO3T+CO3pUvjb41+ahr+g=
+- GdnxFudeDcfS2VbhormzS9PAcASZcZvEENBqHZtUDFg=
+- V3wIe+id3cLkmqeK9SEn2ELul3tQoI39xdH6JDJ4WW4=
+- U+HO03m1vHERXrmZSpid5/d7G/dsdNHvmQCP/2E84EU=
+- WfdJIuwH1/EK92LpYM7aZLhN78hdaBb10z5danQ7gCc=
+- 48Dty+hLH6qIJ5OBmvr6qZgFv1JcHj3XuGgz/vlJ2T4=
+- jEWBEYjSmDnH6pYpAr/C+rv1RG+vRA06XVLL310CAcY=
+- jVhe2LQlRfldlIQps4XmCmBt3czt+eZS+aG1h+64c38=
+- ZeGUK9IglIvzpo4BXDDU3FVAdG/X0bCWc9APEQKSzJM=
+- 3Z83HJhJmsNqosCx4UvZpnAgwRrbFzPyBghPY/CcDD0=
+- IEkHsTPyRGNUNovPCz0IEHJKvX715Iwa9HHqbrwW71o=
+- kQBaoQ2HI9g1VOdncVRSM9UdWdIt7FiXltck4j5lyXo=
+- U0YJIbui5f97kkHr7Sn2/Z6kYE/9cZnJ9h0HoUBgTt0=
+- ZuGlEqMO5bcua2UnEcNvkAJx4DDxAno9IFVZ32GWNmk=
+- nbE6MLaGa93wIFcoBgIfzfIPIbO6CQEOkmu+P8TdIU8=
+- ZqPizxoxeG9LUgDocnkBa4Y1roKQZANawZaon9k0Ms0=
+- eT1P3Anntq3YxDLYbP1gP+27I+6Dg7XyTecT5hvcyAA=
+- WzSkEgbsUbo343Qkx41kXIoaTOwQD0Afj/oSSYLPXBM=
+- Q1OOIdw5ip8nCvIXBZpY0rwievxTzHrCmxmfZfgdVu0=
+- xy+LOySvv+KaliJDw3FseW6wqsf8WH6+M7/I97+Z2Cs=
+- DDOYeZUMD+m5+diti/JNucC9t/wganfPcDucJMltCto=
+- bCSqdG3Z8NwgY63TsuxRfupQ6U4klymqf5pNksDWTzM=
+- 5ABeLBV4oegmxupj8LMfUbKTDQXcnrlhaHniK4HtLOg=
+- X/7S4b1Ws346l0ommhwmqa+H9oVMpgRIRzpyklbuBA8=
+- iQekmbVK4MU28gXvlx0Qba2SsX+6utsAnEHixb0QJc4=
+- tYZ6KnY2azBPgzTTjpSnfd4ptKk1CY160kSKT+/IQXQ=
+- HGmdBtlmOgO/zeMqufe69XbzR4BzGOVZQT6eNa1TBO8=
+- "+UH1V+6JaDAPZUyHxVZk/JjPQ5aGeN6lW1kq2lRSGfQ="
+- btZF7w4avqG/Hk6TX/BPnhjTmBI4f2PNo0FbRiQPBAU=
+- 84TA5PiNyepVySugFstDsNgh52xmdq2i0N5eOSl2sw0=
+- uDa+NY/KaIyMbdyBMKy4ZUzJ0f/5NB72geumPHQdX2M=
+- grpwG8gf+ciwYRni+ZkJIpcx/KXKSE/xbJGCa+TsU9E=
+- 0XRuHOnRae2r0MfFFOvLsWUIqAn82mQeTJF94rFDlT8=
+- 0bNwf73Goi0W6Vv2uRBkb12cKz7YG9Y31FT/ubsJSOQ=
+- kHfRr2nHvClJyRCzpHhnFwIavI7pgTFFjAZg3UtfzXg=
+- tR176m0CaapRutfDyOJ+GfKCHi2YM79+gGR82VIrGRI=
+- h9l9FebDutdk6TQIBOeWjVHkCC/VHju6akGORg+h1ME=
+- yQNOSa8sMoiLmrMrGNqxb/qoXqDLfZu0+JzOVDHnZq4=
+- Lisk+O5Au4R/6FuyMzajnvWUjmtJ2JdBnO1odmsWlno=
+- FmjBH7gdZPQfapRIh5gOWCqAoDu8ut+qOQU9MUzKBZo=
+- UL/uSccG12ZBF3eqwcnzVFbDPs6ir7TzyPEDOwKYvck=
+- BZYEkhFbuUlBYHiunak32/8bHZpHS9OATxceGZJXBG4=
+- YGvkvn2kXsquAgaFebdXn0ySGMh/p+NnizsVHHhFeQg=
+- atZloD3F7pVpoG4NhHVmFYnb8UVgnAq9/iQ6xCh7zLE=
+- O2YE0xAJxLNJCM9bGEsRDc/6MVNHS6P9+KqLvxAr0Dk=
+- JiiNmQRcjM3vw0EpU8QegLcQ8XCg2FCR7SrqKOUH0Os=
+- 3KIbqVH56AWX0dR6DivxseTjPQ7LhnQRULBPXRtzzZI=
+- 1MQqFBTWOIaskoYnor5iYrAIAPhHGbxd0adTqx6G3vE=
+- LEAgk/VmoOO1NbkA7M6PKzBLtsq63W11s60SPfgGq5A=
+- 2ywn834eP+uE2VVBepMKaEF9vu6n2mxpuM5y+Dnumck=
+- gBSQMHFdXAVAg8yFxzAGOD9g43SaaTRVm1z810G25MQ=
+- A6n94KyTRmBePjtnHpPkjuou4xYXXGJXLYypeg3AWXM=
+- ozpzfTg+PI298e+4mhwPyKkiq+avQY/dxAItbobVNpM=
+- NoTPfUyrTbXIevnKR8P78nf9KwEv6FDjqxCf5/oHZWI=
+- 7Q0VMyNgk1DZd3e+q1V//oNNk/YVwKn32MAXZ9f8FY0=
+- yRKG4aqSzLt1ThawFn26m/qDEaX6PVLUPlYpOAlmgNQ=
+- bVCO0gI1DPLwiUL4XIWaPh+p1bXt9FA7ldF1LfsFSTc=
+- A5rRC6xbvTNDQWHtKV1CbYhr78pjihefrWoKU0QqUps=
+- dn/GTOMdmHHpddI5p5LtCtHWcDIpkrCjuIcgfxXVsLw=
+- Sw52rOLxjRvNJ5eEHVy0gYMhw2rnaQBf5yAmdm58f2A=
+- 4SHZrJJU1FUhsbBOl+ENWtQ3UZvknBP5/4fmnAMfebk=
+- M828OHKzeJd27/YXjNdYXZybCAx1KqTpLCdNdo4qfqI=
+- NLjgkkWabDXsGdayFIrghqtwpRQWEzg/4eWK0n7a9oE=
+- j00J+aDsUlwyk4VgVFD82bPC/lPPNK4NG21+UPcmyKI=
+- qs+24d1XoUSKAXjaqG1F1TdGcPuHv1slxGVN9ob5U70=
+- Y2jg61xlhBTS7r4khn5BHoKty49oCEA/Q3QRQRptdS8=
+- htcV7nK3sxkyneBZLy6wOPPjscIcxyb7fZ4gXENz8pI=
+- P7xp5Fxdc+fPW/tRgxmTrU0S96a3hfxtCXZE9AzsSUE=
+- iMZ+WDc0LaSA16dNyR2VOHIw8BhZOTM6WYKA5lSCkiM=
+- 9TZAjqCQsJXMK9Lx2YJNyBtqhG5VLCU06v0nmK+z/Rw=
+- nwWzbjW18tz6WlF+GJWsluZJgWbUj5316UzZ8/eQYW8=
+- v8CJQCPmhrwog2q0ph2AQfrdheuqGASxLogg9FFUUU0=
+- ZLzglePah/etlfSxlJLU1THUVdMOaPM46DjZfxEpSFI=
+- ADwT4DeS5O9jCJTBjsywFe9U75bH40R1Tq09fcJh3W0=
+- N9b7lC0xFZAFMjB5/fmgewypk72nbcC8grfme83UN+c=
+- cJDBSbtIo/fl/bV7NbcE4VRdOkzYiqj6RopFPfmYarc=
+- e/ICeu951R+2yr0o4BLa8v5AjYQVa0qkqbHaSlsM6yQ=
+- 034l7Hb6JxgOna810QdqdPXze2ZUFAPqLr8pAv5F68s=
+- 3mFlC86DB3OOWM1V6NM1Ws0fCkjPiSzPiPwQ21dTEZQ=
+- JTZ84JGke3QVsmzxwNx3xAgE18HKfD+gfHufTJ6yt/Y=
+- g5z00ccpZPHyBcJIdyzZs7d99hEkXWh2DUFpw8bbdEI=
+- 14sccjog3zQRYrsxOGwGNoryVc39qWom4T8A8YXzwOQ=
+- 6hgltHTcXbipTyRoZG27sGGnm4tdi9SvYrZKKg2sNAI=
+- iY+efm/nLdpl79/2e1JCbuo46gEJuntKAlrzSLlD33Q=
+- jl62A0gvAHaLYMsX+Ufic9aqfIL/r45Ymgb26EHDzvg=
+- VXqul46cUwCNF2OJkY2671FxFy8Pfy8dunLOTSrxK/g=
+- 9Myswg7XyCx7/pAS84zBJZhW5TLL5dxrxD0+N63rjj0=
+- sa12CQb2ddFzwH2e/jIQDPEiQjBn2nLIRuu0kNtrahM=
+- n0wnkH0CURxI4y4UZg/e5Wegap7oENmvoZJJCcILa30=
+- xhneWTi6PYqFptFj9iF9Lck1lji94eIUZOvMGQB8L+Q=
+- z8LDVuDe/f+g9mkWgqY/4/rhh2xtSV5r1DMF6bnES/o=
+- OgD0qXB7BJ/1DJprOIv791x6SccbScATswm/lMxh4dU=
+- RfwSiNSvm6wMkeXwesO5cmgiSQERjdZt/+VPde+Qr08=
+- ajTWVL3Yt13YERVyQHnsuVm34Gs7J/M5GbQALNB6Ba4=
+- LBqC6yYAQ774bFbUJcs+LvkeJBRGes3fGFURGbZl/Ts=
+- AIVQjG3JnHnRGcjy+MyQrAnw7kis5kqumGxGyc0oGc8=
+- ecLCKAr02SUY6MHGunjHSDW4dk5oM03gp3tk4abQxmA=
+- XN0vZQqmF0mgwNEBvIDEVId+rStmcWVMybyZYzEgcE4=
+- POsjLLq/FFJfIC7B22nd2m9/Ard74abzdGG8V2lb2jE=
+- sNvoEe/W1ADDkFHLrSSbtDtEfAmSLXBiKhSBbGSczDI=
+- 2lLjMymhPrvyjKK8C4b3F02xa32CpbdmLOyufZ6IgKs=
+- cT/ftj/XHXXN1nK+PZe46EsxqTevYxslydP2ji+vt00=
+- wte184/zVKrfAujy76CD6PtUelstd/Xt1kXp3xDxRP0=
+- Uk7reTMgJIPTFohohFnrmCcumzPu5tdb6UXicUvGqPU=
+- UeOZnVBHvjOndgRGA7KfsF4+eg18sIMQrhQnkN960yI=
+- URj2MLwydG+wuV20DNm3LIqiOVoOGqeUxzE3AhSu6M8=
+- 1JZ3sF5MLO5+31bnSVL0cf/1R5jvJEuG4WmxFDi1gkk=
+- d6rrMsfo3M0niKYXU8Mh0JVNTcyHIzTg2KDDTnIE2AE=
+- UqDHYhxl0cqfHXVBz67iGugkrO77st66OFD/RJ++m2I=
+- qvf8yltLJEpm+PdUwDbANOf5S6dIUphsHxlgORwUuTI=
+- K11/TMP6l8cebCr44m7FFp0hz8uN7/k5bdFfp7rCAGE=
+- yL6UsTkwzSiCzDMlqzOVk/iK9snQ69ePxj5Sh/XAAZs=
+- w1weVVxu+E4m7lz2U8LTJOQtZWjvtnoMzqbzqm5q0Tg=
+- DSEcg3PXyWToI2sUSKb/mtPxajaeNC3Lf2+Hc6fGDMU=
+- KVjbilfHhuM7MVfxjgDQViABjjaRaIrgEyvmUfOmSSc=
+- 325wcE7mdzxl8VJddP7fo2kZHCSln3ZoOZJVrBXmw74=
+- LLuwq0jLHPrWk4BCiT+cemdt9Bng1CCq8XwgceRws1w=
+- uwMLGqoe9GaQEhyCR43T6jteVwYOdMzA+gEqXs+9Lm4=
+- hMOQ2tXt0Ls2H2h0fzoeXSzd643eIJFHsA2SnBqAt8g=
+- kxkWuqYnrtbteS/P6/2olrSs9YqXGZctoZd3xemC4ik=
+- m7UI+vAM4DYaeOt3a5AEvOicAR06x8uSbQCXMMTKf50=
+- IF4L3s+H1y6djzFs0OgRXWj3tCOW+Ai9P1BwpLfkVXM=
+- paCqVZnekpeJFiCe3AkB4t+ZnG5iOLOiNFiNffl7qpU=
+- yRrDRb0bqdRlEH4ty2kvVcI+x7pKUVaMp5JMmAsXby8=
+- 1pEofBsj/28pipoaHV8x88e9x2qJ4DF+78sbALlVOBI=
+- LRoiZii45wCQkoq39WvSgSlHBqLtZORIpOVeeH5ZGT0=
+- 2pw+xYBx1W7Kvwt3qJqRJlQIpGuqpOfU9qR1pAC/4CY=
+- BmrWkKaVoyb50vh7qgvSK4FgmuKr8QGdchjrae+fn8U=
+- IghaqSm8169LI9nZwEah1P3ovlH3nZE5Lvr++WV0qwE=
+- gHrl8420e/+LCbN62APLEO9RR1Z6iaM6Zrsygt9K2WY=
+- dYVlpgqFiiAAWvjbrvPFeNewEcn6btc7JS3JqUXarQI=
+- auwbpySjD6dsQCau5T29nRkXdTEkvSiqMQ2w248x2V0=
+- V99yAiT9h8W/0OZgV8fqxweWXxGmUC2XEEd+TbNG8j0=
+- MAEGp1frYD9Zz3Ed9JG+NfRYGHBlqIz9HIQ4o7NFCqQ=
+- w6G48bH3RHpe1T5x1uh5OVmY4+cCHgx0jVs40aFDAaU=
+- X+icwxVoz/ALl4JlKd0OM6aI1/otZs/mGodQBNQzw/4=
+- 36tY44+RWkR5LeJzVQVJ2J0IkhatBHYc2cJ83BFJslg=
+- igsx+gbz2kc5tH+YZ15LLPQGC85m7S3W6ipJorqEkUA=
+- uU8yuInt/aH9rOMBpGN53juVCShnRAAWi20KyRb91uI=
+- 31qC85QZqHs0HuZXZtDNLUwlJyHTPv7dVH9qmQJsow0=
+- IE8upgUcM/wrU2dLBwhvg/WBTAhPPl7Af8SOiNMzE6M=
+- Q/u8zyNY0fqCyy5R2n0NS+4dlOyg0PaiY+BFug5oIVk=
+- eJYcT0dmVuPq8OWrkZKkzL6Bl7V2ove5o2tKPEWSCWY=
+- JcvCKwCbPyhbCztNBbAloRYZyl067Foruwr2kAhOwCc=
+- 5jR3zihGCf4IFgKKslhSUGCmPi7zM05pSnropEA3VPY=
+- lhx2P3K5qfduHpjvdeO4rGl5u4cifsnnAdvxPwBDSD4=
+- RErjHBJLSHS3OTgwpbYfUTUcqYrCs4veWVMS5zULANk=
+- 4I0mOE8glIQg/U/yYz8QK958rLo6978UgrMj5HxJp3U=
+- XpOoa3vle8ITfFaUM7+j5k71URoaMyyEM2mx5nsg9fE=
+- 2bo71RpEMZaHBdXiB0LLu7JjP0bJEOA2PiHRTA+C+C0=
+- NW43di2EiJL5Xcy/4AUqnF5yyQlN65CUNGhVgPwh5Fg=
+- c/0cgqUskM+JwQfB7CTqNyNgKP3mJB8icGakwUMcD78=
+- I+xZ5ds3KnfhPymTYvtMBrOjCJ011oJ7P/e+lFnH7L8=
+- vuuieWlSo78DBAN3vTMBHP7ZMbWlrtGwonMgB5Kanb8=
+- Mlclk6oJGXudVsq6kMVdm4PUQUpTKvBsoHFzDPcYTy8=
+- tVSIx4IVRIOnfmox7DFg5bS+5DpP+cdbkNjZzmPWBZ8=
+- iH6WnG+gbgpxbDZjVxWL4HoU7paVM9dPAo/TqnKzRJg=
+- WAtpByQ/Eb4KoIh8ZLwTpC0SYGsishbP7rLF7wBtp9U=
+- 0jdJ3Ii1/+axT6daFEjl8yQV2x1R6UGGhL1fRzcvyxU=
+- YW5/42xP1HqvE2RkaQtxoS8HMpOvfJp/X/FcuRkjJOA=
+- 4Ll3tueJHUjOcVjLHbhZIWjWvk+pj0KKd7LPbLPcCeA=
+- tGHqzo+OUqjwzz+YiswYmmy0UYdcDd3eoplmMzvO4PA=
+- QkktoGI0rQrHb11d69ttGuAnz/vnRqHBO4m7i8ATkTc=
+- DAvqzviHe78kFusA8rXcljVOJt0d9VFzIEWbEjaGD4w=
+- rLnlOEZOtFT5IZS/uFXF+H8GdOT1FiB/jCjXugz58GQ=
+- UT0P2PsLGOq5clRW9Od6+M4N0hw6imIxlWB2IFeoOkQ=
+- h5bCK3qQ2K5mSsu0yc/0r1NXofcVTGUB9uXJnPK846I=
+- RRuPRAEcc0orB/OhoPLajAQEbiu4a+aXD+SvsRoldiA=
+- ViEngoRoJXeBYU3yA4J67MwBT3atRxDHJyZnoitMKdQ=
+- xheeNOIEyCIuYNm3GHTXHLryN31912X9e6sBlop4mCs=
+- b6wTNhbpkQU/c6x6BfjZHRHn09V6GTSHKv+DiqyiDvg=
+- RbR0c+m4bHDzJya+lvx4Ao5Q0fhC5SDFbVy2mOzuIFw=
+- p9NR8945nHRgZKU8aZWasQMSoAPsY5hbzYb7bcHEAtU=
+- IfI8J7KIi0TYYfpd2GvTNArwI7s1Y6IlXdJnXOBwaqE=
+- fWVz+WIiaOsGMx549sovvyZVs4KZInBavdGVw22h808=
+- lDXz5ac2qAvDMBDkipbA1U3neMJq3kVaaOe2Oc5jDGM=
+- viqtfPr4vDRvAcq+84S204C7b+p/d8e7v8+a0h81ORw=
+- DFBf/D1aCIKhOmwIK07+fZMT4D5IdSHc+L9maBLW2yQ=
+- mtoF/SumizVj82QSrZ921O2tyyzlnS6aaQ1xWRFI+6c=
+- PCMTUuYTiT3shHZgZ6yxQrr2WBNhKYBu3K3NCOpsu+U=
+- 1BKa5U+OATJeI251c6CfHtnLORLFpXIdUJKq/y6lzp8=
+- HakTOrnb0R0pN+yNMS4eJWmFcFnnPMct+S5nCSiYOrU=
+- fvCvp2xY5sV2Af1jL3qqKeD5fsWwZA4NTdEzXjspxcE=
+- bEsuo9JySNSGZt0qAqM8V6jNz3o1GjUZYzu9jlI2dKA=
+- ZmPRcPqMuZ/ZoU0qMuOcpc9Q8NetbReFJKMPiCBOwQo=
+- Da4+taW0lwg2oh/4RGU+nuzfHG+rk6iMoPwkfulXlpI=
+- 23/4jmI5mPWqPGOHQaNOIqux5JuWUO2MOROVpsvvW0c=
+- w6qkedtx2QnS5vYspanSF6Zn+g8xmt5Ic1z4xh/5S98=
+- lOsx9jIxwgycFS+1o3t1AJEWWz6IXjz6v6tcgNqIbyY=
+- qCDFGg2TazJiOvwT5bQ1XWDuo0+eO9EFtAIK6dGOZhI=
+- DAWF4gLfScyqzmjN72YiAMgVmHUB6+TaNFWcx4hxSTQ=
+- j7iyPRBKkUlfDBTRMzvgTz2ySHpsxyYTl4e7dSZ/Zuw=
+- 19KeRTYikTtqCMP2fzgzfNomzIvjQFbv/1HspglmFM0=
+- ywsqVug0OFnviw36T4X+/d9nTSZpebRZa56R4sfzlzU=
+- O30ZQ/A+is/terdOiVtZkg11y3i6aCJHpIdJjibbwKs=
+- 5aEZPpw8FDe6hHpnH69YJwUKF8YJw3hSgp+bA6xWk5I=
+- eEvjnojoKjHthyluAb7Bi8E9Ax5HIbZ168llJ+9GC9w=
+- Lmuc8187OcUcUUGbcP7VQvjK8fAV7oxk2yG7WhC9Dfc=
+- iFlgxqr84jkMfgHLVZKB7kb48DXeaLRvjG82UhrYASo=
+- uCEiqJ8acgct9TKrzw3hjSWKhHtsmYx6qSzS1GV2ReE=
+- bor2pmq7H0OBWy6t4wMgLygWd/0X47ZAWGGjTaHuSy0=
+- h4mBdk1S6qY8BzC/P0AO0CMQfc6Tidb2C0A5decH4QE=
+- VNzMfMSDD7w5MdXmzBcvFZ7HOFIsTg37ZXMSPsAv2+0=
+- 4V2bAFGYgx2pOkonzxPO1uDEM+ytFFCBGv7Z8xpPafc=
+- ZmUvICMV70pxXcw7igeMY9m2Cdn8C/ctPGcBeLPO58g=
+- BOswP3SUIvbj2rZrQUHRQaPYw1S9h8YvI/Q7pvopM4A=
+- Gc2lMVmKNUTLJUyJC8pYL9LCykNtwGsSIFwYWemp44c=
+- D2xoc3Z7MR4eAIFP8KChswDsSuMVY9ZfxIaj44rxz6Y=
+- cEYL61Qqgv7oC2iMbcoedClumbguZfUjsqsWHkhjPzo=
+- hHj2vMtliSP2lBbUSJ9CWaBK/593FfblX4ig5wZ+Njw=
+- GlTb9KCuh3cmMwbkot8FaxVHtN8CWDZRP0OXSwahxoo=
+- 9CugIUtAQazxh0Hvy5fXDIG/S+VU0AphpNikm0hv7lE=
+- "/1H2OjxIvJnC/GRV0BkcjrKA7XAeOmcAm8hKppUrXhs="
+- "/7k7qtE6NtJrcK5HDltnm7ozvwA6pDPmQ638SbtgfYs="
+- ENCLkOyUv4pILeQe8UgM+SGYa7n5rXp0D116MCE4J64=
+- 1BtWP+DiaIpXncDq2FkZjemJEAJ2U9Kur//FK4XJ6zM=
+- d29BaoFmy4OAadlgOkUnhWrWrYvYaCbMrnHrT5QNaFI=
+- qpXob/BR5Fg1D9cgh7QvMvBRf28xmK5aQder8i8JeqA=
+- FLUcg761/LSCsgNPk1Gf4xl3pq0cCNenum0dDJGw35c=
+- UwllxBC0JzozVivmlpoiXhLTlEulOPZrkuJFmUVwnmw=
+- TjQcc+qliDmWBdLAe3ckMWPt5kl9+0saI7JUD9wQXYo=
+- 7XUn8ra3UhpJhjz5nAUbr+QnCHwwk+h/GP97EJhGnbE=
+- MO+WlJEDhwc+BVGFAOfN1eqi+DmRRfYWRhw8sREsbTE=
+- CQw3ijQWrdgkyyg0kcoPZIRerG2gJimC9n8cyzAiBSs=
+- VKdUOYPxaEbX4e19M1wyhUHd0/KbELZdsAY866fOd4E=
+- fULgS8i94eM//z3+RJXPE5fZo/PPYd9XBO+0GRMdwVE=
+- o8vGIUZgQ1ygQIsucNCrtgW1qSuAMfMnBzYEllgXu/g=
+- i+4b5V8GZgAdyy8guYnDpwzHiLL3+NJUw/OAc9CCX7Q=
+- 1zix+GAw/knZOxsSb6DQewcHp6r697KJHXcElx0OQwk=
+- "+ChWTp4YyhB6RNrD8MJNkCFr8GGYVLvyjyH/1FL9liQ="
+- soFE/N0PPSoPXkBMgN55HYVWk3glP7v6/Cawuh4rGLE=
+- r3IkCHNJ5AYm6Ca4lSk9U5ypu+mJYYZn0Hau279GDrs=
+- yx6bRvx9sSgugcYZPXV1/962zrNRXDDchlVOw6MDrTQ=
+- hfyQgjd5HDPKdwCpE6u/Bckg7i1fQLD1TDxHmRcU9ao=
+- Kd2IEYC7dc+TiDC6CgYsooZv99kRAHUWGid2+RSxsBY=
+- PzZUtJv/x06QeHe/niTI/J2qWtWKVt1aFSHEMQbn33I=
+- 0lctYlCov1FJ5hSXi2PShdnBUm9eXqhSyjmJdFwQ8gA=
+- WcMwAoO9U5OfjMd+H6yGHBf115WYpgQeqhSVn5YgCi0=
+- zZkMbJ0mOeIY8C95CkBGPI0/wzgKhRei8PRbRNVk0R8=
+- woDLdB1BMHK77NpcPCmnan8AIRAflO3TXoq0UVcynxc=
+- EXVt4vR9NMZltEkZ6rj+NI2SCEfdfJUqdUBOM9/lQzs=
+- hc325KSn/fptdf6EO7/nYzbG0WSr7oRTtAWiWCLnMM4=
+- XTHJmZQtdpjGF1m9bQyGlZFf2O/Rb43BARJvok4hrdI=
+- o7zytUV578NcgnRMZRvGqsvZU7BfditAlJcB1u8Mo2A=
+- X2WjqBcyLVwg25riK5vO+2G3ci4mu6DKGfvylOhHxHA=
+- 6kpsmvB+LfoVoaTevA9lXdmsf/RpabRzzSmxhDzS3s8=
+- B205F5lgt7XMozIpoz/nA0pLnpNxqGMkb7G4gbjpI3s=
+- Kqa6hLeV+t+cBTRsrX+Phc7XTu40v1zVGophYQFAn3M=
+- LmGv0l08p2oO4mXbwiul6dhE3JOsXy43GZo0/L3LWlI=
+- mQRoisLNO/4bd/2rcaYoafnyXTEAZ8cpsTJl3UWTZA4=
+- 37eptnxoeLadMbjx7UZ2iuggugdQv+PVNym+o05u2LI=
+- PTBNw9ZIaFwX+VwiSEf7xBEtRgVl11gF2b+RBy7aUs4=
+- F1+36BRdEesFGgqsysG/Oj7RbvZ9ID0Cwy3sNaOq3nc=
+- XbKDhF0wvOxAFmTX4ZigU7W12OhGERlACrtjtKM43UQ=
+- 852sbLq6U14sIHzQzY8VSXQiPISPcn+Ys1ZM6labQc8=
+- SUQRqPtiOc//4GIEbQCNdOcgDHE4XDvliSuLwVWnBkM=
+- EA3ryJ9GvdwQSm0uovuFPaK8/sOqWFFpXZmRxxFlY3c=
+- cIx17oV9KNOGDe2xuGVFTxio3HRglpVwtaRh50MY6/U=
+- 4Dri4ybPiijjnyaqHktH08kcDA1lRiIUY8qLs4ASi4k=
+- EP4e1e2ONckozB7l+GIpM9IhmqVmfL4+Ue8MgxdQo/g=
+- JUQqYdDwf6ZIwbzK8fkixQuE3UUJ+/BjBbIRNX/AOBA=
+- odDMR4bQz1B75/eY29uFQFv2UFwAP/F/iLqlHMmPKcQ=
+- Fc444KVpBZ3LimdHFyS4783SPZiKp79zfRjZLSIIaW4=
+- 3dtWwxn323ks1o+F0YkvKi71Cwp7bPYeaJXQkPjKDE4=
+- RbFk7cipBF8ZBeuGQrjKp3XfsE52DSHcLL5UXo/IHn4=
+- jXMpyDvGrLlTpYTQyBbDjfAXQ84fjOZC3MLscvQkfto=
+- uY0/df2sh36Zh4qbcJ8OE7YD2zJz6kYp+4BAdepANfU=
+- vmyovjdIGbBIgCd2Nc+l3Yo8e4iLTZbGs8KK0vxN/W0=
+- 6+HK5uoalLBej6pE3tigvDGmffj4NvvQOMbFiOSwt9I=
+- RVmrtb0r6zp5CCwJgHb0GHYtaQQRZWh/opbN5E5QxbA=
+- HW9VptEHKeJYl1DzjeKoFnBD9KmPByR9h6nXO0FipsU=
+- Ot8fxTm5Kb5cD5fSc5FUvFK6w6aRlB/lxzEz5qWf3ik=
+- C1EJBc3eF9xm8fstmrz/JKOJHNONqdB8YJREWavpD3A=
+- dQpoPtPpJMdb2e5wd02RdqkzVqeTk2UJI/4wjVBqc00=
+- Ppe3Z+clxthO1FQ3BSuDVTbZxV6TXv4/pQPdlKFuNoE=
+- WKI5KpfmK1Wbu0U5Dt7iJ8LfSN6AU7FK6CpsTqNtf6Y=
+- a5/9cWMd1k4SMe9B4TjNKbkzxocHPB9ypmVxmY2b0qM=
+- BRKW1yQQSOhl0XYwuv5WpIyu4YGpHBqhRwGjQQmNtJA=
+- WfJx9jCTVZYvD+xk3KNs/0R3bqThme0KNQFH4V4POmw=
+- I3Cd/K3iHDOslJkZuc4sgJjCRXSwZnxx2LFFuYOCa8w=
+- Qqlksz2yCDJxShRdBqg8rIyRQ1ld0Ge6lgPXy1YdTiA=
+- "/TkkC6qOBpXLB3CiSaRgsNTpnaU6AKcnskomnNFkVq4="
+- 1VMh5FTbWt4T2jaH9elC06WWTxFlLOUczvgd4qV9JoQ=
+- elHQZKGiFqaS91P82rJ25P8gGgHYtm9W1Q1NcZ/Q3Ic=
+- SEur0MCV/viMi2r4QACCbNv6i6Up4CxDUlSqgdpZghM=
+- F2MfsB3Furn4yhPjQlKVDZVM4NAMjp/X8cBcJf7eQzE=
+- eE3PQFZAlHX1Rto0YzkVukc55+AP7r9ZUZxNsR4qz0o=
+- xKm/18E0ofkiDIutsDYC7sXvOureesFAi7EBHbmdrWE=
+- TwCHF5bGGJZng3uFdP1MxqOZrLEyy1aDDTMPL+pbHA4=
+- csywOtZ321qS24QYDcPILyWRxTSt/s6jlfswp0ogwow=
+- pqPKDsfEFeL6CnJz+q/4fcKhNwbw+z/XalonPzP59+E=
+- Tnatg1RGFDfATvm5skJUC2QG14L/LD+yiv2rW0I/iP4=
+- TCNigHXWFbqQ4SZEubVjiDmshfjlYGFd3OE3Qm8fFb8=
+- 11PKfNrC/CZvwZajluQM0fOzkbtTvJx8VJKZ7jVbjkQ=
+- Oq2+gHIS93ZMUPN7KmCQI2LK3uRjB1N3kj7hRmo1vEA=
+- lTreDyjdoLB5R+qIXiXY+mUjf0fBS1Qx5jCeH+0kSWU=
+- 9aLZ4zsLJkk/Yt1HCEquYt8crTcTwfT3C38xsxAdztI=
+- hwfu1EnYAQ0ZHFNlC9iuYmTz/pj9h96D0kDp8CwFa/Q=
+- MNQwhf3HMJ/fTS3vV08RYxM1yn1Hishlr1tEvpo/TiU=
+- EGVoNEIBnnvGaZD/UCUYJKOPzqtcZugXmFgtEfJMg68=
+- f06VFHsrQ25jTnk+bnWcmATPW9FzN7AoJ3f/njVmk20=
+- Tj3P+xMe6AAoStkUw/XVZbGp3iNtd4uNzWhPKqC//Ak=
+- 4MJ2vLspvcNuG9ECMHgCy0vGh6NVSlPeCni9l6ILa2c=
+- xcYoMD1jVYeCKkkPbbUUWs+LDZG08wWA6VWx3Rsk1tQ=
+- kDSZiV4CkW/dHquL4aBA46Suk0dxDdW0s1aIWq0Yehc=
+- g6cm+1tYgcbMfOzxNS8oaXlE+PSWBe98Gx4Qj2TshyE=
+- xC/qanh/qoTMab30ngVA/TdN1EYaafn+MZzRdyPqNtA=
+- vJYn94j/bl+XuTIb74YR2o+ZPDuFoGWVkV0x7+GUpK4=
+- HGX/AW2x5Y5vc+C3Dce/tlRRhOdV072zxeJ1gLBfmbg=
+- uXR6XTzK38W0jmIu/jPr9zNEPIf+bLAe7apBEwbl9C8=
+- WPBz6x8m0+hiUgC/yqg2pnPHzMabHaemPKSMpUxA8Ug=
+- 6R6I7op07Wm5Vsl9CGcHJ68ZsCJFnJO5DHALdkMZoG8=
+- y+aIiRWKvwsCurIp5/2GUWCedQbRt7+ykqRLRDCagPo=
+- fEnP0CVqX8YMcTG8iS1eNCHcnP4f3MEfW9BwEuUOaaQ=
+- QuzDFiOufOAzMJwT/W7dz2mt32XDKNE2hL7mVUFdcwU=
+- gtqZZfIrM3KzYm1vLS8CJap1hwP/af9+8gM+jn0LfFo=
+- H94yH9s8wRaLH2ntB5kBgljt3Icjqno4EhVXFAV9XcY=
+- kQ7swLBhTCqeOCx2QJ9pStBaU4QlIA3b08UFlpDrIGk=
+- b6MhLWJVifuNadrFWnpgnQHgd0AAU/5h0PV3bLwJt+o=
+- nFcpWV+yh8wqIlYoBEi75wbAqGbwNyUVx0g94q9OZTI=
+- bkYcjn/5SlseEeuJ4gMD0woGDSsYrL6p+eHxAeoQgFs=
+- y+rOjVg5i/DLq9F8tsLBrM9NN145cr3sJmy5NUjBX6I=
+- iRGEumtgaVlOFW6DPZmp9vnmOFu/HRCToxRXn1rJJZU=
+- Q82ad6h8bbEwO+Rio+Fy5qeUif3G/uV/iGoXp8kZZgc=
+- 1j9HATZ7xnr10uJA0JQP8fJWc7/7hOS4CH2lVwgc3tE=
+- AWDJitbc1J24JP7JzJKpGtFeLKb0MVrbLyVJgMEpQVU=
+- iiAdq6ehFLO4CKr6iMb6ZOPGK/n/LhtIK9VF53Etmx0=
+- E1wVhG+rTsqL7t/s4Ol9Wo3rwxHieuz0YB3reZohkrs=
+- POyHu0RtYHJ/C3ujqeE3x6Ak26JpgFuj+LN1Sg2faIo=
+- lIWrhsZHmA/fAMIKcmBIT+2wqBEKAojWRBGA+4XeePc=
+- rp0fbwoXBcXjVqVptNK3W5SFCCxmNFdVJ59hDUQW5dg=
+- FbdnQ49UVyqKFge/v+Bjsisa4Ae2i5Yfirddz1YRUxU=
+- iLAQgYTw2mkS7D5Zd+v7qFPMDaKD8UZnLc9uvJduujc=
+- yO06N4SfTLQxrUlqiY1HiJnyO9SgDQtxCe3RpGM2Z30=
+- BjpZuKDJWFPu0PTmNM4+TwypaF3trD2TAkz9LA2fPqs=
+- WSTmqGC3EFhCFOizk803HyckX+yFpceSqJtt8vSNhvc=
+- ba0uA/ZXTInl5CHlireXXUYovIlrjOHQpG8F9XeLtoI=
+- "/nOCYK1YhvrQUOyrzcKEJrrdyEPXrijYP/ItyhZo7+s="
+- 0wFX0m2xdr+fe6IfHjS4TsgWT4b2jMTqy0OEq+xNvKM=
+- L+TT3aiEw+N967OXXYKhOXtJrxHk9AM5GJc1LVYJMvE=
+- "+/fdGZGRC8o50A6W8xttnaLg3oZ/aNjw5+gKkp+jvi8="
+- ZffEwA4iFxONF/H/pgim7mx68cWj4cCyM1+I42uZAxg=
+- JKAe55O7jyYlg55H/KIzTg53KZk62IlsBkg16XJ25Ig=
+- M+eiZtRbViM6saANDJz9sV3Ml1QTSIdB/7b+jJLg6Pw=
+- 0tkpQaKEcCzCM0wakBfsFviIqqjQGRX7YpleXgqE79M=
+- OmRzodiTteIVuZ83ciC3W2vmrDVv//gaXYnCrglVVLI=
+- XxhPa8qPgWaAKFWnjpfR9JfXbo+64HFqp2626/WT9j4=
+- VR8/moTqiCmJx2Kp5YHnvw6IDFJ8LzyQXx8jWWUDeyo=
+- SVX2JMnye+151iJn70j/sowkgxUdarjH56mi++DwuFY=
+- JUcFeYOjZefV3IOxm4DF2HUWc2h0xuOADfHpyIKRYso=
+- 7onZ0ueyf0b7i5ap0ZzA2ArA+XJMX3QTGP6Y+K1gCf8=
+- 0FJcGIUVCPjF/zvrwryZWxXC+mzgrOuyuWRiuRjrT8c=
+- 8Fio9qMxXras5DOmahrdNMQ/QFn9+bjNcZzsCid+5/w=
+- cbPDhiGS9ADLW46OTgxJnxddvJCzbSdvPu7F8GlGJVk=
+- MJk3Wz3YUjs1Dr+Vg9m73Nc/XTTAWsxPXZgGIZZW8aI=
+- eb3Q5iX77Am0nYY/QbNuj3nzPHAGHX/zTpdgSabUl5M=
+- PxldwaAWjc8ezQn3XPDnI+TE4JbqKJz39iZqBGstWN0=
+- Ily9VuiOqIMor0sG1psUywLGXLjPWNt453Keg/TXRAU=
+- GYeDduLICeFmPEEa2ZMEHtKs99pZS4sD6p5Ix8I9A5A=
+- LxWlBvFeV4Lfau2YkKMu6j+TBthuwLEYDFbYB482mU8=
+- Hs9KYKwLGP4AVtJmr4lTJMDyySssu3GPYBsID1SARd0=
+- KsmrJGlWeueRMl/lzJ7IZO5folUXq9/epFFGi63MCk0=
+- 0bfXivNvKYYXvv9PyDSBmBUaE9RNAa0+TDBeKBH6dAs=
+- e+gPrsvq7BLRmHCR+mf2Cwz0ChEJtP5l4XVj1+nq7gg=
+- fGNLv29o03bIeAk2j1QSQ0aaksAn7PhfttSIN06VOmY=
+- m2lfu4MVrKS76jkoJ+md7G2VbkDE7ECxZ8WMi21X2RU=
+- "+ynq5BP8yvCE05zvI46UHGYKlN0N00dptF5rI+VZUxU="
+- feA92yvqFmr3kUR0dkmjdfTHphkBDBTkefVNVPriyDk=
+- "+qvHJ9EmEfBdUkOFnVmrbBhajXo3pePkW4ubvSAgtyA="
+- 2eVAbpMtyCETcnwrwikWuKDGu3hbP8qSDTbyP7CtZ9k=
+- 3sHxA0Qlx0UZpKpZthfKyHZXZF5NptVAPQsQaEqilB4=
+- nMy9dbHhHpqVevpNxzV202JvuOlyNqvAVT7SG+rm11E=
+- kcLStcbClgJE5/gcmpUjNsZOeZ+tXmPRcXzLAk/jC4o=
+- K4kVJVu0VZ1PKFBr65Gs3kVE560HsnoJg8Q7bmzpaf0=
+- bjyscssXHOW/vYat4Aw9FA6mgRzpje7A8Q6IMl19b5I=
+- R1cOJf4JLdQSYnkqbjdYpcPfEq2e7cYWqgiIanJw8mo=
+- 63xok7tXuojDV8l5vLAbMN5cu0Ev7smAzLxP2jHwr8M=
+- 4ezjH/aTneRdaa5gcCLcxPuAvoaygv+uL+zN1h9uyNA=
+- X0dmTSc03BHj3PuHfR15Fth7uXQHlnrZicv4Yv6DRWU=
+- GV210ZBNejTwsqKKIr76Rf3LJrz+y3uIT58Py3QjLrQ=
+- b4yYekofqDfKuLAaF8Vmk0t4d9utOe31ZZqViBZzzYY=
+- vsMRbzYmDoaOv5fOpCV5mWXUZDHYC9KP1uuWOR+oCJA=
+- hyaYfFERgDSYKyCLupmfYmNRod3f45NmV0lMkdP5now=
+- yH0zTQbjnJzZi4lGExu1NrdsDF1Ze7I/ijxR8pW869g=
+- wc4OtLAGTD3LDCjhNQKco2Pz8pbeupjpGFTeG1noi8E=
+- z+TchL+T5xQ7khsC3nee9K7k8UEhxNsoIBC3V5vy8Z4=
+- oSqCboogJ1nsM3HhGBoL7ok2JTMgywsOKam+rPakpnY=
+- T7DVhk6/J1k80jfDcqJ5nXBxjLR2xfJ4mQBTV4ze7aA=
+- tnbI1+XQjwJoa/wZVJnRRtUWOKy10eSQqlOnWuBaV9o=
+- zlqE69seee4ZzrmI7kzzkbw1DIsB9yxy3n/zbAGOXdA=
+- "+tesQoSA37FVIi/QaXCmfcC2FHbsENXpIHFTr2Dja8s="
+- 8i0xR1E7uyGPKGSvvJhMI4vNf/myaJ6LtMKGApNmUzI=
+- CkZm6Ab0Lye6RBjZEQvrWTIzch9YzU7FbWvRYNlsFjc=
+- J+UIGFyrH8KaGhRMSYIQgA/+qcNYG071jYeZ5plq1ak=
+- fNz4mA3p7nHuxbl4SECw3rik9WOCT1/EQkAERh2xZeY=
+- 0hPfqdQykdhGwt7GFcixuQyJ/zM+ht6PuPhhR7c4MOU=
+- joRAvQdrhc2NAevtMPRKdBpt6PNQIOedBjrvKuthe5c=
+- zr/lZhv8rCkqFmWnVowQwBPzudG+iaVKvNCngocV1u8=
+- BlheydhJ7GLCtgs0hLWnpswuDfz9n980G9gOysjR3N4=
+- 8izQ2PmnwzB1Dv5orN0OO4ztwBnna6Z1dz6X29j4Xz8=
+- "/8K+aoa69tGGWU1t7YIcC360JJuBGsMspd0bI+1mnYY="
+- QjKbFOsky6OOGRCn04Y4E9SHL0QDhM7ft3uraRlTRwU=
+- PNntBBLE0HQf3MueQjkoHQzsuBSkOiny01yCardjgYc=
+- XxDov2GHVPyO+70H1R0pDp2pWv9WaNCmElNKkoeuGaU=
+- dTOclmi2P067WYGUNDOZug1x515Deekz/5T2uCTbd3A=
+- DkKcK9XZ0q/fD5FwIO5CFTXUNobdir0T6NzhhGtjQuY=
+- mkvXTMPw0Fv6MjZDeRMIkSI9CPge2NNvMmyT0XhEKOw=
+- Wain/qiGpPPEHIeBaKsrH+4nWlwaNcR7Oi7MY14LsR8=
+- bY4u87LJ8EgtuqvW8/26pryiJoCk0JIl/Q/UIf8RDI0=
+- LRIS3G+Eczil/SvIozebihpR6uX6YYivZllsq1pod4c=
+- lsz5THCfyE+OERRNG15fDGVMhFksEAcorWRNQOhoXI8=
+- 3jDP3Hk1Bd0WkrLAMbLP/TxUbr9rjHPZmAe3qAKRlyI=
+- aoB3iCWRDFoFc6lnioo7ywey9OkG3c1MM7bsNrpg4Ho=
+- MCIwhDWtRswkrS7eVvaOIbUkIcD4Gfk4S7XB0dQd1v8=
+- hEfV6F248TUGH9366NNaVMfiqDZY1aKGDWdhsWK3tMM=
+- VhMUAa1mtyo0dQdG9Pjku3hLKO0vA1MQ0H6aN/6yPxM=
+- 3hx1yCfMVduoyyH7VkFkToiZxW4r2Qp32ATnlMjSQ/E=
+- 2CS8IoVDKgQ8sVXXqTkcEMSnPFVVccLH8wKvej4G/44=
+- R4XjhrvMoUWpXMrD8mmpvrno3bac15GYufA9+aMylH4=
+- JAcNivYLWWJxyA+H1NutMz8vJR4YAyNJd7BNdIS2ynM=
+- md7VU8m2r3AW4cFXcNNXqiPND6w2oMpXjfjKtUFu8rw=
+- Z1LKOM4qp39shYLZ0B8s2P/n5bTqPKcdQkFR194mkKc=
+- XY12U1VlR16CrZo+wwOjNB0B7sMMQ1uoZQp6d5joVP4=
+- 8tM/7vl6Htr74fdDHDFl6xo+rbces5BS0AGOUKKB9Lk=
+- kJu2gKrpMNoT8WSYrEpnGvJADBCLmXIGb7+8HP6xbZc=
+- DvpFjlItzbndgvMrBWYSSamU+/NDWrjIER9+0GKO6CQ=
+- "+fALAG2oSUqjsjwrEIUdBzXv7jtuxLjlmSW/t0WaHJY="
+- bDejj0QHnHQlSdSe0QcAdX5ECCkKgiX1RB0deRAohzc=
+- 6QNEAanh8ZKxOeag0CLx8t/DVzlksTpNmkgoPvy/n8k=
+- IheBmTgPf2eSqXjsNQNoln4p0GDnNstPO0xDSx3Fe6A=
+- F63SSo0v7RZ7HLzQ0IeGFlm4M5Lj0BWmh93yssSRWLA=
+- mi32kI+igdAMen2jT999MfCYtog4nAy6w6Eaa1YKG9A=
+- YQfbST2Edz67itfMsZtwR1tbd2Jo/8pIf0n+zY8pEfk=
+- S86b/K2Jitji0SXijrAGHzcCNIJFLJ2NDHEcFR4heks=
+- 5Zt5t+ji+me8RboUdeb6p+9TFcmrfcfxdeO0rvePALs=
+- jtQQbyAJmZMgxoxXWgs2L+iNxIpdj/XACsqSdh2n3Ug=
+- dXEoY3507QIOxw0v4ZlaiICSi+r0oOhpmS7CZFSqerM=
+- tz5ncsl+znXJpj5YD/CyRKsGfaqYdYpM8OF0W3NME04=
+- huAivPkBYp83qvKnvJ/YFz41TyvCaT5pVsW8J/3T0aE=
+- eBj4bfO/2+4S0F3Nfs1PescOaKAy7S+JnvRNJbBxmYQ=
+- G/EkgNwhkP4sis3wn0v2ynzlaY7tZOWSjF4us0wC4eE=
+- "+BBHUM/kukHllDtBAgtqpgsTZZu/fcfrSx5J4R+WalE="
+- Ne+Xd1FRNRRURlyuek5eqGzgO3AWHJmiuWYIjjKx16w=
+- P36Sw9fUKbkrJNmNbS3FFjGoucO2g7g28SskobFgFb8=
+- jS0Cj8XSISs+MOv6yZ0x96BlgyYZ+r692WNnlIqVOuk=
+- ni4y2Aj+aUyLwLKu/rok7nG2Qwj+vEwXQjOb2U0oxSY=
+- GvhaTRCRUStB1pxBAyH+43SxnYq05eNWSBtadYr5LW0=
+- yE3o0Q/Glv50eJo7n73w5Z2RRBDWbXO77mCxFKq4Rdk=
+- Vp8br4/NFm3UTbei7+z8TfivjLFV9uO+FarsSPsy+VA=
+- 378ZwhQvoTJ4cJ5JJh0zwEZDsd1VIeoh9iSxIbGp0o8=
+- 2DJaO5P/oFkk13aOu8YnMepyZqs/j2D6wWZyXvR37no=
+- APFWvyRDh2w6FGXzZDIO9Hl6LX8m4vQcquUn0xYiNQE=
+- RRQDBLOo7jK+mb3FEeRbQNE63wehHf4EGkbt1mShr+A=
+- B1p7k2/Fel+ge4LarFcpkXgxNB3PUnxOv1lnzzN6YXI=
+- gXrNS9RmQgc8dufVJ69mwhf+kO2rBxE10dRBdoFbSGg=
+- 4qWMiuTvHcUR6h93kUZ1pqQHQwKg1ejaoERjegrWfTg=
+- 0oUZcldJ9bNX9TrY9cx81y3eu6sseF7584mE62EAhTI=
+- bnX9zkbKi9o8Erzax39IOFj0+1kJyT5poEDrtkwrX2k=
+- z0bE6R//6cUyt6cbFnfAbdfotDpjC0QGQuDSkEMgmCU=
+- z7//uWAKdPECyBIqLzyUmPzGYr7hkb/QQCacuvpB7sw=
+- IjFY4pUqOrm6gZli3+8YkHyHFf85YdO4y+ckg68yvNs=
+- Oe2Ryvv1zOqZ/+/4DIy0LrZEZtrvwUXAIrS/Vchwx/4=
+- u4LZ+vBjBQ18CQNmmT1osznp0ZoE6PcLcvd4J2CliDw=
+- 6BP7SLoTeTN075gKw+myWidw0a6I4ZS2gIuDk/NKuDU=
+- 1PFPAN/zvVUZ4k3TM/PnYnH9KiycH1bM6NaCVCXsf+U=
+- OZIblTHLJOXG7+7646PMulvkQAR45m/lio63GmffRZU=
+- EQLJO7j3GGMwIjNFDmEEmjXMc3mmRvC0WSDtlu3qgzY=
+- zzsjoNEXk0zEAGjTo3724LEeWoN5mEnC4sk0TWK+4nI=
+- B9LLRg94avOEe8WQUXMfXrUHEPMa9NUtsHxmnLYD+wM=
+- RUwE1Gts4cez2Tr5bpGTxJ/QSgZBJPAzjOCPd8O0vq0=
+- RZUeA3paUKrpYG295fHYWwDt3jWBUo/a8FqOqYb3FiQ=
+- DTLg5WhLqPiis1DZYZCg4mtPsFN8ciJXApzYuDYQpDE=
+- WUXA2Jd89jDH1yY5OPXN3CyXTvf5gwv9tGspEBEV3rI=
+- I6ujS9lkfxNETm6GvCOKu/0Fzwy/uvz2yI8UoCjdEGQ=
+- FnUxE2DiZH76JTee/E3uEDdC9eYfLEMIufm4BSded64=
+- CXHU1FH+jM4i2FFF3PoHKiQ0UkuSgLELwOeMFWjj5UY=
+- 1B07Pu+fGaBqIfTQ8lk+7Jlzw4VfI6lBm0CIZREW6FI=
+- ElrO+5qG4I7LaXr5QH+rXiZqvufucpn0WxfxKhCCRWM=
+- 4agcWwaZ49jHlUcm8V7Y7U9dORVTPa6W1w6xrFDk3S8=
+- TTzgFd/HXIRxQLD3DkPKsm0fNAXtmK6lSbR8bJJ9odY=
+- fo7+ALb69+xrrM6x3gwgjZOAvCKFQayDTbZK8DWtItM=
+- jvCuI7OZCyqFWTthkoeQ/9j9/XXkFh6ovpN4NDpjYV0=
+- nYMCC/CDIa0gel/A/hMj0dfKAX8n60OsJ5o24TF5bdk=
+- 4dXU6OrUTiyh2JzC39H9qL2i9MNDaLDBYRYDANjkYMM=
+- mdXzKByuzopaZcNx3UWikyXtOd4OVwkzAfoKOwy4lAs=
+- 1nXrPT5xy5w9Sp41BB/iPDHJRvY8F6YdG8wNGkpQu9M=
+- m6rKtufxveFFJ9wri4ZCGsLjvDPZwfPF2RbITDuOm/0=
+- Ak7oribXt9R9ruQHE1x51xRbhbCBR+YCqspMkyfMS7U=
+- 8toPTJrYTqHyuSQjBddRXYA16zPi+yRla89h51akx3Q=
+- Smf7vudY1gnu/oXBJysuocttejS2o52ZOwBthDhXdiA=
+- rfn9GljOavGrttgwSB1GjhquvEUBeHd25yq7TBJgGZQ=
+- H/tBtTWa7ffuY0bdEzjDe9FhmUBVAuizdIwVphd70VA=
+- O3271WQ9SpRoY+GiG4uoyYMCwAeYh6xqLiWtfWNVrrI=
+- rRsw+YjBVWJ4GlFz6vMgxw3apVCwkGTMXo882rWCQWQ=
+- 3lJILM4gG6zGpUSCcPNkQeGaUa5dJk7A9oODpFnCyKg=
+- 2ny66o9nD1zX3NFQQINmQBLUMjSAzKS/gJmX4HOfSno=
+- opjO+A9DFAUohmc4l/Ngd642PPmDvcLtk1fnVEWneGw=
+- 2OzhZeUEj77ROGq2JKWwp1V86uXIGiYpDdrlPiJqL58=
+- 44mhlg8Xsf4ST/BhMR2GO8t7wC5+kre+ZWGSIJgp4jE=
+- QHuAd7nPmFYh7togfS65hv+pO5bMaD+F3D27pnEf5a8=
+- ASzyllk98+VeMnY5ueJ15krcHcSk9FCv8WbTbExAd1g=
+- Hzk8+K4dnIfORT17Xjf7A9i3uEOfut1Lee9snWAaF3A=
+- O20h1UWfb2xgxsIAGGiEDP88v6E+pP1N8qyBkyvpySA=
+- dVXyhawmXroihHIaa8sBe6cHil4FTmqPEx82NyL+tjM=
+- n+YgxhX7JaskwABqKjg8AaLO8vi1hzv4M5XjJdawFBY=
+- L5XfNK3EO3p7P+Gc0IRqlNOnnqSOO2WNmNlny+tbTgk=
+- QbxHwsuoKaWb5KXfOzExV9fQMUEkFsMeJSsHCNe8sL0=
+- kQHAwUu+cj9iQUkdV5ElSPwq5GeMFdgp2HQJdfyfUWk=
+- SO3xPyK5sXQ2WQ7t14gcCma6xZ6kgkwyR7T5LHPcwkk=
+- vi4io7Ap3g1iyUzHH5YuMfFThyIn638ikkFZBQBEDrs=
+- R8ZHsGHOl3ghg744Hafaayf1aoW1soCFH6V9Rxb54TY=
+- TgMRRze5BM0V/iw5msLqr+oqHOE7x67P0WtERZ7+hjg=
+- Q1JisbCEuFK5vt3wndyCPF1nt2Hkj1rsNbOHNO4ry0o=
+- Bhx+nWtsxJFpCkj/6ARXaJkt41fg/5Ts61ey5Md5KEU=
+- R99pWzGJY4vrpt4hSVrQ9JJBO835lwsK42ftRXxOn38=
+- fCiBLpOCPuAaoBqRzEBlUy3Euk5jFOu0+5EbN2BxQUA=
+- GA3lL17ztYwRmsr+yhW9KF4w6GQYsvVm+WnL6uEgAOc=
+- Z7zb2rzzAHj1NWISaK4V7T5y1cLhH2XA2nx6mhbLfJ8=
+- ZpgFkA3tG+tb8OafYwZ1ni49KLK6NrCfxMTaGYFqNHg=
+- coDOjh/aMvJICvvZmHkoFESruzQ+MPbmVTD/vcAnC98=
+- zyOqAaoCS0p9lVK/+riPcLgwiE9aNOidWm09J2KKoj8=
+- zNRwKGy4bRwBPszvZ43NXv2i48JzZE7RT4eWV3GcvKk=
diff --git a/config/webpack.config.js b/config/webpack.config.js
index 0d759de4900..146e9b48442 100644
--- a/config/webpack.config.js
+++ b/config/webpack.config.js
@@ -6,6 +6,7 @@ const path = require('path');
const BABEL_VERSION = require('@babel/core/package.json').version;
const SOURCEGRAPH_VERSION = require('@sourcegraph/code-host-integration/package.json').version;
+const GITLAB_WEB_IDE_VERSION = require('@gitlab/web-ide/package.json').version;
const BABEL_LOADER_VERSION = require('babel-loader/package.json').version;
const CompressionPlugin = require('compression-webpack-plugin');
@@ -54,17 +55,31 @@ const INCREMENTAL_COMPILER_RECORD_HISTORY = IS_DEV_SERVER && !process.env.CI;
const WEBPACK_REPORT = process.env.WEBPACK_REPORT && process.env.WEBPACK_REPORT !== 'false';
const WEBPACK_MEMORY_TEST =
process.env.WEBPACK_MEMORY_TEST && process.env.WEBPACK_MEMORY_TEST !== 'false';
-const NO_COMPRESSION = process.env.NO_COMPRESSION && process.env.NO_COMPRESSION !== 'false';
-const NO_SOURCEMAPS = process.env.NO_SOURCEMAPS && process.env.NO_SOURCEMAPS !== 'false';
+let NO_COMPRESSION = process.env.NO_COMPRESSION && process.env.NO_COMPRESSION !== 'false';
+let NO_SOURCEMAPS = process.env.NO_SOURCEMAPS && process.env.NO_SOURCEMAPS !== 'false';
+let NO_HASHED_CHUNKS = process.env.NO_HASHED_CHUNKS && process.env.NO_HASHED_CHUNKS !== 'false';
+
+if (WEBPACK_REPORT) {
+ console.log('Webpack report enabled. Running a "slim" production build.');
+ // For our webpack report we need no source maps, compression _or_ hashed file names.
+ NO_SOURCEMAPS = true;
+ NO_COMPRESSION = true;
+ NO_HASHED_CHUNKS = true;
+}
const WEBPACK_OUTPUT_PATH = path.join(ROOT_PATH, 'public/assets/webpack');
const WEBPACK_PUBLIC_PATH = '/assets/webpack/';
const SOURCEGRAPH_PACKAGE = '@sourcegraph/code-host-integration';
+const GITLAB_WEB_IDE_PACKAGE = '@gitlab/web-ide';
const SOURCEGRAPH_PATH = path.join('sourcegraph', SOURCEGRAPH_VERSION, '/');
const SOURCEGRAPH_OUTPUT_PATH = path.join(WEBPACK_OUTPUT_PATH, SOURCEGRAPH_PATH);
const SOURCEGRAPH_PUBLIC_PATH = path.join(WEBPACK_PUBLIC_PATH, SOURCEGRAPH_PATH);
+const GITLAB_WEB_IDE_PATH = path.join('gitlab-vscode', GITLAB_WEB_IDE_VERSION, '/');
+const GITLAB_WEB_IDE_OUTPUT_PATH = path.join(WEBPACK_OUTPUT_PATH, GITLAB_WEB_IDE_PATH);
+const GITLAB_WEB_IDE_PUBLIC_PATH = path.join(WEBPACK_PUBLIC_PATH, GITLAB_WEB_IDE_PATH);
+
const devtool = IS_PRODUCTION ? 'source-map' : 'cheap-module-eval-source-map';
let autoEntriesCount = 0;
@@ -245,8 +260,10 @@ module.exports = {
output: {
path: WEBPACK_OUTPUT_PATH,
publicPath: WEBPACK_PUBLIC_PATH,
- filename: IS_PRODUCTION ? '[name].[contenthash:8].bundle.js' : '[name].bundle.js',
- chunkFilename: IS_PRODUCTION ? '[name].[contenthash:8].chunk.js' : '[name].chunk.js',
+ filename:
+ IS_PRODUCTION && !NO_HASHED_CHUNKS ? '[name].[contenthash:8].bundle.js' : '[name].bundle.js',
+ chunkFilename:
+ IS_PRODUCTION && !NO_HASHED_CHUNKS ? '[name].[contenthash:8].chunk.js' : '[name].chunk.js',
globalObject: 'this', // allow HMR and web workers to play nice
},
@@ -473,7 +490,9 @@ module.exports = {
new VueLoaderPlugin(),
// automatically configure monaco editor web workers
- new MonacoWebpackPlugin(),
+ new MonacoWebpackPlugin({
+ filename: '[name].[contenthash:8].worker.js',
+ }),
new GraphqlKnownOperationsPlugin({ filename: 'graphql_known_operations.yml' }),
@@ -583,6 +602,10 @@ module.exports = {
},
},
{
+ from: path.join(ROOT_PATH, 'node_modules', GITLAB_WEB_IDE_PACKAGE, 'dist', 'public'),
+ to: GITLAB_WEB_IDE_OUTPUT_PATH,
+ },
+ {
from: path.join(
ROOT_PATH,
'node_modules/@gitlab/visual-review-tools/dist/visual_review_toolbar.js',
@@ -677,6 +700,8 @@ module.exports = {
statsFilename: path.join(ROOT_PATH, 'webpack-report/stats.json'),
statsOptions: {
source: false,
+ errors: false,
+ warnings: false,
},
}),
@@ -689,6 +714,7 @@ module.exports = {
IS_JH: IS_JH ? 'window.gon && window.gon.jh' : JSON.stringify(false),
// This is used by Sourcegraph because these assets are loaded dnamically
'process.env.SOURCEGRAPH_PUBLIC_PATH': JSON.stringify(SOURCEGRAPH_PUBLIC_PATH),
+ 'process.env.GITLAB_WEB_IDE_PUBLIC_PATH': JSON.stringify(GITLAB_WEB_IDE_PUBLIC_PATH),
...(IS_PRODUCTION ? {} : { LIVE_RELOAD: DEV_SERVER_LIVERELOAD }),
}),