From 826c62c3b6a23f1537e1b73c9a34ce5db338e259 Mon Sep 17 00:00:00 2001 From: Amy Blais <29708087+amyblais@users.noreply.github.com> Date: Thu, 16 May 2024 07:54:24 -0400 Subject: [PATCH] V9.8 Docs (#7079) * Update conf.py * Clarified that 1000 guidance is for 100-1000 concurrent users (#7112) * Added 5M message limit (#7114) * Added --local to example & updated formatting (#7115) * Added Elasticsearch > Rebuild channels index option for admins (#7116) * Added 2 new Amazon S3 upload/export part size config settings (#7125) * Added Amazon S3 upload/export part size config settings * second config setting * Incorporated reviewer feedback * User is notified if @mention isn't part of team (#7118) * Aligned docs with updated user experience for notification preferences (#7119) * Incorporated https://github.com/mattermost/docs/pull/7102/ into v9.8 (#7120) * Added Don't Clear DND option (#7121) * Deprecated MaxIdleConns config setting (#7122) * Clarified that roles & permissions schemes can be exported (#7123) * Added new flags to mmctl import process (#7126) * Updated section title to clarify action (#7128) * Incorporates feature labels with existing content (#7129) * Incorporates feature labels with existing content * Final content iterations; removed duplication * Removed Gfycat references (#7117) * Removed Gfycat references * Removed remaining gfycat references * Added max payload size config setting (#7127) * Added max payload size config setting * Update source/configure/file-storage-configuration-settings.rst Co-authored-by: Harshil Sharma <18575143+harshilsharma63@users.noreply.github.com> * Incorporated reviewer feedback * Table syntax fix --------- Co-authored-by: Harshil Sharma <18575143+harshilsharma63@users.noreply.github.com> * Code references to pgLoader corrected to pgloader (#7113) * code references to pgLoader corrected to pgloader * Converted remaining instances of pgLoader to lowercase l * Build warning/error fixes * v9.8 changelog (#7082) * Update mattermost-changelog.md * Update mattermost-changelog.md * Update mattermost-changelog.md * Update open-source-components.rst * Update release-lifecycle.rst * Update download-latest-tarball.rst * Update important-upgrade-notes.rst * Update prepare-to-upgrade-mattermost.rst * Update extended-support-release.rst * Update version-archive.rst * Add files via upload * Update extended-support-release.rst * Update mattermost-changelog.md * Update mattermost-changelog.md * Update mattermost-changelog.md * Update source/deploy/mattermost-changelog.md Co-authored-by: Maria A Nunez * Update source/deploy/mattermost-changelog.md Co-authored-by: Maria A Nunez * Update mattermost-changelog.md * Update mattermost-changelog.md * Update software-hardware-requirements.rst * Apply suggestions from code review Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update mattermost-changelog.md * Update mattermost-changelog.md * Update mattermost-changelog.md --------- Co-authored-by: Maria A Nunez Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> Co-authored-by: Harshil Sharma <18575143+harshilsharma63@users.noreply.github.com> Co-authored-by: Maria A Nunez --- source/about/faq-product.rst | 29 +- source/collaborate/install-desktop-app.rst | 6 +- source/collaborate/mention-people.rst | 2 +- source/collaborate/message-priority.rst | 2 +- source/collaborate/organize-conversations.rst | 2 +- .../organize-using-custom-user-groups.rst | 4 +- source/conf.py | 12 +- source/configure/calls-deployment.rst | 32 +- .../database-configuration-settings.rst | 21 - .../deprecated-configuration-settings.rst | 12 + .../elasticsearch-configuration-settings.rst | 56 +- ...nabling-chinese-japanese-korean-search.rst | 4 +- .../environment-configuration-settings.rst | 17 - .../experimental-configuration-settings.rst | 2 +- .../file-storage-configuration-settings.rst | 79 ++- .../integrations-configuration-settings.rst | 42 +- .../plugins-configuration-settings.rst | 176 +++++-- source/deploy/desktop-app-changelog.rst | 34 +- source/deploy/mattermost-changelog.md | 104 ++++ source/deploy/postgres-migration.rst | 22 +- source/getting-started/feature-labels.rst | 28 + .../guides/desktop-mobile-app-deployment.rst | 4 +- .../get-started-with-administration.rst | 2 + source/images/ESR_graphic2.png | Bin 0 -> 246054 bytes source/images/set-your-availability-dnd.png | Bin 0 -> 50191 bytes ...msi-installer-and-group-policy-install.rst | 2 +- source/install/download-latest-tarball.rst | 2 +- .../software-hardware-requirements.rst | 8 +- source/integrate/zoom-interoperability.rst | 4 +- source/manage/bulk-export-data.rst | 6 +- source/manage/common-support-packet.rst | 2 +- source/manage/error-codes.rst | 11 +- source/manage/logging.rst | 2 +- source/manage/mmctl-command-line-tool.rst | 6 +- source/manage/telemetry.rst | 6 +- source/onboard/bulk-loading-about.rst | 21 +- source/onboard/migrating-to-mattermost.rst | 4 +- source/onboard/run-bulk-loading-command.rst | 3 +- source/onboard/ssl-client-certificate.rst | 2 +- .../preferences/manage-your-notifications.rst | 48 +- .../set-your-status-availability.rst | 6 +- source/scale/scale-to-1000-users.rst | 2 +- source/upgrade/extended-support-release.rst | 4 +- source/upgrade/important-upgrade-notes.rst | 4 +- source/upgrade/open-source-components.rst | 487 +++++++++--------- .../upgrade/prepare-to-upgrade-mattermost.rst | 2 +- source/upgrade/release-lifecycle.rst | 4 +- source/upgrade/version-archive.rst | 2 +- 48 files changed, 796 insertions(+), 534 deletions(-) create mode 100644 source/getting-started/feature-labels.rst create mode 100644 source/images/ESR_graphic2.png create mode 100644 source/images/set-your-availability-dnd.png diff --git a/source/about/faq-product.rst b/source/about/faq-product.rst index b4830be7aeb..9bcfc9666ba 100644 --- a/source/about/faq-product.rst +++ b/source/about/faq-product.rst @@ -85,36 +85,11 @@ The following chart highlights the end user features of Mattermost and their sup "User profile settings", "X", "X", "X" "Channel settings", "X", "X", "X" -.. _feature-quality-levels: - What feature quality levels does Mattermost have? -------------------------------------------------- We strive to release viable features. This means that we put in a significant amount of effort to ensure we solve a use case with a high bar for quality. A feature that's viable and meets our criteria for our production quality levels will be released to production. -However, when working on large and complex features or new products, we may need to test them with a high volume of customers and users. For these scenarios, we'll release them as experimental or beta and implement feature flags and/or A/B testing to validate the effectiveness of features prior to production-level release. - -We dogfood our features on our community server and provide many configuration options that ensure customers can opt-in when trying experimental or beta features. - -This list describes the quality levels of Mattermost features, and what can be expected at each level. - -Production Level Quality -- Recommended for use in production environments -- Eligible for commercial support by `Mattermost, Inc. `__ -- Detailed documentation is available -- Tested on several platforms - -Beta Level Quality -- Support best effort only. `Premier Support `__ is recommended for use in production environments -- Core functionality is stable, but iteration based on feedback is ongoing -- Full testing of all edge cases is still in progress -- Detailed documentation may not be available yet - -Experimental Level Quality -- Not recommended for use in production -- Unknown level of stability -- Feature set covers a small or specific set of use cases. Additional use and edge cases will be added over time -- Data loss can occur as data schemas and configurations may change -- Minimal documentation is available +However, when working on large and complex features or new products, we may need to test them with a high volume of customers and users. For these scenarios, we'll release them as :ref:`Experimental ` or :ref:`Beta `, and implement feature flags and/or A/B testing to validate the effectiveness of features prior to production-level release. Additionally, we `dogfood our features `_ on our community server, and provide many configuration options that ensure customers can opt-in when trying experimental or beta features. -Please see our `handbook `__ for a more detailed explanation of how we define feature labels. +See the :doc:`Mattermost feature labels ` documentation for details on the status, maturity, and support level of each feature, and what you can expect at each level. \ No newline at end of file diff --git a/source/collaborate/install-desktop-app.rst b/source/collaborate/install-desktop-app.rst index 069dd8bf8a8..db86b0b5dac 100644 --- a/source/collaborate/install-desktop-app.rst +++ b/source/collaborate/install-desktop-app.rst @@ -32,7 +32,7 @@ You can download the `desktop app `_ directly from 1. Download the latest version of the Mattermost desktop app: `32/64-bit version of Windows `_ 2. From the **\Downloads** folder, right-click on the file ``mattermost-desktop-setup-5.7.0-win.exe``, then select **Open** to start an installer for the app. Once finished, the Mattermost desktop app opens automatically. - **MSI Installer and group policies (beta)** + **MSI Installer and group policies (Beta)** You can download the latest version of the Mattermost desktop app MSI installer (Beta): @@ -83,7 +83,7 @@ You can download the `desktop app `_ directly from .. tab:: Ubuntu/Debian - Both a beta ``.deb`` package and an official APT repository is available for Debian 9 and for Ubuntu releases 20.04 LTS or later. Automatic app updates are supported and enabled. When a new version of the desktop app is released, your app updates automatically. + Both a ``.deb`` package (Beta), and an official APT repository is available for Debian 9 and for Ubuntu releases 20.04 LTS or later. Automatic app updates are supported and enabled. When a new version of the desktop app is released, your app updates automatically. 1. At the command line, set up the Mattermost repository on your system: @@ -164,7 +164,7 @@ You can download the `desktop app `_ directly from .. tab:: Generic Linux - A beta AppImage distribution of a compressed tarball is available. Automatic app updates are supported and enabled. When a new version of the desktop app is released, your app updates automatically. + A AppImage distribution (Beta) of a compressed tarball is available. Automatic app updates are supported and enabled. When a new version of the desktop app is released, your app updates automatically. 1. Download the latest version of the Mattermost desktop app: diff --git a/source/collaborate/mention-people.rst b/source/collaborate/mention-people.rst index d9b96ef8c86..239049aea95 100644 --- a/source/collaborate/mention-people.rst +++ b/source/collaborate/mention-people.rst @@ -35,7 +35,7 @@ The following example sends a special mention notification to Alice, whose usern @alice how did your interview go with the new candidate? -If the person you mentioned doesn't belong to the channel, a system message is posted to let you know, and you're given the option to add the person to the channel. You are the only one who can see this message. +If the person you mentioned doesn't belong to the channel or the team, a system message is posted to let you know, and you're given the option to add the person to the channel. You are the only one who can see this message. @channel and @all ----------------- diff --git a/source/collaborate/message-priority.rst b/source/collaborate/message-priority.rst index de0bad7d536..df7181b728a 100644 --- a/source/collaborate/message-priority.rst +++ b/source/collaborate/message-priority.rst @@ -1,4 +1,4 @@ -Set message priority (beta) +Set message priority (Beta) =========================== .. include:: ../_static/badges/allplans-cloud-selfhosted.rst diff --git a/source/collaborate/organize-conversations.rst b/source/collaborate/organize-conversations.rst index 1ca2a85283f..b9884b3adb4 100644 --- a/source/collaborate/organize-conversations.rst +++ b/source/collaborate/organize-conversations.rst @@ -92,7 +92,7 @@ Known issues Collapsed Reply Threads was released as generally available in Mattermost v7.0, including significant server performance improvements and more flexible configuration options for system admins to enable the feature by default. We highly recommended :doc:`upgrading to Mattermost v7.0 ` to take advantage of these configuration and performance enhancements. -Customers running Collapsed Reply Threads in beta on Mattermost v6.7 or earlier will likely experience bugs and unoptimized server performance. Learn more about the `beta release performance considerations `__ applicable only to Mattermost v5.37 through v6.7 deployments. +Customers running Collapsed Reply Threads in Beta running Mattermost v6.7 or earlier will likely experience bugs and unoptimized server performance. Learn more about the `beta release performance considerations `__ applicable only to Mattermost v5.37 through v6.7 deployments. In particular, please be aware of these important known issues and risks: diff --git a/source/collaborate/organize-using-custom-user-groups.rst b/source/collaborate/organize-using-custom-user-groups.rst index 47f3ae97070..058fd46b5e8 100644 --- a/source/collaborate/organize-using-custom-user-groups.rst +++ b/source/collaborate/organize-using-custom-user-groups.rst @@ -1,4 +1,4 @@ -Manage custom groups (beta) +Manage custom groups (Beta) =========================== .. include:: ../_static/badges/ent-pro-cloud-selfhosted.rst @@ -16,7 +16,7 @@ Manage custom groups (beta)

Not available in legacy Mattermost Enterprise Edition E10 or E20

-Custom groups (beta) reduce noise and improve focus by notifying the right people in a channel at the right time, while maintaining transparency for all members in that channel. Custom user groups let you notify up to 256 users at a time rather than notifying users individually. +Custom groups (Beta) reduce noise and improve focus by notifying the right people in a channel at the right time, while maintaining transparency for all members in that channel. Custom user groups let you notify up to 256 users at a time rather than notifying users individually. For example, perhaps you want to @mention a cross-functional team about a bug fixes needed for an upcoming feature release, without notifying everyone else in the channel. Using a custom group notifies the cross-functional team immediately, while keeping important stakeholders in the loop on the status of the feature release. diff --git a/source/conf.py b/source/conf.py index a0ae0822b67..f3c40df80e2 100644 --- a/source/conf.py +++ b/source/conf.py @@ -1611,9 +1611,9 @@ def setup(_: Sphinx): "configure/configuration-settings.html#enable-gif-picker": "https://docs.mattermost.com/configure/integrations-configuration-settings.html#enable-gif-picker", "configure/configuration-settings.html#gfycat-api-key": - "https://docs.mattermost.com/configure/integrations-configuration-settings.html#gfycat-api-key", + "https://docs.mattermost.com/configure/integrations-configuration-settings.html#gif-beta", "configure/configuration-settings.html#gfycat-api-secret": - "https://docs.mattermost.com/configure/integrations-configuration-settings.html#gfycat-api-secret", + "https://docs.mattermost.com/configure/integrations-configuration-settings.html#gif-beta", "configure/configuration-settings.html#enable-cross-origin-requests-from": "https://docs.mattermost.com/configure/integrations-configuration-settings.html#enable-cross-origin-requests-from", "configure/configuration-settings.html#cors-exposed-headers": @@ -1804,6 +1804,8 @@ def setup(_: Sphinx): "https://docs.mattermost.com/configure/configuration-in-your-database.html", "configure/configuration-in-your-database.html": "https://docs.mattermost.com/configure/store-configuration-in-your-database.html", +"configure/environment-configuration-settings.html#database-maxidleconnections": + "https://docs.mattermost.com/configure/deprecated-configuration-settings.html#database-maxidleconnections", # Deploy redirects "deploy/mobile-apps-faq.html": @@ -2959,6 +2961,8 @@ def setup(_: Sphinx): "https://docs.mattermost.com/onboard/migrating-to-mattermost.html#use-the-mattermost-web-app-deprecated", "onboard/migrating-to-mattermost.html#migrating-from-slack-using-the-mattermost-mmetl-tool-and-bulk-import": "https://docs.mattermost.com/onboard/migrating-to-mattermost.html#use-the-mattermost-mmetl-tool-and-bulk-import", +"onboard/migrating-to-mattermost.html#migrate-mattermost-server": + "https://docs.mattermost.com/onboard/migrate-mattermost-from-one-server-to-another", # Overview redirects "overview/architecture.html": @@ -3414,9 +3418,9 @@ def setup(_: Sphinx): # built documents. # # The short X.Y version. -# version = '9.7' +# version = '9.8' # The full version, including alpha/beta/rc tags. -# release = '9.7' +# release = '9.8' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/source/configure/calls-deployment.rst b/source/configure/calls-deployment.rst index 8adc0393165..2377d3fd38f 100644 --- a/source/configure/calls-deployment.rst +++ b/source/configure/calls-deployment.rst @@ -4,19 +4,7 @@ Calls self-hosted deployment .. include:: ../_static/badges/allplans-cloud-selfhosted.rst :start-after: :nosearch: -This document provides information on how to successfully make the Calls plugin work on self-hosted deployments. It also outlines some of the most common deployment strategies with example diagrams, and also provides the deployment guidelines for the recording and transcription service. - -- `Terminology <#terminology>`__ -- `Plugin components <#plugin-components>`__ -- `Requirements <#requirements>`__ -- `Limitations <#limitations>`__ -- `Configuration <#configuration>`__ -- `Performance <#performance>`__ -- `RTCD Service <#the-rtcd-service>`__ -- `Configure recording and transcriptions <#configure-recording-and-transcriptions>`__ -- `Kubernetes deployments <#kubernetes-deployments>`__ -- `Frequently asked questions <#frequently-asked-questions>`__ -- `Troubleshooting <#troubleshooting>`__ +This document provides information on how to successfully make the Calls plugin work on self-hosted deployments. It also outlines some of the most common deployment strategies with example diagrams, and provides the deployment guidelines for the recording, transcription, and live captions service. Terminology ----------- @@ -329,28 +317,29 @@ In order for this to work, the :ref:`RTCD Service URL `__. Performance and scalability recommendations related to this service can be found in `here `__. +Before you can start recording, transcribing, and live captioning calls, you need to configure the ``calls-offloader`` job service. See the `calls-offloader `_ documentation on GitHub for details on deploying and running this service. `Performance and scalability recommendations `_ related to this service are also available on GitHub. .. note:: If deploying the service in a Kubernetes cluster, refer to the later section on `Helm charts <#helm-charts>`__. Once the ``calls-offloader`` service is running, recordings should be explicitly enabled through the :ref:`Enable call recordings ` config setting and the service's URL should be configured using :ref:`Job service URL `. +Call transcriptions can be enabled through the :ref:`Enable call transcriptions ` configuration setting. -Call transcriptions can be enabled through the :ref:`Enable call transcriptions ` config setting. +Live captions can be enabled through the :ref:`Enable live captions ` configuration setting. .. note:: - The call transcriptions functionality is available starting in Calls version v0.22.0 + - The call transcriptions functionality is available starting in Calls version v0.22.0. + - The live captions functionality is available starting in Calls version v0.26.2. Kubernetes deployments ---------------------- @@ -427,7 +416,6 @@ If calls are failing to connect or timing out, it's likely there could be a misc For example, the :ref:`RTC Server Port (UDP) ` or the :ref:`RTC Server Port (TCP) ` may not be open or forwarded correctly. - Connectivity checks ^^^^^^^^^^^^^^^^^^^ diff --git a/source/configure/database-configuration-settings.rst b/source/configure/database-configuration-settings.rst index 4f853d00f2d..2b006c2ef52 100644 --- a/source/configure/database-configuration-settings.rst +++ b/source/configure/database-configuration-settings.rst @@ -148,27 +148,6 @@ Data source | `high availablility database configuration `__ documentation for details. | +------------------------------------------------------------+-----------------------------------------------------------------------------+ -.. config:setting:: database-maxidleconnections - :displayname: Maximum idle database connections (Database) - :systemconsole: Environment > Database - :configjson: SqlSettings.MaxIdleConns - :environment: MM_SQLSETTINGS_MAXIDLECONNS - :description: The maximum number of idle connections held open to the database. Default is **20**. - -Maximum idle database connections -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. raw:: html - -

Also available in legacy Mattermost Enterprise Edition E10 or E20

- -+--------------------------------------------------------+------------------------------------------------------------------+ -| The maximum number of idle connections held open | - System Config path: **Environment > Database** | -| to the database. | - ``config.json`` setting: ``".SqlSettings.MaxIdleConns": 20,`` | -| | - Environment variable: ``MM_SQLSETTINGS_MAXIDLECONNS`` | -| Numerical input. Default is **20**. | | -+--------------------------------------------------------+------------------------------------------------------------------+ - .. config:setting:: database-maxopenconnections :displayname: Maximum open connections (Database) :systemconsole: Environment > Database diff --git a/source/configure/deprecated-configuration-settings.rst b/source/configure/deprecated-configuration-settings.rst index 0233bae1044..96805ed74d8 100644 --- a/source/configure/deprecated-configuration-settings.rst +++ b/source/configure/deprecated-configuration-settings.rst @@ -381,6 +381,18 @@ The port used for streaming data between servers. | This feature's ``config.json`` setting is ``"StreamingPort": ":8075"`` with string input. | +-------------------------------------------------------------------------------------------+ +Maximum idle database connections +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +*Deprecated. Not used in Mattermost v7.0 and later* + ++--------------------------------------------------------+------------------------------------------------------------------+ +| The maximum number of idle connections held open | - System Config path: **Environment > Database** | +| to the database. | - ``config.json`` setting: ``".SqlSettings.MaxIdleConns": 20,`` | +| | - Environment variable: ``MM_SQLSETTINGS_MAXIDLECONNS`` | +| Numerical input. Default is **20**. | | ++--------------------------------------------------------+------------------------------------------------------------------+ + Maximum idle connections for high availability ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/source/configure/elasticsearch-configuration-settings.rst b/source/configure/elasticsearch-configuration-settings.rst index 09dfbbbb0b2..7a106c1fd73 100644 --- a/source/configure/elasticsearch-configuration-settings.rst +++ b/source/configure/elasticsearch-configuration-settings.rst @@ -223,31 +223,33 @@ Bulk indexing +---------------------------------------------------------------+--------------------------------------------------------------------------+ | Configure Mattermost to start a bulk index of all existing | - System Config path: **Environment > Elasticsearch** | -| posts in the database. | - ``config.json`` setting: N/A | +| posts in the database, from oldest to newest. | - ``config.json`` setting: N/A | | | - Environment variable: N/A | +---------------------------------------------------------------+--------------------------------------------------------------------------+ -| Select the **Index Now** button in the System Console to start a bulk index of all posts. If the indexing process is canceled, the | -| index and search results will be incomplete. | +| Select the **Index Now** button in the System Console to start a bulk index of all posts, and review all index jobs in progress. | +| Elasticsearch is available during indexing but search results may be incomplete until the indexing job is complete. | +| If an in-progress indexing job is canceled, the index and search results will be incomplete. | +---------------------------------------------------------------+--------------------------------------------------------------------------+ -.. config:setting:: elastic-indexestoskipwhilepurging - :displayname: Indexes to skip while purging (Elasticsearch) +.. config:setting:: elastic-rebuildchannelsindex + :displayname: Rebuild channels index (Elasticsearch) :systemconsole: Environment > Elasticsearch - :configjson: .Elasticsearchsettings.IgnoredPurgeIndexes - :environment: MM_ELASTICSEARCHSETTINGS_IGNOREDPURGEINDEXES - :description: Specify index names to ignore while purging indexes, separated by commas. - + :configjson: N/A + :environment: N/A + :description: Purge the channels index adn re-index all channels in the database, from oldest to newest. -Indexes to skip while purging -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Rebuild channels index +~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+--------------------------------------------------------------------------+ -| Specify index names to ignore while purging indexes. | - System Config path: **Environment > Elasticsearch** | -| Separate multiple index names with commas. | - ``config.json`` setting: ElasticsearchSettings.IgnoredPurgeIndexes | -| | - Environment variable: MM_ELASTICSEARCHSETTINGS_IGNOREDPURGEINDEXES | -| Use an asterisk (*) to match a sequence of index name | | -| characters. | | -+---------------------------------------------------------------+--------------------------------------------------------------------------+ ++---------------------------------------------------------------+---------------------------------------------------------------+ +| Purge the channels index adn re-index all channels in the | - System Config path: **Environment > Elasticsearch** | +| database, from oldest to newest. | - ``config.json`` setting: N/A | +| | - Environment variable: N/A | ++---------------------------------------------------------------+---------------------------------------------------------------+ +| Select the **Rebuild Channels Index** button in the System Console to purge the channels index. | +| Ensure no other indexing jobs are in progress via the **Bulk Indexing** table before starting this process. | +| During indexing, channel auto-complete is available, but search results may be incomplete until the indexing job is complete. | ++---------------------------------------------------------------+---------------------------------------------------------------+ .. config:setting:: elastic-purgeindexes :displayname: Purge indexes (Elasticsearch) @@ -272,6 +274,24 @@ Purge indexes | After purging the index, create a new index by selecting the **Index Now** button. | +---------------------------------------------------------------+-------------------------------------------------------------+ +.. config:setting:: elastic-indexestoskipwhilepurging + :displayname: Indexes to skip while purging (Elasticsearch) + :systemconsole: Environment > Elasticsearch + :configjson: .Elasticsearchsettings.IgnoredPurgeIndexes + :environment: MM_ELASTICSEARCHSETTINGS_IGNOREDPURGEINDEXES + :description: Specify index names to ignore while purging indexes, separated by commas. + +Indexes to skip while purging +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ++---------------------------------------------------------------+--------------------------------------------------------------------------+ +| Specify index names to ignore while purging indexes. | - System Config path: **Environment > Elasticsearch** | +| Separate multiple index names with commas. | - ``config.json`` setting: ElasticsearchSettings.IgnoredPurgeIndexes | +| | - Environment variable: MM_ELASTICSEARCHSETTINGS_IGNOREDPURGEINDEXES | +| Use an asterisk (*) to match a sequence of index name | | +| characters. | | ++---------------------------------------------------------------+--------------------------------------------------------------------------+ + .. config:setting:: elastic-enablesearch :displayname: Enable Elasticsearch for search queries (Elasticsearch) :systemconsole: Environment > Elasticsearch diff --git a/source/configure/enabling-chinese-japanese-korean-search.rst b/source/configure/enabling-chinese-japanese-korean-search.rst index ae398dd6c2d..33efe9ae595 100644 --- a/source/configure/enabling-chinese-japanese-korean-search.rst +++ b/source/configure/enabling-chinese-japanese-korean-search.rst @@ -154,14 +154,14 @@ MySQL 해결 방법 4. 일부 테이블의 전문 검색 색인을 다음과 같이 재구성합니다. -- 게시물 검색을 위한 설정 ( `참조 `_ ) +- 게시물 검색을 위한 설정 ( `참조 `__ ) .. code:: sql DROP INDEX idx_posts_message_txt ON Posts; CREATE FULLTEXT INDEX idx_posts_message_txt ON Posts (Message) WITH PARSER ngram; -- 해시 태그 검색을 위한 설정 ( `참조 `_ ) +- 해시 태그 검색을 위한 설정 ( `참조 `__ ) .. code:: sql diff --git a/source/configure/environment-configuration-settings.rst b/source/configure/environment-configuration-settings.rst index 46778743042..3a5e2e9cb16 100644 --- a/source/configure/environment-configuration-settings.rst +++ b/source/configure/environment-configuration-settings.rst @@ -9,23 +9,6 @@ Environment configuration settings Both self-hosted and Cloud admins can access the following configuration settings in **System Console > Environment**. Self-hosted admins can also edit the ``config.json`` file as described in the following tables. -- `Web server <#web-server>`__ -- `Database <#database>`__ -- `Elasticsearch <#elasticsearch>`__ -- `File Storage <#file-storage>`__ -- `Image Proxy <#image-proxy>`__ -- `SMTP <#smtp>`__ -- `Push Notification Server <#push-notification-server>`__ -- `High Availability <#high-availability>`__ -- `Rate Limiting <#rate-limiting>`__ -- `Logging <#logging>`__ -- `Session Lengths <#session-lengths>`__ -- `Performance Monitoring <#performance-monitoring>`__ -- `Developer <#developer>`__ -- `config. json-only settings <#config-json-only-settings>`__ - ----- - Web server ---------- diff --git a/source/configure/experimental-configuration-settings.rst b/source/configure/experimental-configuration-settings.rst index fb16e347349..5fae422684c 100644 --- a/source/configure/experimental-configuration-settings.rst +++ b/source/configure/experimental-configuration-settings.rst @@ -619,7 +619,7 @@ Shared channels enables the ability to establish secure connections between Matt :environment: ExperimentalSettings.DisableAppBar :description: This setting disables the Apps Bar and moves all Mattermost integration icons from the vertical pane on the far right back to the channel header. - - **true**: All integration icons in the channel header move to the Apps Bar with the exception of the calls beta feature. + - **true**: All integration icons in the channel header move to the Apps Bar with the exception of the calls feature. - **false**: **(Default)** All integration icons in the channel header display in the channel header. Disable Apps Bar diff --git a/source/configure/file-storage-configuration-settings.rst b/source/configure/file-storage-configuration-settings.rst index 266750216ae..2ff15ebb23c 100644 --- a/source/configure/file-storage-configuration-settings.rst +++ b/source/configure/file-storage-configuration-settings.rst @@ -35,7 +35,7 @@ File storage system | the specified local file directory. | | | - **amazons3**: Files and images are stored on Amazon S3 | | | based on the access key, bucket, and region fields | | -| provided. The driver is compatible with MinIO (beta) | | +| provided. The driver is compatible with MinIO (Beta) | | | and Digital Ocean Spaces. | | +---------------------------------------------------------------+--------------------------------------------------------------------------+ @@ -418,6 +418,62 @@ Enable Amazon S3 debugging | Select the **Test Connection** button in the System Console to validate the settings and ensure the user can access the server. | +---------------------------------------------------------------+--------------------------------------------------------------------------+ +.. config:setting:: file-amazons3requesttimeoutmilliseconds + :displayname: Amazon S3 request timeout (File Storage) + :systemconsole: N/A + :configjson: .FileSettings.AmazonS3RequestTimeoutMilliseconds + :environment: MM_FILESETTINGS_AMAZONS3REQUESTTIMEOUTMILLISECONDS + :description: Amount of time, in milliseconds, before requests to Amazon S3 time out. Default value is 30000 (30 seconds). + +Amazon S3 request timeout +~~~~~~~~~~~~~~~~~~~~~~~~~ + ++---------------------------------------------------------------+-----------------------------------------------------------------------------------------+ +| The amount of time, in milliseconds, before requests to | - System Config path: N/A | +| Amazon S3 storage time out. | - ``config.json`` setting: ``".FileSettings.AmazonS3RequestTimeoutMilliseconds: 30000`` | +| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3REQUESTTIMEOUTMILLISECONDS`` | +| Default is 30000 (30 seconds). | | ++---------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + +.. config:setting:: file-amazons3uploadpartsizebytes + :displayname: Amazon S3 upload part size (File Storage) + :systemconsole: N/A + :configjson: .FileSettings.AmazonS3UploadPartSizeBytes + :environment: MM_FILESETTINGS_AMAZONS3UPLOADPARTSIZEBYTES + :description: The size, in bytes, of each part in a multi-part upload to Amazon S3. Default value is 5242880 (5MB). + +Amazon S3 upload part size +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ++---------------------------------------------------------------+---------------------------------------------------------------------------------------+ +| The size, in bytes, of each part in a multi-part | - System Config path: N/A | +| upload to Amazon S3. | - ``config.json`` setting: ``".FileSettings.AmazonS3UploadPartSizeBytes: 5242880`` | +| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3UPLOADPARTSIZEBYTES`` | +| Numeric value. Default is 5242880 (5MB). | | ++---------------------------------------------------------------+---------------------------------------------------------------------------------------+ +| **Note**: A smaller part size can result in more requests and an increase in latency, while a larger part size can result in more memory | +| being allocated. | ++---------------------------------------------------------------+---------------------------------------------------------------------------------------+ + +.. config:setting:: file-exportamazons3uploadpartsizebytes + :displayname: Export Amazon S3 upload part size (File Storage) + :systemconsole: N/A + :configjson: .FileSettings.ExportAmazonS3UploadPartSizeBytes + :environment: MM_FILESETTINGS_EXPORTAMAZONS3UPLOADPARTSIZEBYTES + :description: The size, in bytes, of each part in a multi-part exported to Amazon S3. Default value is 104857600 (100MB). + +Amazon S3 exported upload part size +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ++---------------------------------------------------------------+--------------------------------------------------------------------------------------------+ +| The size, in bytes, of each part in a multi-part | - System Config path: N/A | +| exported to Amazon S3. | - ``config.json`` setting: ``".FileSettings.ExportAmazonS3UploadPartSizeBytes: 104857600`` | +| | - Environment variable: ``MM_FILESETTINGS_EXPORTAMAZONS3UPLOADPARTSIZEBYTES`` | +| Numeric value. Default is 104857600 (100MB). | | ++---------------------------------------------------------------+--------------------------------------------------------------------------------------------+ +| **Note**: A smaller part size can result in more requests and an increase in latency, while a larger part size can result in more memory being allocated. | ++---------------------------------------------------------------+--------------------------------------------------------------------------------------------+ + .. config:setting:: file-initialfont :displayname: Initial font (File Storage) :systemconsole: N/A @@ -456,3 +512,24 @@ Amazon S3 request timeout | | - Environment variable: ``MM_FILESETTINGS_AMAZONS3REQUESTTIMEOUTMILLISECONDS`` | | Default is 30000 (30 seconds). | | +---------------------------------------------------------------+-----------------------------------------------------------------------------------------+ + +.. config:setting:: file-maxpayloadsize + :displayname: Maximum payload size (File Storage) + :systemconsole: N/A + :configjson: .FileSettings.MaximumPayloadSizeBytes + :environment: MM_FILESETTINGS_MAXIMUMPAYLOADSIZEBYTES + :description: The maximum payload size in bytes for all APIs except APIs that receive a file as an input. For example, the upload attachment API or the API to upload a custom emoji. Default is 300000. + +Maximum payload size +~~~~~~~~~~~~~~~~~~~~ + ++-----------------------------------------------------------+----------------------------------------------------------------------------------+ +| The maximum payload size in bytes for all APIs except | - System Config path: N/A | +| APIs that receive a file as an input. | - ``config.json`` setting: ``".FileSettings.MaximumPayloadSizeBytes: 300000",`` | +| | - Environment variable: ``MM_FILESETTINGS_MAXIMUMPAYLOADSIZEBYTES`` | +| For example, the upload attachment API or the API to | | +| upload a custom emoji. | | +| | | +| Numerical value. Default is **300000** (300 kB). | | ++-----------------------------------------------------------+----------------------------------------------------------------------------------+ + diff --git a/source/configure/integrations-configuration-settings.rst b/source/configure/integrations-configuration-settings.rst index e1c0f67cc9c..25619f56f60 100644 --- a/source/configure/integrations-configuration-settings.rst +++ b/source/configure/integrations-configuration-settings.rst @@ -33,7 +33,7 @@ Access the following configuration settings in the System Console by going to ** Enable incoming webhooks ~~~~~~~~~~~~~~~~~~~~~~~~ -Developers building integrations can create webhook URLs for public channels and private channels. Please see our `documentation page `_ to learn about creating webhooks, viewing samples, and letting community know about integrations you've built. +Developers building integrations can create webhook URLs for public channels and private channels. See the `incoming webhooks `_ developer documentation to learn about creating webhooks, viewing samples, and letting community know about integrations you've built. **True**: Incoming webhooks are allowed. To manage incoming webhooks, select **Integrations** from the Mattermost Product menu. The webhook URLs created can be used by external applications to create posts in any public or private channels that you have access to. @@ -58,7 +58,7 @@ Developers building integrations can create webhook URLs for public channels and Enable outgoing webhooks ~~~~~~~~~~~~~~~~~~~~~~~~ -Developers building integrations can create webhook tokens for public channels. Trigger words are used to fire new message events to external integrations. For security reasons, outgoing webhooks are only available in public channels. Please see our `documentation page `_ to learn about creating webhooks and viewing samples. +Developers building integrations can create webhook tokens for public channels. Trigger words are used to fire new message events to external integrations. For security reasons, outgoing webhooks are only available in public channels. See the `outgoing webhooks `_ developer documentation to learn about creating webhooks and viewing samples. **True**: Outgoing webhooks will be allowed. To manage outgoing webhooks, select **Integrations** from the Mattermost Product menu. @@ -261,13 +261,13 @@ Access the following configuration settings in the System Console by going to ** :configjson: .ServiceSettings.EnableGifPicker :environment: MM_SERVICESETTINGS_ENABLEGIFPICKER - - **true**: **(Default)** Allow users to select GIFs from the emoji picker via a Gfycat integration. + - **true**: **(Default)** Allow users to select GIFs from the emoji picker via a GIPHY integration. - **false**: GIFs cannot be selected in the emoji picker. Enable GIF picker ~~~~~~~~~~~~~~~~~ -**True**: Allow users to select GIFs from the emoji picker via a Gfycat integration. +**True**: Allow users to select GIFs from the emoji picker via a GIPHY integration. **False**: GIFs cannot be selected in the emoji picker. @@ -276,39 +276,7 @@ Enable GIF picker +------------------------------------------------------------------------------------------------------------+ .. important:: - :ref:`Link previews ` must be enabled in order to display GIF link previews. Mattermost deployments restricted to access behind a firewall must open port 443 to both ``https://api.gfycat.com/v1`` and ``https://gfycat.com/`` (for all request types) for this feature to work. - -.. config:setting:: integrate-gfycatapikey - :displayname: Gfycat API key (Integrations) - :systemconsole: Integrations > GIF (Beta) - :configjson: .ServiceSettings.GfycatAPIKey - :environment: MM_SERVICESETTINGS_GFYCATAPIKEY - :description: The Gfycat API key. Default value is **2_KtH_W5**. - -Gfycat API key -~~~~~~~~~~~~~~ - -When blank, uses the default API key provided by Gfycat. - -+-----------------------------------------------------------------------------------------------+ -| This feature's ``config.json`` setting is ``"GfycatApiKey": "2_KtH_W5"`` with string input. | -+-----------------------------------------------------------------------------------------------+ - -.. config:setting:: integrate-gfycatapisecret - :displayname: Gfycat API secret (Integrations) - :systemconsole: Integrations > GIF (Beta) - :configjson: .ServiceSettings.GfycatAPISecret - :environment: MM_SERVICESETTINGS_GFYCATAPISECRET - :description: The API secret generated by Gfycat for your API key. Default value is **3wLVZPiswc3DnaiaFoLkDvB4X0IV6CpMkj4tf2inJRsBY6-FnkT08zGmppWFgeof**. - -Gfycat API secret -~~~~~~~~~~~~~~~~~ - -The API secret generated by Gfycat for your API key. When blank, uses the default API secret provided by Gfycat. - -+---------------------------------------------------------------------------------------------------------------------------------------------------------+ -| This feature's ``config.json`` setting is ``"GfycatApiSecret": "3wLVZPiswc3DnaiaFoLkDvB4X0IV6CpMkj4tf2inJRsBY6-FnkT08zGmppWFgeof"`` with string input. | -+---------------------------------------------------------------------------------------------------------------------------------------------------------+ + :ref:`Link previews ` must be enabled in order to display GIF link previews. Mattermost deployments restricted to access behind a firewall must open port 443 (for all request types) for this feature to work. ---- diff --git a/source/configure/plugins-configuration-settings.rst b/source/configure/plugins-configuration-settings.rst index 7500a42ef25..c6a51c4d206 100644 --- a/source/configure/plugins-configuration-settings.rst +++ b/source/configure/plugins-configuration-settings.rst @@ -6,14 +6,6 @@ Plugins configuration settings Self-hosted can manage the following configuration settings in **System Console > Plugins** or by editing the ``config.json`` file as described in the following tables. -- `Plugin Management <#plugin-management>`__ -- `Apps <#apps>`__ -- `Calls <#calls>`__ -- `MS Teams <#ms-teams>`__ -- `Playbooks <#playbooks>`__ -- `User Satisfaction surveys <#user-satisfaction-surveys>`__ -- `Zoom <#zoom>`__ - ---- Plugin management @@ -536,9 +528,9 @@ ICE servers configurations .. |rtcd_service| replace:: :ref:`rtcd service ` **Example** - + .. code-block:: json - + [ { "urls":[ @@ -553,8 +545,7 @@ ICE servers configurations "credentials":"turnpassword" } ] - - + **Example (Using generated TURN credentials)** .. code-block:: json @@ -563,10 +554,9 @@ ICE servers configurations "urls": ["turn:turn.example.com:443"] }] -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **Note**: | -| - To get TURN generated credentials to work you must provide a secret through the *TURN static auth secret* setting below. | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ++---------------------------------------------------------------------------------------------------------------------------------------+ +| **Note**: To get TURN generated credentials to work you must provide a secret through the *TURN static auth secret* setting below. | ++---------------------------------------------------------------------------------------------------------------------------------------+ .. config:setting:: plugins-callsturnauthsecret :displayname: TURN static auth secret (Plugins - Calls) @@ -584,8 +574,7 @@ TURN static auth secret +----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------+ | A static secret used to generate short-lived credentials for TURN servers. | - System Config path: **Plugins > Calls** | | | - ``config.json`` setting: ``PluginSettings.Plugins.com.mattermost.calls.turnstaticauthsecret`` | -| | - Environment variable: N/A | -| This is an optional field. | | +| This is an optional field. | - Environment variable: N/A | +----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------+ .. config:setting:: plugins-callsturncredentialsexpiration @@ -671,9 +660,7 @@ Enable simulcast for screen sharing (Experimental) | | - Environment variable: N/A | +------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+ | **Note**: This functionality has the following requirements: | -| | | - Calls plugin version >= v0.16.0 | -| | | - ``rtcd`` version >= v0.10.0 (if in use) | +------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+ @@ -764,7 +751,7 @@ Call recording quality | | - ``config.json`` setting: ``PluginSettings.Plugins.com.mattermost.calls.recordingquality`` | | The default is **Medium**. This is a required value. | | +-----------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **Note**: The quality setting will affect the performance of the job service and the file size of recordings. Refer to the :ref:`deployment section ` for more information. | +| **Note**: The quality setting will affect the performance of the job service and the file size of recordings. Refer to the :ref:`deployment section ` for more information. | +-----------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. config:setting:: plugins-enablecalltranscriptions @@ -802,13 +789,143 @@ Transcriber model size .. include:: ../_static/badges/ent-selfhosted-only.rst :start-after: :nosearch: -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| The speech-to-text model size to use. Heavier models will produce more accurate results at the expense of processing time and resources usage. Available options are: *Tiny*, *Base* and *Small*. | - System Config path: **Plugins > Calls** | -| | - ``config.json`` setting: ``PluginSettings.Plugins.com.mattermost.calls.transcribermodelsize`` | -| The default is **Base**. This is a required value. | | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **Note**: The model size setting will affect the performance of the job service. Refer to the :ref:`configure call recordings and transcriptions ` documentation for more information. This setting is available starting in plugin version 0.22. | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+ +| The speech-to-text model size to use. Heavier models will produce more accurate results at the expense of processing time and resources usage. Available options are: *Tiny*, *Base* and *Small*. | - System Config path: **Plugins > Calls** | +| | - ``config.json`` setting: ``PluginSettings.Plugins.com.mattermost.calls.transcribermodelsize`` | +| The default is **Base**. This is a required value. | | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+ +| **Note**: The model size setting will affect the performance of the job service. Refer to the :ref:`configure call recordings, transcriptions, and live captions ` documentation for more information. | +| This setting is available starting in plugin version 0.22. | ++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+ + +.. config:setting:: plugins-transcribernumthreads + :displayname: Call transcriber threads (Plugins - Calls) + :systemconsole: Plugins > Calls + :configjson: PluginSettings.Plugins.com.mattermost.calls.transcribernumthreads + :environment: N/A + :description: The number of threads used by the post-call transcriber. This must be in the range [1, numCPUs]. + +Call transcriber threads +~~~~~~~~~~~~~~~~~~~~~~~~ + +.. include:: ../_static/badges/ent-selfhosted-only.rst + :start-after: :nosearch: + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| The number of threads used by the post-call transcriber. This must be in the range [1, numCPUs]. | - System Config path: **Plugins > Calls** | +| | - ``config.json`` setting: ``PluginSettings.Plugins.com.mattermost.calls.transcribernumthread`` | +| The default is 2. This is a required value. | | ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Note**: The call transcriber threads setting will affect the performance of the job service. Refer to the :ref:`configure call recordings, transcriptions, and live captions ` documentation for more information. This setting is available starting in plugin version 0.26.2. | ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. config:setting:: plugins-enablelivecaptions + :displayname: Enable live captions (Experimental) (Plugins - Calls) + :systemconsole: Plugins > Calls + :configjson: PluginSettings.Plugins.com.mattermost.calls.enablelivecaptions + :environment: N/A + :description: Enables live captioning of calls. + +Enable live captions (Experimental) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. include:: ../_static/badges/ent-selfhosted-only.rst + :start-after: :nosearch: + ++---------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ +| - **true**: Enables live captioning of calls. | - System Config path: **Plugins > Calls** | +| - **false**: **(Default)** Live captions functionality is disabled. | - ``config.json`` setting: ``PluginSettings.Plugins.com.mattermost.calls.enablelivecaptions`` | +| | | +| Live captions are generated from the call participants' audio tracks | | +| and the resulting captions can be optionally displayed on the call | | +| clients by clicking the `[cc]` button. | | ++---------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ +| **Note**: Live captions require :ref:`call recordings ` and | +| :ref:`call transcriptions ` to be enabled. | +| This setting is available starting in plugin version 0.26.2. | ++---------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ + +.. config:setting:: plugins-livecaptionsmodelsize + :displayname: Live captions: Model size (Plugins - Calls) + :systemconsole: Plugins > Calls + :configjson: PluginSettings.Plugins.com.mattermost.calls.livecaptionsmodelsize + :environment: N/A + :description: The speech-to-text model size to use for live captions. Heavier models will produce more accurate results at the expense of processing time and resources usage. + +Live captions: Model size +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. include:: ../_static/badges/ent-selfhosted-only.rst + :start-after: :nosearch: + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------+ +| The speech-to-text model size to use for live captions. While heavier models can produce more accurate results, live captioning requires the transcriber to process up to ten seconds of audio within two seconds. Therefore a maximum of size `base` is recommended. Available options are: *Tiny*, *Base* and *Small*. | - System Config path: **Plugins > Calls** | +| | - ``config.json`` setting: ``PluginSettings.Plugins.com.mattermost.calls.livecaptionsmodelsize`` | +| The default is **Tiny**. This is a required value. | | ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------+ +| **Note**: The model size setting will affect the performance of the job service. Refer to the `performance and scalability recommendations `_ documentation for more information. This setting is available starting in plugin version 0.26.2. | ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------+ + +.. config:setting:: plugins-livecaptionsnumtranscribers + :displayname: Live captions: Number of transcribers used per call (Plugins - Calls) + :systemconsole: Plugins > Calls + :configjson: PluginSettings.Plugins.com.mattermost.calls.livecaptionsnumtranscribers + :environment: N/A + :description: The number of separate live captions transcribers for each call. Each transcribes one audio stream at a time. The product of LiveCaptionsNumTranscribers * LiveCaptionsNumThreadsPerTranscriber must be in the range [1, numCPUs]. + +Live captions: Number of transcribers used per call +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. include:: ../_static/badges/ent-selfhosted-only.rst + :start-after: :nosearch: + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+ +| The number of separate live captions transcribers for each call. Each transcribes one audio stream at a time. The product of LiveCaptionsNumTranscribers * LiveCaptionsNumThreadsPerTranscriber must be in the range [1, numCPUs]. | - System Config path: **Plugins > Calls** | +| | - ``config.json`` setting: ``PluginSettings.Plugins.com.mattermost.calls.livecaptionsnumtranscribers`` | +| The default is 1. This is a required value. | | ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------+ +| **Note**: The live captions number of transcribers setting will affect the performance of the job service. Refer to the `performance and scalability recommendations `_ documentation for more information. This setting is available starting in plugin version 0.26.2. | ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------+ + +.. config:setting:: plugins-livecaptionsnumthreadspertranscriber + :displayname: Live captions: Number of threads per transcriber (Plugins - Calls) + :systemconsole: Plugins > Calls + :configjson: PluginSettings.Plugins.com.mattermost.calls.livecaptionsnumthreadspertranscriber + :environment: N/A + :description: The number of threads per live captions transcriber. The product of LiveCaptionsNumTranscribers * LiveCaptionsNumThreadsPerTranscriber must be in the range [1, numCPUs]. + +Live captions: Number of threads per transcriber +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. include:: ../_static/badges/ent-selfhosted-only.rst + :start-after: :nosearch: + ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+ +| The number of threads per live-captions transcriber. The product of ``LiveCaptionsNumTranscribers`` * ``LiveCaptionsNumThreadsPerTranscriber`` must be in the range [1, numCPUs]. | - System Config path: **Plugins > Calls** | +| | - ``config.json`` setting: ``PluginSettings.Plugins.com.mattermost.calls.livecaptionsnumthreadspertranscriber`` | +| The default is 2. This is a required value. | | ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+ +| **Note**: The live captions number of threads per transcriber setting will affect the performance of the job service. Refer to the `performance and scalability recommendations `_ documentation for more information. This setting is available starting in plugin version 0.26.2. | ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+ + +.. config:setting:: plugins-livecaptionslanguage + :displayname: Live captions language (Plugins - Calls) + :systemconsole: Plugins > Calls + :configjson: PluginSettings.Plugins.com.mattermost.calls.livecaptionslanguage + :environment: N/A + :description: The language passed to the live captions transcriber. Should be a 2-letter ISO 639 Set 1 language code, e.g. 'en'. + +Live captions language +~~~~~~~~~~~~~~~~~~~~~~ + +.. include:: ../_static/badges/ent-selfhosted-only.rst + :start-after: :nosearch: + ++---------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+ +| The language passed to the live captions transcriber. Should be a 2-letter ISO 639 Set 1 language code, e.g. 'en'. | - System Config path: **Plugins > Calls** | +| | - ``config.json`` setting: ``PluginSettings.Plugins.com.mattermost.calls.livecaptionslanguage`` | +| If blank, the lange will be set to 'en' (English) as default. | | ++---------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+ .. config:setting:: plugins-callsenableipv6 :displayname: (Experimental) Enable IPv6 (Plugins - Calls) @@ -834,12 +951,11 @@ Transcriber model size | Changing this setting requires a plugin restart to take effect. | | +----------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+ | **Note**: | +| | | - This setting is only applicable when not running calls through the standalone ``rtcd`` service. | | - This setting is available starting in plugin version 0.17. | +----------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+ -.. |note| replace:: . - Enable call ringing (Beta) ~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/source/deploy/desktop-app-changelog.rst b/source/deploy/desktop-app-changelog.rst index 08455fc25ab..266e69ad63d 100644 --- a/source/deploy/desktop-app-changelog.rst +++ b/source/deploy/desktop-app-changelog.rst @@ -8,12 +8,12 @@ Release v5.7 **Release Date: March 15, 2024** -**Download Binaries:** `Mattermost Desktop on GitHub `_ +**Download Binaries:** `Mattermost Desktop on GitHub `__ Compatibility ~~~~~~~~~~~~~~~ -- Desktop App is supported on any currently `supported Mattermost server version `__. +- Desktop App is supported on any currently `supported Mattermost server version `_. - Updated Chromium minimum supported version to 120+. Improvements @@ -67,7 +67,7 @@ Release v5.6 **Release Date: December 15, 2023** -**Download Binaries:** `Mattermost Desktop on GitHub `_ +**Download Binaries:** `Mattermost Desktop on GitHub `__ Compatibility ~~~~~~~~~~~~~~~ @@ -131,7 +131,7 @@ Release v5.5 - **v5.5.1, released 2023-10-03** - - Mattermost v5.5.1 contains low severity level security fixes. Upgrading is highly recommended. Details will be posted on our `security updates page `__ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. + - Mattermost v5.5.1 contains low severity level security fixes. Upgrading is highly recommended. Details will be posted on our `security updates page `_ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. - Upgraded to Electron v26.2.1, which mitigates ``CVE-2023-4863`` of the third-party library libwebp. - Fixed an issue where logging was stuck to ``info`` level. - Fixed an issue where the downloads dropdown would not open on auto-update notification. @@ -144,7 +144,7 @@ Release v5.5 .. note:: - Mattermost v5.5.0 contains a medium severity level security fix. Upgrading is highly recommended. Details will be posted on our `security updates page `__ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. + Mattermost v5.5.0 contains a medium severity level security fix. Upgrading is highly recommended. Details will be posted on our `security updates page `_ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. Compatibility @@ -189,7 +189,7 @@ Known Issues Contributors ~~~~~~~~~~~~~~ -- `apollo13 `__, `cpoile `__, `devinbinnie `__, `Partizann `__. +- `apollo13 `_, `cpoile `_, `devinbinnie `_, `Partizann `_. ---- @@ -266,7 +266,7 @@ Release v5.3 - Original v5.3.0 release .. note:: - Mattermost v5.3.0 contains a medium severity level security fix. Upgrading is highly recommended. Details will be posted on our `security updates page `__ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. + Mattermost v5.3.0 contains a medium severity level security fix. Upgrading is highly recommended. Details will be posted on our `security updates page `_ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. Compatibility ~~~~~~~~~~~~~~~ @@ -458,7 +458,7 @@ Release v5.1 .. note:: - Mattermost v5.1.0 contains a low severity level security fix. Upgrading is highly recommended. Details will be posted on our `security updates page `__ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. + Mattermost v5.1.0 contains a low severity level security fix. Upgrading is highly recommended. Details will be posted on our `security updates page `_ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. Compatibility ~~~~~~~~~~~~~~~ @@ -584,7 +584,7 @@ Release v5.0 .. note:: - Mattermost v5.0.0 contains a low level security fix. Upgrading is highly recommended. Details will be posted on our `security updates page `__ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. + Mattermost v5.0.0 contains a low level security fix. Upgrading is highly recommended. Details will be posted on our `security updates page `_ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. Compatibility ~~~~~~~~~~~~~~~ @@ -674,7 +674,7 @@ Release v4.7 - **v4.7.1, released 2021-08-03** - - Mattermost v4.7.1 contains a medium level security fix. Upgrading is highly recommended. Details will be posted on our `security updates page `__ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. + - Mattermost v4.7.1 contains a medium level security fix. Upgrading is highly recommended. Details will be posted on our `security updates page `_ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. - Added support to allow users to specify a different download location for Hunspell dictionaries. - Fixed an issue where the notification badge did not get cleared when reading a channel with unread messages until navigating away from the channel. - Fixed an issue where the top bar menu, and the minimize, maximize and close icons did not work on 4.7.0 on Windows 10 if GPU acceleration was disabled. @@ -687,7 +687,7 @@ Release v4.7 .. note:: - Mattermost v4.7.0 contains low to medium level security fixes. Upgrading is highly recommended. Details will be posted on our `security updates page `__ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. + Mattermost v4.7.0 contains low to medium level security fixes. Upgrading is highly recommended. Details will be posted on our `security updates page `_ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. Compatibility ~~~~~~~~~~~~~~~ @@ -865,7 +865,7 @@ Release v4.5 - **v4.5.1, released 2020-07-13** - - Mattermost v4.5.1 contains a high level security fix. `Upgrading `__ is highly recommended. Details will be posted on our `security updates page `__ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. + - Mattermost v4.5.1 contains a high level security fix. :doc:`Upgrading ` is highly recommended. Details will be posted on our `security updates page `_ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. - **v4.5.0, released 2020-06-16** @@ -965,7 +965,7 @@ Release v4.4 .. note:: - Mattermost v4.4.0 contains low to medium level security fixes. `Upgrading `__ is highly recommended. Details will be posted on our `security updates page `__ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. + Mattermost v4.4.0 contains low to medium level security fixes. :doc:`Upgrading ` is highly recommended. Details will be posted on our `security updates page `_ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. **Breaking Changes** @@ -1042,7 +1042,7 @@ Release v4.3 - **v4.3.2, released 2019-11-29** - - Mattermost v4.3.0 contains a low level security fix. `Upgrading `__ is highly recommended. Details will be posted on our `security updates page `__ 30 days after release as per the `Mattermost Responsible Disclosure Policy `_. + - Mattermost v4.3.0 contains a low level security fix. :doc:`Upgrading ` is highly recommended. Details will be posted on our `security updates page `_ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. - Fixed an issue where the app started into white screen after a system reboot on Windows. `MM-19649 `_ - Fixed an issue where `CMD+Z` didn't undo on the Mac desktop app. `MM-19198 `_ - Fixed an issue where users were unable to zoom in/out except on the first server tab. `MM-19032 `_ @@ -1059,7 +1059,7 @@ Release v4.3 .. note:: - Mattermost v4.3.0 contains medium level security fixes. `Upgrading `__ is highly recommended. Details will be posted on our `security updates page `__ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. + Mattermost v4.3.0 contains medium level security fixes. :doc:`Upgrading ` is highly recommended. Details will be posted on our `security updates page `_ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. **Breaking Change** @@ -1177,7 +1177,7 @@ Bug Fixes All Platforms ^^^^^^^^^^^^^ -- Mattermost v4.2.2 contains high level security fixes. `Upgrading `_ is recommended. Details will be posted on our `security updates page `_ 30 days after release as per the `Mattermost Responsible Disclosure Policy `_. +- Mattermost v4.2.2 contains high level security fixes. `Upgrading `_ is recommended. Details will be posted on our `security updates page `_ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. ---- @@ -1209,7 +1209,7 @@ Release v4.2.0 .. note:: - Mattermost v4.2.0 contains a high level security fix. `Upgrading `__ is highly recommended. Details will be posted on our `security updates page `__ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. + Mattermost v4.2.0 contains a high level security fix. :doc:`Upgrading ` is highly recommended. Details will be posted on our `security updates page `_ 30 days after release as per the `Mattermost Responsible Disclosure Policy `__. Improvements ~~~~~~~~~~~~~~~ diff --git a/source/deploy/mattermost-changelog.md b/source/deploy/mattermost-changelog.md index e4d764faa4b..915c740a3d6 100644 --- a/source/deploy/mattermost-changelog.md +++ b/source/deploy/mattermost-changelog.md @@ -11,6 +11,110 @@ From Mattermost v9.2, this changelog summarizes updates for the latest cloud and - **Cloud Releases Prior to v9.2**: See the [Mattermost Legacy Cloud Changelog](https://docs.mattermost.com/deploy/legacy-cloud-changelog.html) for details. ``` +## Release v9.8 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) + +**Release day: 2024-05-16** + +### Compatibility + - Updated minimum required Edge and Chrome versions to 122+. + +```{Important} +If you upgrade from a release earlier than v9.7, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). +``` + +### Improvements + +#### User Interface (UI) + - Pre-packaged Playbooks version [v1.39.3](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.3). + - Pre-packaged GitLab plugin version [v1.8.1](https://github.com/mattermost/mattermost-plugin-gitlab/releases/tag/v1.8.1). + - Pre-packaged Calls version [v0.26.2](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.26.2). + - Combined Desktop and Mobile notifications in the user settings modal. + - Added a **Don't Clear** option for Do Not Disturb. + - Enhanced the user interface for channel introductions. + - Added an ephemeral message for non-team member mentions in channels. + - Added emoji tooltips on hover in post message. + - Made the appearance of several tooltips more consistent. + - Updated theme colors for onboarding tour points. + - Updated the right-hand side Thread view to use relative timestamps to be more consistent with the global Threads view. + - Added a total reply count to the right-hand side thread view. + - Added Channel Bookmarks (disabled by default). + +#### Administration + - Added safety limit error message in compiled Team Edition and Enterprise Edition deployments when enterprise scale and access control automation features are unavailable, and message count exceeds 5 million posts. ERROR_SAFE_LIMITS_EXCEEDED. + - Downloading a support packet is now extensible with plugins. If a plugin can add content to the support packet, it will be displayed in the commercial support modal. Administrators will have the option to include/exclude that from the support package. + - Upgraded Nodejs to v20.11. + - Added Channel Bookmarks permissions to the channel user role and to the channel moderation system. + - Added progress logs for attachments in bulk exports. + - Added a **System Console** option to rebuild Elasticsearch channels indexes. + - Obfuscated ``ReplicaLagSettings`` in the Support Packet. + - Improved license loading errors. + - Updated the keycloak docker configs and added a ``make`` command. + - Removed unused ``IsOAuth`` field from ``AppError``. + - ``bool`` is now used for ``license_is_trial`` in the Support Packet. + - Bulk export: added functionality to export roles and permissions schemes. + - A new flag (``extract-content``) was added to the mmctl import process that allows the server to skip content extraction during the import phase. + +### API Changes + - Added a create channel bookmark endpoint at ``/api/v4/channels/{channel_id}/bookmarks``. + - Added additional query params to channel endpoints to include channel bookmarks. + - Added update channel bookmark endpoint at ``/api/v4/channels/{channel_id}/bookmarks/{bookmark_id}``. + - Added list channel bookmarks endpoint at ``/api/v4/channels/{channel_id}/bookmarks``. + - Added delete channel bookmark endpoint at ``/api/v4/channels/{channel_id}/bookmarks/{bookmark_id}``. + - Added update channel bookmark sort order endpoint at ``/api/v4/channels/{channel_id}/bookmarks/{bookmark_id}/sort_order``. + - Exposed a local-mode only API for reattaching plugins, primarily to facilitate mock-free unit testing. + - Exposed ``UpdateUserRoles`` in ``pluginapi``. + - Exposed ``pluginapi.ProfileImageBytes`` to simplify bot setup from a plugin. + - For ``POST /channels``, added a validation for ``display_name`` to not pass validation if the display name is empty. + +### Bug Fixes + - Fixed an issue with context cancellation for integration requests. + - Fixed an issue preventing the retrieval of SAML metadata. + - Fixed an issue causing an empty channel switcher after converting a group message to a private channel. + - Fixed an issue where System Admins were not allowed to LDAP sync SAML users when ``SamlSettings.EnableSyncWithLdap`` was set to **true**. + - Fixed an issue with markdown in the AD job status table. + - Fixed an issue with a control character in the group list modal. + - Fixed an issue where the auto-complete channels API returned archived channels in response. + - Fixed a crash issue in the **System Console**. + - Fixed an issue where links included in notifications were truncated and not clickable. + - Fixed using local requests instead of HTTP requests in the flow library. + - Fixed an issue where ``support_packet.yaml`` wasn’t generated even if an error occurred. + - Fixed an issue where outgoing webhooks did not trigger when using multiple callback URLs. + - Fixed an issue where it was not possible to clear plugin settings with a default value in the **System Console**. + - Fixed an issue where ``MaxUsersForStatistics`` wasn’t ignored when generating a Support Packet. + - Fixed an issue where the ``EnsureBot`` function did not recreate the bot if it had been manually deleted. + - Fixed an issue where users couldn't look up a user by their ID in the **System Console** anymore. + - Fixed an accessibility issue where the focus didn’t go back to the originating button when a modal was closed. + - Fixed an issue where end users were not allowed to fetch the group members list of groups that allow ``@-mentions``. + +### config.json +New setting option were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. + +#### Changes to all plans: + - Under ``FileSettings`` in ``config.json``: + - Added ``AmazonS3UploadPartSizeBytes`` and ``ExportAmazonS3UploadPartSizeBytes`` to control the part size used to upload files to an S3 store. + - Under ``ServiceSettings`` in ``config.json``: + - Increased the default payload size limit (``MaximumPayloadSizeBytes``) from 100 kB to 300 kB. + - Under ``ClusterSettings`` in ``config.json``: + - Removed unused settings ``StreamingPort``, ``MaxIdleConns``, ``MaxIdleConnsPerHost`` and ``IdleConnTimeoutMilliseconds``. + + #### Changes to Professional and Enterprise plans: + - Under ``ExperimentalSettings`` in ``config.json``: + - Removed the ``UseNewSAMLLibrary`` experimental setting. + +### Go Version + - v9.8 is built with Go ``v1.21.8``. + +### Known Issues + - Status may sometimes get stuck as **Away** or **Offline** with IP Hash turned off. + - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. + - Slack import through the CLI fails if email notifications are enabled. + - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. + - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. + - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. + +### Contributors + - [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [Amir-Helali](https://github.com/Amir-Helali), [amyblais](https://github.com/amyblais), [andrleite](https://github.com/andrleite), [angeloskyratzakos](https://github.com/angeloskyratzakos), [annaos](https://github.com/annaos), [apshada](https://github.com/apshada), [Aryakoste](https://github.com/Aryakoste), [asaadmahmood](https://github.com/asaadmahmood), [aszakacs](https://github.com/aszakacs), [BarbUk](https://github.com/BarbUk), [BenCookie95](https://github.com/BenCookie95), [Blaieet](https://github.com/Blaieet), [calebroseland](https://github.com/calebroseland), [coltoneshaw](https://github.com/coltoneshaw), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://translate.mattermost.com/user/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [cyrusjc](https://github.com/cyrusjc), [daran9](https://github.com/daran9), [devharipragaz007](https://github.com/devharipragaz007), [devinbinnie](https://github.com/devinbinnie), [dsspence](https://github.com/dsspence), [Eleferen](https://translate.mattermost.com/user/Eleferen), [EltonGohJH](https://github.com/EltonGohJH), [emdecr](https://github.com/emdecr), [enahum](https://github.com/enahum), [ezekielchow](https://github.com/ezekielchow), [fmartingr](https://github.com/fmartingr), [gabrieljackson](https://github.com/gabrieljackson), [gitairman](https://github.com/gitairman), [grundleborg](https://github.com/grundleborg), [hanzei](https://github.com/hanzei), [harshilsharma63](https://github.com/harshilsharma63), [hmhealey](https://github.com/hmhealey), [hossain-sazzad](https://github.com/hossain-sazzad), [ifoukarakis](https://github.com/ifoukarakis), [inconnu1](https://github.com/inconnu1), [isacikgoz](https://github.com/isacikgoz), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [johnsonbrothers](https://github.com/johnsonbrothers), [jones](https://translate.mattermost.com/user/jones), [josephjose](https://github.com/josephjose), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [jupenur](https://github.com/jupenur), [jwilander](https://github.com/jwilander), [kaakaa](https://github.com/kaakaa), [kaoski](https://github.com/kaoski), [Karimaljandali](https://github.com/Karimaljandali), [kayazeren](https://github.com/kayazeren), [KrisSiegel](https://github.com/KrisSiegel), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [larkox](https://github.com/larkox), [lbr88](https://github.com/lbr88), [lieut-data](https://github.com/lieut-data), [lindalumitchell](https://github.com/lindalumitchell), [lynn915](https://github.com/lynn915), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [mahdiirar](https://github.com/mahdiirar), [majo](https://translate.mattermost.com/user/majo), [manojmalik20](https://github.com/manojmalik20), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [MeHow25](https://github.com/MeHow25), [mentz](https://translate.mattermost.com/user/mentz), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [milotype](https://github.com/milotype), [movion](https://github.com/movion), [mvitale1989](https://github.com/mvitale1989), [nickmisasi](https://github.com/nickmisasi), [Nityanand13](https://github.com/Nityanand13), [nmnj](https://translate.mattermost.com/user/nmnj), [Obbi89](https://github.com/Obbi89), [pacop](https://github.com/pacop), [phoinixgrr](https://github.com/phoinixgrr), [Pkarle](https://github.com/Pkarle), [poppfredslund](https://translate.mattermost.com/user/poppfredslund), [potatogim](https://github.com/potatogim), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [rahimrahman](https://github.com/rahimrahman), [rOt779kVceSgL](https://translate.mattermost.com/user/rOt779kVceSgL), [RS-labhub](https://github.com/RS-labhub), [Rutam21](https://github.com/Rutam21), [s-krishnaraju](https://github.com/s-krishnaraju), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [Sharuru](https://github.com/Sharuru), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [Syed-Ali-Abbas-Zaidi](https://github.com/Syed-Ali-Abbas-Zaidi), [tanmaythole](https://github.com/tanmaythole), [ThrRip](https://github.com/ThrRip), [tnir](https://github.com/tnir), [toninis](https://github.com/toninis), [topolovac](https://github.com/topolovac), [varghesejose2020](https://github.com/varghesejose2020), [wetneb](https://github.com/wetneb), [wiersgallak](https://github.com/wiersgallak), [wiggin77](https://github.com/wiggin77), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1), [zsrv](https://github.com/zsrv) + ## Release v9.7 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) - **9.7.4, released 2024-05-15** diff --git a/source/deploy/postgres-migration.rst b/source/deploy/postgres-migration.rst index 71791c76a54..52fc1404822 100644 --- a/source/deploy/postgres-migration.rst +++ b/source/deploy/postgres-migration.rst @@ -15,11 +15,11 @@ To streamline the migration process and alleviate any potential challenges, we h Required tools -------------- -- Install ``pgLoader``. See the official `installation guide `__. +- Install ``pgloader``. See the official `installation guide `__. .. note:: - - If you are using MySQL v8: Due to a `known bug `__ in pgLoader compiled binaries, you need to compile pgLoader from the source. Please follow the steps `here `__ to build from the source. + - If you are using MySQL v8: Due to a `known bug `__ in pgloader-compiled binaries, you need to compile pgloader from the source. Please follow the steps `here `__ to build from the source. - We have received reports that the pgloader Docker image can be limited in terms of memory resources. Please use pgloader directly instead of a Docker container. - Install morph CLI by running the following command: @@ -35,7 +35,7 @@ System requirements and configurations Before starting the migration process, it's essential to ensure that your system meets the necessary requirements for a smooth and efficient migration. We strongly recommend the following system specifications and adjustments: -- Ensure you have enough system memory resources. 16GB of RAM is recommended as a default. In scenarios where system memory is insufficient, users can fine-tune pgLoader settings, such as the number of workers, prefetch rows, and rows per range. These adjustments can help optimize resource utilization based on available system resources. +- Ensure you have enough system memory resources. 16GB of RAM is recommended as a default. In scenarios where system memory is insufficient, users can fine-tune pgloader settings, such as the number of workers, prefetch rows, and rows per range. These adjustments can help optimize resource utilization based on available system resources. - A multi-core processor with sufficient processing power is recommended for the migration process, especially when dealing with large datasets. - Ensure that there is enough disk space available for storing both the MySQL and PostgreSQL databases, as well as any temporary files generated during the migration process. The amount of required disk space depends on the size of the databases being migrated. - To improve performance further, users may choose to manually drop indexes on the target PostgreSQL database before initiating the migration process. This approach can potentially accelerate the migration by reducing overhead with index builds during data insertion. @@ -190,7 +190,7 @@ An error has been identified in the 96th migration that was previously released. Migrate the data ---------------- -Once we set the schema to a desired state, we can start migrating the **data** by running ``pgLoader`` \*\* +Once we set the schema to a desired state, we can start migrating the **data** by running ``pgloader`` \*\* .. note:: @@ -244,11 +244,11 @@ Once we set the schema to a desired state, we can start migrating the **data** b $$ SELECT pg_catalog.set_config('search_path', '"$user", public', false); $$, $$ ALTER USER {{ .pg_user }} SET SEARCH_PATH TO 'public'; $$; -Once you save this configuration file, e.g. ``migration.load``, you can run the ``pgLoader`` with the following command: +Once you save this configuration file, e.g. ``migration.load``, you can run the ``pgloader`` with the following command: .. code:: bash - pgLoader migration.load > migration.log + pgloader migration.load > migration.log Feel free to contribute to and/or report your findings through your migration to us. @@ -291,7 +291,7 @@ Playbooks The ``pgloader`` configuration provided for Playbooks is based on ``v1.38.1`` and the plugin should be at least ``v1.36.0`` to perform the migration. -Once we are ready to migrate, we can start migrating the **schema** and the **data** by running ``pgLoader`` \*\* +Once we are ready to migrate, we can start migrating the **schema** and the **data** by running ``pgloader`` \*\* \*\* Use the following configuration for the baseline of the data migration: @@ -391,14 +391,14 @@ Once we are ready to migrate, we can start migrating the **schema** and the **da .. code:: bash - pgLoader playbooks.load > playbooks_migration.log + pgloader playbooks.load > playbooks_migration.log Focalboard ~~~~~~~~~~ As of ``v9.0`` Boards will transition to being fully community supported as the Focalboard plugin. Hence this guide covers only the version ``v7.10.x`` of the schema. :ref:`Official announcement `. -Once we are ready to migrate, we can start migrating the **schema** and the **data** by running ``pgLoader`` \*\* +Once we are ready to migrate, we can start migrating the **schema** and the **data** by running ``pgloader`` \*\* \*\* Use the following configuration for the baseline of the data migration: @@ -448,7 +448,7 @@ Once we are ready to migrate, we can start migrating the **schema** and the **da .. code:: bash - pgLoader focalboard.load > focalboard_migration.log + pgloader focalboard.load > focalboard_migration.log Compare the plugin data ~~~~~~~~~~~~~~~~~~~~~~~ @@ -472,7 +472,7 @@ Troubleshooting Unsupported authentication for MySQL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If you are facing an error due to authentication with MySQL v8, it may be related to a `known issue `__ with the pgLoader. The fix is to set the default authentication method to ``mysql_native_password`` in your MySQL configuration. To do so, add the ``default-authentication-plugin=mysql_native_password`` value to your ``mysql.cnf`` file. Also, do not forget to update your user to use this authentication method. +If you are facing an error due to authentication with MySQL v8, it may be related to a `known issue `__ with pgloader. The fix is to set the default authentication method to ``mysql_native_password`` in your MySQL configuration. To do so, add the ``default-authentication-plugin=mysql_native_password`` value to your ``mysql.cnf`` file. Also, do not forget to update your user to use this authentication method. .. code:: sql diff --git a/source/getting-started/feature-labels.rst b/source/getting-started/feature-labels.rst new file mode 100644 index 00000000000..25d3f948a60 --- /dev/null +++ b/source/getting-started/feature-labels.rst @@ -0,0 +1,28 @@ +Mattermost feature labels +========================== + +Mattermost’s feature labels serve as indicators of the status, maturity, and support level of each feature, helping users and system administrators navigate product feature adoption with clarity and confidence. Feature labels communicate the stage of development, level of readiness, and potential risks associated with a feature for customers seeking to adopt new value. + +Experimental +------------- + +Feature is an early Proof of Concept (POC) with an unstable codebase, minimal QA covering a small or specific set of use cases, and potential UI issues. Security reviews are incomplete, making it unsuitable for production. Distribution of the solution is limited, and our Cloud environments are typically not eligible to use experimental features. Data loss can occur as data schemas and configurations may change, and minimal documentation is available. Caution is advised as the solution may be discarded if its value is not proven. + +Beta +----- + +Feature is in active development towards General Availability. Not fully complete, but reviewed by our security team, adoption is suitable for a small set of customers behind a feature flag. Identified bugs are fixed on a best effort basis, and no major breaking changes are anticipated, full testing is in progress, and detailed documentation may not be available. Beta is a transitional stage, meaning the solution is maturing but requires careful consideration in a full production deployment as scale and client availability may vary. `Premier Support `__ is recommended when using beta features in production environments. + +General Availability +--------------------- + +Feature has undergone thorough validation and testing and has production-level quality. It is feature-complete, meets quality standards, has successfully passed security reviews, and has detailed product documentation available. General Availability features are suitable for widespread production deployment and adoption, and are eligible for commercial support, as they offer stability and reliability, with no expected changes that could disrupt functionality or scalability. + +Deprecated +----------- + +Feature is officially marked for removal from the product. It is no longer supported or actively maintained by the development team. If the feature is still in use in your deployed version, we recommend users discontinue its use and migrate to alternative functionalities. + + + + diff --git a/source/guides/desktop-mobile-app-deployment.rst b/source/guides/desktop-mobile-app-deployment.rst index aad9b6b40df..1bffd1f1fa1 100644 --- a/source/guides/desktop-mobile-app-deployment.rst +++ b/source/guides/desktop-mobile-app-deployment.rst @@ -7,7 +7,7 @@ Desktop and mobile app deployment :titlesonly: Desktop app deployment guide - Desktop MSI installer and group policy installation guides (beta) + Desktop MSI installer and group policy installation guides (Beta) Desktop App custom dictionaries Desktop managed resources Using Mattermost’s pre-built mobile apps @@ -27,7 +27,7 @@ Desktop app ------------ * :doc:`Desktop app deployment guide ` - Customize and distribute the Mattermost desktop app with pre-configured settings. -* :doc:`Desktop MSI installer and group policy installation guides (beta) ` - Use the Mattermost MSI installer and Group Policy definitions for Windows deployment. +* :doc:`Desktop MSI installer and group policy installation guides (Beta) ` - Use the Mattermost MSI installer and Group Policy definitions for Windows deployment. * :doc:`Desktop app custom dictionaries ` - Create custom dictionaries for Mattermost spellcheck. * :doc:`Desktop managed resources ` - Configure resource management for services running on the same domain as your Mattermost instance. diff --git a/source/guides/get-started-with-administration.rst b/source/guides/get-started-with-administration.rst index 3922fa23839..f1ed3fae716 100644 --- a/source/guides/get-started-with-administration.rst +++ b/source/guides/get-started-with-administration.rst @@ -6,6 +6,7 @@ Get started with administration :hidden: :titlesonly: + Mattermost feature labels
Optimize your workspace Mattermost configuration settings Self-hosted edition and license @@ -44,6 +45,7 @@ Get started with administration These resources will help you get started with your Mattermost self-hosted or Cloud workspace. +* **Mattermost feature labels** - Learn what :doc:`Mattermost feature labels `, including :ref:`Experimental `, :ref:`Beta `, :ref:`General Availability `, and :ref:`Deprecated ` mean to the status, maturity, and support level of Mattermost product features and functionality in your Mattermost deployment. * **Optimize your workspace** - Review health and growth scores for your Mattermost workspace, and take necessary action using the :doc:`workspace optimization ` page in the System Console. * **Configure your workspace** - Mattermost offers extensive configuration options for both :doc:`self-hosted Mattermost servers and Mattermost Cloud workspaces `, and provides a list of :doc:`deprecated configuration settings ` no longer supported. * **Enable AI Copilot** - Learn how to enable AI Copilot in Mattermost ` diff --git a/source/images/ESR_graphic2.png b/source/images/ESR_graphic2.png new file mode 100644 index 0000000000000000000000000000000000000000..e68ace34df96a5b2dda9d487d10b0574b5958006 GIT binary patch literal 246054 zcmeFaXIPWnwl$1^(jn57E?uN3AV?QfM7m1vBE3s*L8M6+klsX)-a7;cML;@&^b!F9 zDWQcBTHw3mdC&Kr?LOz(kDmSG{h`-|i6ObO)?9OqIp&!2UWTfv$deFWCB(wQB2jpF z?=cn@J|h+u?iiLMj& zHfopiI6Rh_@Ll#s_&Tpb&(n^ElASHKnsHuED?~kf8(E0+hP9uj8~5mQHz)h3f+Q9m z*E=jbnH5LGz5e`s0jxf?6V%=ohfEG!*t=j{`sCc^^VeNOJr=V%C~t4C{tk!<7prVB z?Bfv@=tI*~wNDIX2VwO`0h!k{3QmpmS_)2u^xN@MA3MvL?JvqG1a(}_!+Ga*ac>{n zUhIn+JY-V+69xVSwQRY~^tiab0MU!jY%Ez{X%`MXMBn8^JERnJq|mDz3nUEP*L-_= z(eu6SV8po~!#U*JbH!jE?e@Z07SgDg!7D3pH%Nq+W8!u%>6NN71#TrvFb{4z-zSUiyTwGi*T9A{ z#qH)*q9P9#i0mFxR3#CfNyy(o@F0yKKs z_;|4o5m58uPUYc(emRd1iy-)6NT!ICttFpCi{DG1Ep0L*TBf4mBj#RIcuaIB_xnw* zAW8e)A=22rT#)!G)yL~yiv&lGcYBe$Lh9hBX%Z?;0&x`N?9q5er0rNlhd5$yT2lyL z+~ojOql6FI#64A+zhd2di05NmW*q#0t=B7X=PD6lTPA4t?);9Zv<^QLrOere01tFJ zKuE{I-}WB02cZ)w{>7;s!)tWx^alx888Q!c$hPUV8wBQUwLhTGGnk%11(iMpa?|#_ zk#C%S!+!JScU5AJOXPNrzO!_wj~!pfXf!#~{2^omOAyHg?yP{F*Ny?h3iX2b)!5Fs zdmV=fkT_Hg579Si>e;`zw4ojO^GV~K81$JYmj;K)C{X?x2F!hrKk^O`qB-Hvfv+KX zS>>$avFdyHmHbo3t1*SOg?t^?NA%B=m^_OMI*!aqP^X)jNVx;gauW0uxn3Yc>!3+q zInktg@#WzP3T=wSEWV8Um^t5ZA56I*&CrXLCfy(Zn&=xnUo+^do-E0hkfbqg|4ZStXbQ)R8Lc$9 zFF_!JMH%uW;_RW98~Vh#{yN4|To=rY?`V^Z2Phl!OcETtM8CUCe=)CB$B{t)f=H`m zy;ox!(Jky4@I!!jb+MNJwTIzyMZq4 zLb3!|ugcRMUprpf`e5HKek~?nuKHSITXWLAezrk2J{EiCaSBy(@z>FzIBet!(a+`g zuHBCn&GC6mV8vi1vWB~My&!e}u7XaFc8>zL8n=!@{?nYNS=EYb^&=V|EFNX{tUo8J z#JdyQ&pO1+&+5P`62~70>B;22O34#O!yXl@kgTesSdg8THJjI@uBmxj!%ZtnlbUPj ziD6Nb)=|@o#65W`WhyA&t`=$*-p)7F@GW?tS*2!LsI1BJv`9_-otsXHYI?DK!QkW7{2}$Sr_#k> zMPHeK+?x+rAG6AvhIa8q5?z%{VN+Hdz*5dIuUOF>7)^<`q8*6ndhcXKWI1DLVL7LJ zkC%tHRx?*Kd7QDttpseRY-a(-g|AJ=Pj^>~y9zKUGSsTn4&F*fi;1{OMGDZj(YG;G zc-)(NUBo)S5%mQ*w!D$BKE5$OjLwmtAR6u)(aW01N69cv)Qv@tXXZlH&m+LFhb1u? ztPQM+@>@)v6IjCK!mn>8S(T5y8!&Di{v_~8?Rov+PPIv9OjJyndhX}z*-H8;4qcdsufAu>Tyvr*HwNVZ6~=w$q<4bw)! z_}KV_-Rs-LsW(zdZfn`9>(R^*&pevxbIVUJN^i9fFzDuL=R&EstB+;dPZdoH!ihF* z;1GHj`gZy-`l}3vQMZ}WCA>PnJ7+`hG>V#w+dDUjJaAU}l=S}QfT^MQl$cZc_4Lx{ z4^bra;_kMilUjprgFdT~gLMX$d<%R;2D`}g5)h6b*+y#w}?;MAsNspQ>Jj>0iRE|y0?w)-(gI`FwuzO(x zhw)O%rChx6O9yxjxC6vuSCsHcNenOhgxh^uskE6yv)Hp#$?3{z$ePMcgh&xqkx+yP zhh#6XEbw$}%WL1mXT8dLmreYI*|z|$qWl7N`S+op)j!97RyFPV*dKO>Mln2{9Kv&8 zkY+SnS?|3&z8ia(fLjw7N+3+IO@XH9qY&?oW|a0m{lJE1yZiXbE$%xkp5A+{fiDS) zI9*g-lC^K`uCNs;jB*+z6-(do-mBoYej@sWGzavU{E6EKpM`rb3h&?)Yc z1fRTG?bGYrSoYrSI~p2k8tEPN8fhNU%0-zUK7aarpFsN+@|9L{TXO0xn8kf__@}G= zD*dHH>b(j*cW!*4G$+t=j(m}~>h^l`9{c;j0>&p=s&JZ+u)0+i&$zvmy_&DlKB*sd z_ri0ES|RT$zjjmyTH)o|DAA}mq?(AE?nYPy`3FG-^?U zfwS&P$^dW1j3mG1{NT~sBOQbv|BD;f`Mn^_PIsLvOm>?VyP>$~$9nH|ukkh13_CC6 z-aow7_Wq#Ll%`DYwB)UpS4DqC@%zm_@~zl#Xw;D_yevR*G@+K?*`U_xj#Go<(Eybc zk6VJxTbcxE!z(S7CRDx}YlU@1dBrVi3;GpSBxaG%l~Qdmx zGkvvwb1bu;8wAZQY$ElP2lxUE`m8_eD%fprg+j_UcVVMXEsW|u80NLu@=x+io%k5_ zwxpiOq3Y<3>GQ=coyylia5XEO5rOP1=*{ekD(-@UCC5(-3Fbp9a`N<1o1)e)s`ru( zD$KgMyThZ&GPopeIzD!(+eZevkaRc6$9 z*(rO;{B&TZj$?kkX#g_k%y}|c1i9!g4NG;;bcF8v9|wemTp}wvFF(p|8LdHRC;Dm4 zWKYVY7@e7*9qyt8942pQT|l>Y8Jc@(p|JDc}Wbx2C}ME1Dy zplD!X#UTr}MYcjr8YcQIYEug%<|I+ zE}l}XFKy?j?^1{E&O|SpXTI(dtrscdGKUe$q>0OPM=_MjSqM)xJl1`^LtlR9(8gNj z`k}~u@X9I6R;C`ahU+Eix^rx8w9l>J=EfBurLZ;ARxnpq#<~tX$H&6Ga24w!CeZ+X zq%P3?|IZ&>;KIWB@j5mZR)`fA?*Dm@3h;>e^9K0AeC9tMvEO0;=R5Ej-{Jh{b6m`C zv99?_tOE}Ojt_O5v9PGwF+Ud+9<%LWVaZ@A+`IeK8-T zo@zpH`>VBE`}n}K*Eii1#`$WV>J}TUHz0FDY&R6py6AP}fk9^Wx;w1oeEwvt$gM8w z3@R3^QvL2Sv&>7Z3)r~$p#RmAX*PipWkgc&zu{8ANOqoFxJU+mv_SN~9v5a>?+ma7 zr-frYe`AXNJ)Gq?>4@c*YP}%Pw5?2^nJU(w#$=3(O{2+U;zfVHxL&3?WVhI4Ld4jV zjR=^-vBHNLdT&qjD&qQ|uXp!BI^8z)7X6&Mp}h>9>&f3Xe3Zm7pSy^8@&s zpWbiDyi;#R!;WWqz7!k2N+Tcn)9;hSuu(Z^oRCGgypW@Kvz{+gb?M|kttbhuS2Rj; zIjSf&Spk27O^eOqy0v32ijfMvwO_Q>xT$Vn_)kt?jXm1l-4M{#qfZ4taj<{!{KmtdM{?1B%|!DMD?DY{D-V7e*?;rJf8%=9Dl%;W<2qsY z{w-G%;(qt_Zk$^1zh|$PP^j&^b4|GR@41>XA(zK6+gp?W-m1TdO)?v}loFQdA0GaD zt`>()$S6c$M*F{qM*w<;#Q;pxwcsZI_gw9dyZr{7U%>w3Zoh>nf6(ps5ao}%{c*Ry z#QQ(N^!FU(PcZ$h@b|~v{-1ES)(DPnw990*K-I0)yfPK=P0Fa1kj1_%#~bugQ*fT2 zGR)r^vdqg?ZfsUQkKxN=?GbE&Iwpqo>z5Y}LKqhCrdY*%6n^ufKP5||k*(FE`x_j; z$kTsZg_uWxGPwP-XyGAZxICNWpR%Gf$|R?~K0!a^zL~0_n-h6^#;I`BLicP2CF(EWmZhrdFdBHgv02K(UJ z@a6O7)?$zLeu2D7(JMX4T|Z~eareJ!i;^FhvABF3!Rw9%o!1&a;5|34+#HhnX&d^F z6S)wlTMh)D=^qaWMF$u)>hhB$t%9*VcS#RK)rHHQg}%*N+n^7c$#sLB0ZFu ze@+zRjNTc7cHvWSgZm~Qy}XZOIW>nA7Xv88jI<4&Zo9DkG;ofZ)*(qGndTXncthvK z_=cWpw!plnOo<-v78PiWe!h4fp^|uwBH3RC-M`J{-suB5TQ8C-{U^8or^)}VEZ>qD zNW*a`4gU7m|J5FqX#kSbw;McS|CX5!%K&=AC9cMwy!rR8?f>E;r3BZ6mdj5b`&ZNX zpAG!Z9}reZ)LedE=-;#AG9Wjom6m<~y-)x2DH$BVJ+8j{{xhQdo)vqk09{4j=<`2` zUq5~8|7@!NVqpJE80|vl^Zozw+V8C<=2LHZ0MBh`dH=I|_d6rIfK7rCX-u>Gw#_w(lX18lzo0Dpk(cR=_LWBZ+${0G?n0NY>jia(6)ci810#`Zf5 z|4%CVS3B{4LiazZ=x^}(KdI<%g+2T~!1f2&{wE*;Eb~WW`yICMM`Qb)P4!1(`z^Nc zr+Dx?k?#+%{T{FhWY6yWs2#{uVT*TUII@w>za=#fS#t$}VNG4C#$Fs_BT%>}D8K?RaC`y*Is zI1ttoc6Xa%JCUi3WraNBrA4mm5@aFh16fDO}85w#W)X)lJ)7$JF~~rTG3O-wtn

g6!Eo#|m6ud=(vC7uejrm}^Kbj_AG=Xe+*KD*Tdqkc4lGgRr2|^})od!1UQbpIb zCuK!!Ec!<1Anj``fte+I1qMTh3FCpSpFQfR*tuHXlIB2`b`id?Fm^84$t1fXDo`kD zZuf+DCWZzD%kVKWq?DkwDl&o=#dgL|?SA{vmmvVHA4=d0Md?Twrb@7IZ`IipYH_S~ zWw%pbHX)w*tUdnzP~Ybo`VstOM-2{n;Ym~&*iduQsEa;YKi$i{{8Q8TU++!hSi(4 zVmz-Xzr^x?f*WkTR?Xrg7wqEJCb_1jd#3fuu!*>8^j1}`B?vG#5g6-{?`JJn_O+GGBDrVSMvl%4~O2Jcc8NE#tt z_5S5Uof0sb@jEPuCWwFWCjBSbde(gsN|bN2!P^@T&AVuz-g6E&paKL7AJUCoVeNu7ukgkyEhsX7B^VpO$E--c*4AO; zGK*6G1}B+`kA9u1yC1JPIB;h?gUp@kNN_s&;)=$~)7);Bp%axG9%_;Z?QNjX!uT2y zmxn-1Sw;;7vj7J+-ZQV$3Q=eG)!lp3(Fb#*dTe5e@yxJ7<@uRRvy*4#=goVWjg>-y zA{tV|2sIz{`{fCvIxd2R_;h|CbxR|;?f$; zXj^;s##W1+6+Rk`LT*Qvb=wrt7<%X(#FR$r;Ga*PR7|gK-WjvFq4OrN+5gF>rAhXI(+b)?cbQ#-66;#gO|gf<;ndqF3l0wTHRB9#hXRurOXvr>6+^bB&bnmI{m%pd#hs;t<-wU+XRq(7oV^zXy77 za^?Dxk0-uael7pX^B%d$w`5ylZ)=7IlrV{#z)he8pF}&+bDaQWncX@_p_*_$8t*r8 zv~(jdbz)Xm@uAdPrc%kQ=19dWaRtG9Sxrgxkku#6dX*rDh1?ZY*KK~+#hZRUZ9r+O-Ee&Vh0xx%$4#jq z%-2W-s;4+?bo2^p;A?cXeQU?@hVXk~9<}opbg=L?Jed&XUB%b+OFbXe^6$>Jb(UE^ z$yp9@mI_w^kC98-_mlHI@l&hXPKUL#k`pm5&{YDI<(Cddw1N9N;MDn?wC7t$zvkl* zD}1YCxW9o8MC<0+3Is98PfYwE1iInlhmxacT}n@P&q-YrgH^87mWIAPWYYaIKZn?z ze?QzoCk7K|DV@OVIv?gzl!2uCfqhuFDJP+QAoujvhEXCs+WWjJ-a!|!Bov6VpeB0z zKJSA{xJW73$YK|5Wl_s1eJhqClKq#sl>i~I%#pj_ScKfJlr;lEa3kKz-hhIg%tUok z%Uj^vypP}3g_r>Yy==^K$77cJk=BeMu-sfg*PS)G%;4xicM;iWtLRp~@Tp+V(`Ja% zyY4wlQ`re@q-5#M;*&M4Q3fXiKNupbl*B3hNwX`8zAWM>Yrkr(*6H=`)>d@heUo6w z*6DHUpvM&$jD_lIsDs|^JU1-6xoM}%+|Oz=EAgQsj|ge*2z%M&$uBJCtMMnSc~=?gpA zu&Z%eMv9mnD+n7wmPrymA@(EKYC+J|yaE|LJQ+3UAj`bPN*XA)pgn81n&OTsRnF_L zwR`(Zp)w5vQ&T|zxZf(PVB{q;DK2aMzQR-nIBDhGi)0VntbswT4tjKv65*ds!8_{kUl;Wdo+~yo6fx zkydB3vWFpq(QY)bx(PGA$^eQTFWp-hBmXra`@a;r^&=3q9Ni|A8QZ5CBFA(9zkJkE zgNUk=2vj!l<}J&qfl&T{b&hag55_G&n#Kce$szg}W?aMc=KL9Q#*0x&?zPo~=O|~Q zsH59*+M`|NqiHiO{#1(Sp@xMuMH+y&HgE2In?3aMGV}Vt%Gj-VvXh>pSjIMS%8&wu=zE$ETJytg4Z13>^4)*S??4H zNxIERZ~1Y}Fo|y~os6_~x7-ObJm)eP@6X#X;?Rs*DyX@kB$upELeq*T)Hezgd zlJ~^7IFsm+6RlFM+Qt}f;3nOo+W6*rB&Mm;zkox)w9sx63^a=E%x|f>(}Y$+_L@y& zJ(@*z-lkFTcVxo$W0w;(O)#q?I?$m#)eC{TpLN?mY9YhifA`M}!;e<>O5&Ptv zAgp4(pP$VS?b}6mXWgc;7foRr2AGd5-iBvsB*f|f}YZLe3xJTc@$aD!VBC8 zyK$~?-m&WnnNFSXdFL*7mB{*OrlElvuirR-4otzl)9TW(-|V>WxVt7l+g_Lkf8*{5 zTc8Dp>Z6seCE+n1n+YekB-eG<@NKfOty<8y#Y}q}?Iw|xpB&UVDV{SuIZiun-_H~EGvjz*hSwHm2&}7M{{=e_kz#=|TkYSXy zDRo1`F7(L(9-gZT0FvNZ#A)+xY)E;5seq)!-m-}A19V%`>g`?%E3w`~I?=or_GZV2 zdI?lO6nnP}wBuE$J(U5%Pf=@|_N{jh)y}jXrnT6<*FiLjR1L(W2^J#jS}GBR9%)R2 zWUNOV5`s~Dge<2@FC^4YT+?|p^{*^pQnnoOXup~jChsbtK;EgSO*Q(7(t}R_Gazo= z@Bo4NtFynhsaBFq`PVo2pPkI4$ef>uNVy-~SHSn1I>O`Oi|*DjSt$tJb27-Ysp_~> zvkNsqFRx#88ulwadsgyQMr$<$BJ!N&^ogp&_KL?1NXfwMiPM(kGp;#0PH$bLMbT=a z=$f6R`-l5?qulC>5)5>Cm`7au&h?Rp>pdsAQ?4#)T;eb8zff-)XKC{3bS|RlTq=8- zsJYthQD%US5+=)K*+;=9j6`dTeCy87in-oY@N7o1t35dL%`w=pMM~7U`fh1p$c4;6M^;68j>O)2)FKFXR1JBw<0>+fD^*5sn;98$3)O)h1c$$ zF**3!tx_yH#bH5sum1}2Y79JF7c`s2A2yYYh6)b30hbrL!FUT)f}~mTIzi= zRS4aiNuTpwJ19Q&To;r$54PYpNDAB$N%zy{5xCjcY=7%N&jJ{c#Y2ilO9I=}h8qct zPN(E$doP`z_fe-)hFi^y_qIZv+44ZG)XY`Vt{tOwCT%^+kCs{|19TY;nD%V>Z4X~K zIG+aJYV1^tgJyz|+2?E2U}|YW@J`>DP2ylUqNa#pAbMHOsggerrs!U0GjcP{Vl)&w zT>oK1PLgiqrvB@KU+O*0&3P#i_<|225m*IS+tJOwBOTx$qFLijOb8q|hF)EYBK5bO z2pW!6AulFewYuY2GO z1L+3f6HYM#ZXX)<>oTs ze1z9O?w?MtW(RUJQtd5%do|6U>(I0upRUEul15`5a?9^iGGjK4`@YfKzLBQ><<(Tf zWKC`qX>^?Ad*1>F=DBpq_olI6Pv;45v58J!skH5(zQZ(?$G2yGiMdXasIl5@8ExdIqbDWp+YH1tGhRLLp^BGL zqe$>fGQ20;=wY8dvYk=nX;~594ev_9kLOEtiDmU{cRF5DLxq#Jd&w+#NySLp;RGk` zpX;N5WNf;Mj{%RU689Hq7?wXbH#1q5WFjC`+N3SBMD(jOwts4RAnx@?szqd?E6E3wLciOyr~q*4Z7&HDKPrau(RQlK_v=v%9zIZn3I3JJmCD^hNtZD!qU+ zTa4?9;Gf)G-|l`q%3jc>4NI-(*Gq&ubeMz9jz-o`b4Vyi1UvaPGt>I*I>a!NbNpUy zh(z_ZHXpf0-s&ZA5km5&LM&pPziUVPoajAIY&Z|Re%mdmIg3l+F;u$Caf3JcSZ^(Q zr1|DZ$kwSXthSh)y!2)l|mP=*_nt(G&P*8w>r1aaH z8CU!zEBIMB;;4Bkf$NFSdi1hSjy80>z!VTIw*ZnoW$eZ!j%=(eTwUzF7{Az7b3Y^K z$8jDMn0pLDz2U`aSpFusQ6DWbX+o>@_89EAJwO!cA?BPNH>`>04YiYvtmK0#`{Ib? zuBg^RMZ5)U?q54|+((AlJ25R?^9O4d^Jtx_9*^|4PxBjgl=xL|cfZ10Sg@^Dm$lSl z9}VXrvgQLwnQ-3cvL@lni|7QvZ6M!1u0HchlFIU9KVKb;&P!cd-2#NYsk3qYSMv9d zwu=mXmOhMuuE!&I?q8t&Ma?W3_ZtiSL=1+|_Vl2>0n&-+k(KC48HYDxd#*vi)I!zj zm4ki&JZrxxlR!W?7&99`1*mL9*ia9ksayCfPZ@J%2>BIvsuD}jWhC}Pb95iHpRcXZ zm7ZIQYVsU{D25RM9VGT`Cy68m+Pv4_*EFI9fIO*BmjU_3LyL_@D{Mn#p8ONPDqo5; z&mGt1lC7h*QoK=3$^?u_*n1Xh>m$A#W!Wl@C!Fv$IG)|HJJgSGIUk7f6PQV2cpU(n z@|GX!DxRuJVM67YY4M8lllmQn!HNyPoLW8j`98kCB>hTG|Dl|{Ao>Jwe1X`ZzO^ou z1HdnijOAls8k&0gIznHfno|E0jp%81%JnhEHQ_C|x$nOGUHmD%TdCFbahWU-6R^fRrya(Ddf z``p~<2UR|*41%LjuxZae;W2H?98LSB%_U;@70;ec?X+j7HJQ)p+~7mKMp~!(fxAzQ zKTI)@r61~_4y3rdmqn_C>~-*>&xC;7b>uRQGonzsV_GATM>`FyQ0JQf5lJ+A-O#4&U;;uqi((1Z}T7&mRo zI1kC_@t}yds&yKBc2~FJ~!doBT$*B4Qfgl z+Sy(s8b8-R_Hyheisx=cgf~-PWp1uex_z1_(Kw z&6o32UL*@%^t-=d*;iasz_HJS3=60`@Tqin);-hYdqmA9xFiI9>ifvm{%EwuHh7|J zYt4s?$i!VCNZ7t{jVzJBAo$S0(v6F--109W;-7UeA%1{pc^1h>y$u1PY)oc|IW*%s zpyiFU>9Y8n8w|SXqc4QXn`$b>Tpmq4$b&5IvNmU`V#!8q~eoHHnPf7N)T7@n#bE10-%8yoo^Ak#Wu4-L!dmioUzF+2t2)5uecoV2ra^~ZD z_PrzYmk5lE@gty=C<^K011QUUm_%TVFF5xRWBbZ*#w)z@X=nFFVWNeteL7!H3HzbF z)16Oz3W^WPB0bshp5;v6EM2Odha88wqBW6;3Htw0kkitqj@IgG$FF+z1N@??c0jY; zVICNbmEd~0@FsC5*|$2>{HWGbW*&$^tp1xc3QkW=sB#Kwi9Sh`taD1r7%-I|5&A-w^k11Zr3Pb9b%=hh6wlfBXV$xShM0 zG>Gl;p%D*k>d2V7{p{4(knL*XTtcSDh>y0j=wC}(Ih`G+00H>|5q}Z3)pe`GK}qP&{n(Y42i&%cX_&uvNt^5F!ZKW zB@<>xeUnGLZ*BATmYRdGH=g$NinyGKGNOVD(C;P-9O3X7EdLb@#timw0pA*-=Rec9 z{iv>M%$J*ib}~I4+J7Z}Ej~(gAYAKoI_$oJCxSt*s0|A)4p zNqf6v+mC555&B#(AsjWqzYyE1B712Gs{lCiz|O|bj)(2or$)+~KPt3#WW$+pUUD*j zEMLn|ubWHXro`k~4wD(cL z%})+_Ll0ML#U~Z|q0;o0$4$O--Q&wT_$PFDDe-u!&wAz4rj0C@qajA0E7(XXh+oSx zM`P{1`nB**1k6`g=2oDL0=B6n*+SImyc5|nyGhidmHj4!7e;|XofJ*Dq1lKQ&dNEZ zWHo^x)jIhjKQ?d{=a4ZDB--~|@bsO?L{f)NkljAGP5QJvPp4+B=E<`(t%=Nu2Cf3; zcOcy0nAVf^%&Br=vW481OkwCl&6;YFGSA(xsu55Z83OlQ)$Xv{R_|Uz7XJ{FCC*@< zrc|9Npy7>t>wj)dw<5y+E7>lV|K}UbWF|sJ2Htd~Kc+R$V)c9EL9W922N&r`>qS(XFoag@E?#BX zBs=M7v-Eb){yaIsvGiF2PIDXVivY-rO{Gnh_XETOI3@#<2kzo_#C@HJp%tarewybq zo6-o-*}@LqMB#XHE)9QbeBjRMe)3vV;j1t?N*IV}CeqwRrNA4Ki<`RUJ`*KDR%2E_N4NEyDQ7HJw(VixwvXm^ev zo^U|iuSKi~10ZiOMNQ9mB7yD3Xa%+aJ4n4HI7YoqbwRi#cT-q>+-A`{_aNXdEabL&{#8 z^KcserS%TMt<6?=3BEB2Ad&8|{^r z@Fn&d*&0d=?7Mu*7Ug4Tj1@1(YxmL9>gyhQt2Zr)?lMdR~nK|5-uMjup@{FZw)7>MFP zV0K@h>0+PZy{+O&*yacAGEGHS8tm@WRnqOf2erGV`hB_a+VRO*RRZC) z{$k}K<=3lFuK|P@^@oab+10W<#L`CSO(GL4cGATw-44;J{7QMT|DQ&pOn8KJ+k=H#IqMC*_!EMDSVJW!eF3 zvLN3DZZZ>R*g&egR{g?g+?}2r+A<3?)7X%*Y!c|42NCW%rFW!x(6J)T zbvhSZW`F%UPQqM9id62=>QLc+tc(3rTxvA1n14ToY30IL_7Q)v9f=}fSx$GImB8cy zJk~R><8Ll*Y1a=-++KJLPKvabs!1g6Hg0wgoCa+?yBm0d0JSt91)JXue6TcpqE+VC zmx34pC2&}9JXtz)tK&9#Ov@C|RB(2ZZo$r?A8VM_ABI+h%#Z1P^J6H^-)S>)IPT4b zm^PWW1qfj>E?QTNrqrltEeDV^A%E{h`8{8!&qZ2BQyM8A@EKLDf4`}|nC zI5RHrki|zd&p->G^-DhGB-4Qi5yPqa1l~s7H=wQa!~_xUpplyXIQ1z{%l9)Yl+8pM zpd6xhXbuV&$%F>y5A#O-JszW`i$v^tE_oe@lEYCBLhY+FXd}ngoyUvnpoUO(u2Fg0UbS+sER(tO0K?-Q!6Yb2got^;la& z@^)dmQoHJ;NFaMTU+LX>I6M_1^>_$~ zeXdLHw?&>AY0w$bY4JP*O8I2sg9>sU`i(-#n)I|Qa8{&ErT88OI8NJc7b7)nGA1en z2uz$RnUiOOkCcDyxG-ZOz!J2|TBC-+5TK~F;2IR%INTOD6HT7VcJ?6j9?+Q@tT}x;-#u8`5k@mt31dBy3>xq z3EKs4-klR5n6|*aC{L>xOCPT{mih}9LDmm(&+1#i9d@4hnXto}0aRDZ`oW4Y14H;I z2+XT_)mBp~-|GTSg!>cl_n{Bb4%1(}Eu>oG^k~8JdsVRoPP2;Qew+qxsvTdk{QWJ2 z*>7Ftz$|b2?ArN$0x+HU3i>s^k8XZYsMCis?S{%D=1+yxzP<->j(&z3LQcRG)zX1T zHKr4O4=6y;Owt_)6EQSdBQ=nzd!UvHcW2lZp)$vpMZp!*rlLiPl_3>5?Su@G;!FW) zDdM_m8!E$M7GhyxC6x!GApsf379z75Av?+QepA)F2O4#QQLDugk^~E#>Cl+LGO*MG-Ug@5#GQKp-!OZze#zM zbF^2B9|mUVr)n21@)zBTYgBzU19e<)>mc|J-Fc8os-&9RMY$gXE1lmt+8mS!j6SfR zb&=mJvLD*;S?Tpuz;`Hy)+351qu(AhkQfbaMTNsRAQfc{Mla7-3yt)gbjjO0*N%Gj zV_rQ=|1}r5P7MI5sG}!-$SmLiTW2xAzv?Q$p zIl_C6hUp`}m^sIS=0BtN2H7i^CT`5AgVQQ4ns{uZr7y5F`OR5))tQ?Oogt3EU)(nm z@Bqe8d7O@<^8?qzp^yfLjRZ-%XmZ&MSj={$Q_4vn9^;OPSVruiimb=o~HiN*?bLy*AqemKe{5R)| zr}xc+svvUN6=feiqtmRn>wV*?sYP#{RTxTx7>V)rOq=!Qce!g6YIdC(33j1Q%gTCF zN=BbrV(g+nuN!Eg?0c>gof!F#>@S*C#ez!Lj{=UTDl$P`(Olg;klSDU5<(pPOjY%u zhxS{5o!mudpEZ3RcVjv@d2oR48oax?{fb>Nw&3EUtA6aeiN7Sk3*-W5^47WGM@#Fn zN^Hn*SnSOb!W#C&=V*lukp%Y99M7(=o%{biZzC{dlgF|FuW`3N! zCliXzl<()(0r$lBt65M?-HP%ZgHtgSX#zr?$Nkm9>hJPi;qg>96xSy|W^~P;%3O51 zbam1HwC#{82W_WoXRS2CTnk z=2^~3w%C-u;QweZ@=}FR9>yco0OCL#Hh{@$5AXXIiTFrC1j!amo9RU6E}s<6go|Y~ zzW@$8wAp~pcs|&aS4_Q<%aEql26hXP?AQx9!&zv1M0it)>qkM~}Mu<9gr%rvv-fIi8n+(m62?5eorg||7yQz{ZegFfzOJE0+0fC7X6WmW-l zXT$^I(janXf!nxJiN1Fr;`T^i8|f;08$)ykKU}{8!zX6e)6>IErKhKhr>h+wT}*9c zg}Qgkd0zCtM7y}ffLhjI%NbHIA1`!d{CePLa!6L0xdK`G+y^OLZ@xoh;$UjD)XE=W z4f7{T_KHl!~=pr3N5(=rPdnJlP;-m+jsBb=! z8M=CSh=}V{%;mt5E-MtYAFNyPepa67+UyNi*1?C+d0#y#B4k`jYxYrpJR6c(zfvLz zBsJQ*f=c-UV2JEk`~Gt_%0|nHvjN3_Siyg_-0vO%e0t0h(=DhrYqbX|Jo2Pie$&bz zzBRy9h-He&MDd-yZiy=uGG~B*i{(E8O3Z~hoj?=M7yRc_$f>CMR1p{7eAM`jK%B^c z$m=3?*P1=1irE5DsHR-7$|mQ>)xPM#$9N%6nc^}iR3cAo-DjpI=ak;TuDFFBjiG%3%4W3?~hsGug6X&qI{4U{)n-3=&3MTc+Pb=>VtFDe_7^~kR%D>>3E zTk~j35sbxT?>7u+PZmbDK5g4cysh&SCbD*pQ-G7PVq=&D4Xu&qy$hHEP&@83Y#&3m zR-@0Z8ry(Q@4bY#jYGAy;MAAM$4`DH-E@XTeo(-F@@yKZeca)#k~9S*6hPx*58j@G znRLJV3YFnk)4*f%vjB7dNYf^R>4n`Ir~@+Xm*ont*ca1z|MqbVT$ zg;D=2ZpM6X3s!0gK&HbHqons|K)1}2`|j$Ke1OR0i-Lub>L|H|6}hx z!=l=jbzw;YA{j&^3y4Y<0g=!MDj-?O5+&y-p$Sb3iXa)uSqXyVoEuOH5}G6#njA!E zQqw>KeJAd9?mlNk5w35D5R(fC8fEPJs zHLER&FxOrG+8z>` z*7n_jVYbbevj-22DoU|_2wva%`6JNh?IWm2o7nIWnnmRZ>*78Yci*o-eUS;$x-G|> z9Q9fhA#FL%05fKO$z@P_n19&gMRa_EmuguupF4DAB!pa+W!=jZ$n}WmvMsrC$=u5* zeZCXBmLSRo0>xj8MgnF)%JL%gqz1ak#u#te=lB`GXs3!~%hdv*!8|$dw+p7;446yz zm_MV&!p4p{;gXT7WQ=^(o54>Zu+?5WR?D=>(d}O=yP?XR6U`d$UuFwcuWswSl8dnEjpfiVK3NQKgj)6A@s2(rk>QOXCt^}!||K-w_?^6 zSM4L08=`rveUxl_LB~DC?zUR!A;(Tx046^y8I%_1E9Wa0guQB!8rrD~&$cFly*7+g zD!#ri5W16zDt`Rv*0)Zy2#MPH51eU3(bH8MZ`ZbY0@HV=;*er_iQ$lKu`W7clHmr+ zp7$duz)R}B^-rh94^crjSd`lYe}U;VZ=N1vlqgoj<}a}AD!!ih-aKC+ZetC$NQnOE z0iG|GII(f{M%KYbcguMK;n~_b5f5a$TW)jGcwN@4EH)c4M}IP|-aEEDF($afHLPO2 z)N*98{Agf|_9OLa=|>YdJgQb%;|VYYaVYS-Z07Ly;LdEM-G$quNsh0s!M;=uM(Y*I zJ580G*xT~S%jzU_lg8wefSz1N)k{1*Fpck4lGz9EHMaFO_;z8B+KTOKMSHOgwD9hw zPoAps{7Msv6cAObn~3PYQP(q)3aC5=qt7+%#ddw05x=D9B1UKYuUnO5n5|qVSXhL-1lsmj>cU2}qOgOo)SJiIoRu7b zdI^+@;@_n?U)*~taX{Vz6}(m={w)}uKt5|8-}Ie6iK6Z8*J5B1cZ*P_GUwLL za*f$*6A(X5=^p}&E^~-3`3#he5)gSl>FKfQH+=^;6pKLaNRCMQO~0q`@9w= zwZ51yL3d3T2zaT!ShkzP^OYShgj%7=HoAcd&L`G*$sOhQj=GZ-Hyv* zJ5o6eb#uVpIj#Qvc?|v+ElBUQs}^@afcY|cX38se@=V6|eyOfSZXo?g(5UVT0BGvv zaR7-5>N!bf$?K)mV4OgS^@ErACvUF7!yO2p(Q(?L@;}A7d=b$^&E$GM+~mYTF0 zjKKYzhe~fbIiD8sOl4+fOF)dF;s)i1eS{-xWenGq1(0%n0y(vG1a!CSPdwMdbg}*Y z6Ogs~bRC!ksfo-*mbTcE9tD#pu4&lPZEdY?MVXp9^iFcf1G{wxkL9qori%;c`ssd5 z3{M~zKkRC9RG^c!T+)R#PmMATG2tc{YaC?)4JLT@_0sL?MYJ%u=lj>(-WxG z=|bIavfm;YZ-y8`YL-zuMPnb3)t!5`phz#AYb!k zHi_%XNe9Bm2i&@QQ$6BysDgZ7>-lO?x`W$BT_VMNbB0we_k^%3&)l4E2oukyINiUx zZQZK?m(OkUvq_*4N|UMKa$LAK-KTs?hrYooRwr}?;UG(d%@X!o-YqN_U*=d^{an0u zw?arm0de+%Ia8XJ8~_O>T)-*Cl6sB{cm1X7@lW965hH*AuW@|mpyT*7dA@p%f0AYI zBh~qFV}d^_P$We9n6RFEI8Yt0LR}r>lATJhA!M-{(EaSbg*cmnIGzjX88~8VP8FFs zlF`TY+9Pya$8r-Rj@?B)8$eQOyly!%l~&E)8*H%wGc;XXUZ2%b$==_&_e;3RDm}9R zoVQD9m~~3J!`#|j^a40vAB7$)k_hC!O}2RaQKG2mItlYGV)2;#>ah|MW;Y(!{`bDs` z^O31!&|IZO`Y^W|be; z!hTE-U*w+3>|O?E>w(@gyqK6E0RjHEEZ0hSB>59BkRK1{=kg}UNNh_Mhw};mK|!m* zTNBMvAR$g_;+{Y$fjSyB1UgoXcY(6G0JtbS^;B3?A&BdF+34;A zJ&|EoeZc>~k`eOmdrMpXX*EDIe$WCih=4o6^!T7Ih@05N?}m8dEqD48+vP_#F*cu! zwvqa-2T2^HCQk~MMK)m5D287&;py;IfJaDdA9l%lW(8?45-Eky^WKx{3L1tLHQgkh zJz9JfleefOnQ!6c1D@Spb(SkG0)Y%@Qf~s63Ka&5scqx5)kdd3JcI%a@8}#&Ywn0g zajgKU$(LJR};1P{fjnhH&!VpdhNbiM|>zDcXFVPet zeke)Fh;XvfGj}h(BKKqB9T@~(uyV@_u&v5;-}zHJ37jW5?I?P)*^+BI8$dEh5%*Ds z=+TSW+p6vgLbii8_nz0E$PlV3vb^tW>3nnhm!4zteR6Fnr^OtPPJ2%x0-)q51YbrL zd1=Gn4p5wUppk`QLd2O^XohS}MO9#$TCy4gou!{F8f&w$16b=le;6i}KIi#me)&@j z(4hnRf(sBhd#A^2)cHzQoSv7%A*lScR|6D=gImvpEjd2XWpq|X?Z?jm#TY&3&a{z( z?%16sK|OgI9xFonp=ySzQExct>8?ZzOlN|1Uxl_GZi*9xm>eUBzL$`aB99q;*^Ke z8W#W9?H{y_T@o&a;1U++8^r+%a!rNnz1yOD+JzW5Ut8u@ki!wWXTlVuKVce|Uhbo( zKRGedkY(z8skO|_`eDQHuTSL+bQ{=}uN`gf<8o2`qnqds!!WGT4``SAE)AMuMH{h6 zQ>j6l>rD(*-$IU|Z7ugNzF3bRAc<3rSgR{wHxT3}ofTVsG$^)($}@Q&RBU~bZ!G%M zmv~OW}vKeGm65R^oG)xjxaQZC$Uq_kXNO$_{`}v&%|W{$YckF9NMVDO$VYH3Ew-WH`jL3 z_sHNayQfjwwmjbq>5aAScLYT34}#xd=DuU$K=+M(4{$JKQpiEhkP(rFJdb$-Q8jI^ z@!i_rYYV^c>|+E-~fKh_gl|K5aUZML+i8g6bqby!I)Y?F5o1nl&$;21uT#J z(v?qm+Q9J+8D}5$TZIRQ&Z`4vdJocr1+)NBEHsweKK+A2hHfM)-%53KZm#PgUED5q>E($| zd&I@1@4bT>TmnsXYJbx!dhyACvfGTxf8fCXK^VIZm?y)<@t=81h6_Lyu5;1->+941vrqr)lBsPrOa9E1zZS_f_<$EE zEiT~x*@3i8p39`y25 zKdkT@ynYGAeuLL9;q-47_A3$Cc=sHmowF_Qm?|Rkzml8$pG%{b21M>f-K5}OxsCsU z5C5HsSg8X{_(JCSUzB->vw4P*;Y8qR_8PT0bHfyue#U`!2sW`S17ppQGTvd`j92 zNJU;-T3`8Fh*-uwfD!8j-uSh1@IPCztE#{vZ1eQo{fSwBjX73a1z7PbwHJTSA}j(~ zs#;oh;;-GqPXHKt0bs*cl%ECuo<)!V7U6UGP3j*x&%Z4H&rJVMf9iV!>?>XwdO&UX z8^(JL)Nt;2#r>i0{qoKH%eL2}0ru6ss~`TJMc4*}tE=#V@6W9Lmka&+1*BgA`|3Bi z{j$^i2Dg81yi@r* zn{hWusO@jv{?9qzj~D&_dEFk0g-@q8%c)OCut3x(?nctq;@h`jWQb8xHfNFEE#_^Iw`&?LTli97cKvxGgC>Ks&- zkr6489`#9U`daR~(JkKnO$aUlN8dSvgHIv-*S>T-^!F#!l_|Z1OT_Ab=I{ElpaP6q zTW+TMcMi%LnSBO_ye#mE@L!(okBroj3XJMv*_rlNP57fhrCAkmaGA}BKiT}f7649W zF)#E+OS1iaYsKm>9fylA(LojRJj&i_^<7qWZ@DYI+R%>g`_I;4NA1zfm*Q73iFxc**v`32#~-wgIQgZ<55e>2$M62WhYfc3XT@LM9NrCv#`Hz@sutb4^87xZr5_KB8N_p{wO zr`VLE)qeKlbxBi|J@TFEcxx(Lq6L_=wXUX*g;n?U^6`SGK}r7Gy%C;mjPrDdc-z=r zFL&a0qBrXvrAD0)r(hg#SbZsbB{*0(Z59=Rf)T4>Z&< zVhM%@LztRYYJ6I{A?+n0a9>eQI+u{o0SHiVz=6$KGnHo>$w&POGX>?s>Fuj_z#sEm zqltDsap+b)P7}7CZ@D<)2AjsemAqA;cEP{vV5i(m}XEbQ_{p;<|OLjh=ni z;R*cvA9_TXih6MIDLUk!Z;$avcBM*gH;xx=ZijbpMDqKB@XpRET8d|DURrH@Nb{WX+bx6q|ZR@ z2&jUCTZWnw#%3FwO6@dOkn^OdP_cf{0Doi(aBm0voALWoEo)H0ot{>w+LVpi6X-M% zJi+uR!1umW2NnjheCdB~k^&~YrDxpjQr@bizJJ1&W{3?sB-{ssSpRSf>63FunqLVl zp11Lwiw_)kng)u!49eUSac>J|WRiXl!oJ6nx*EuV$nXzC*rE=+zdALT{g4 zz^=N!AlkKp(pqHOXKV)TOAnvW~WN%ju`7@EfFBzrV%3{A1Rf%0@ww^D+NPOh!f?-=*+ zcLnX@pXsH?LXvOG_JL9*yJk|10v7_HchC)*rwgv9_8de_{O=l#$zu#HEFU!^#5_0F{a zwmk=Eh|!qHla+$wA2Q#z&dl%vd*@iDpzDYGkI6>ccCUST*G;wAY=>Oj3U&qb`%MrO zmdh;fNA=)L#qQ^dvr_bP_Zp!rQmLhFnYT43zh=v8P#khkF|S?ag7&D>p5?h5Rwi zamQSXE0il`%_>ouQ8;OWuh@Ckx#@0}XBN=!kqdO{jHO>wd-j&KbwY^zWYojw^X5Bfeiit}S%?MMXaO);yP|T zw1dqr^88U5gC5b=R4-{SVh#_y{Zi-w5aHWg$zr%Jhe<7NzeL0u3Bf()n9MwT%gbee zg`0eH2YGah{ZCZj4nt#Y$H3gw*ZOJ4aRtG^7QXCM0;?wV+4jJG-EJ{#N}*kbp20Ps zytwXd$TDVJVg0$jjCbv_zcl;;01NOFjO*T?*y(@5xLstkPkBc{v}A#Z?KeMtV~!sB zF6RKNv5QdN`x*T_6=-Nqy?>PR#NqfEYhPuS4ZO$QMp1b8jF0h$Z(>hGMdAr34XcEX zzxifFtoHaeXGZ=vxQtxJ4Z2Av(XlhQu=`)G#!j@7!TrbP_~UnfUcNAH#8+YPP#(ho z@hhycVqvN|!CwYO{9n%kxO;?Xv0SU<5|IHsRC7krl%L;=zk8B!LlOTDSW%KboB;>F zj-zChCniHKaSahm$V_f{?t+`OYC-6agNCFg01=WXez@0vo5}yQ*$=|-zq5A|jhnx37C3`bONVjYpKb=Tawn^S+mF^``6GCg6v*xFgzzlnkr%<@Zl4 zIS?b0i|C&r1rV13iOsjLuTK1XwVsFpbf~g9_=N4Gxj{-+g$xKzR4evXRXF4-+vJN~zqyT~&zs=1?GHkU^@>{Y~UCKoOVSF*HWpbfQQy>0}m34hljA#f z-u$oP*|yP4H?elSGHIw7c#@M76^&)zQromXNf)tvc?Opkzb&l3;Tww8m8FKu^LoO> z6EPM_X;uh9T#~s(Wl9=1Va-wL%%_>1BT4(-^M6u}8mIKk7VB%_|NK2X9%zoOcM_}@ zwDSOL%Lp1D;9=Js18Qd>y71Y$P67f?5RyFut-@8sFMgqDp2JOkly_b8JsJ;~32R@X zG_qIA7+6!_+verfwu%dPEpnH$=@gqXMlLfz^UBwC0P=dkzL_{l7#Em`X}({tuYG!Y6J`QUuZ z7a#o6f0$%Np0{g|dvJWqOJQ^fr!FW(DmPd<;)2eg&t4JZj6j@1q5m}bpQ67jK3F*2 zhMyg~6M9nZMFzm|E)7&$zd2wCuk*RdQUQNh`YQS6jX@s(D10th9UkXOM8YAay`<2v zQ`Q|e|JjgoMID#!KK$i6x21$-H^8PWyP@~Iy<|DK0D=Rj+`s>=VAKkpa4>tBA!vW%muV|`kCGd+7BI{`Sk(EiaUq6=)pZE;OG4{QMZ&HBUzq@yDOPZ$;L0 z{0CWv#x>$>a9>t{9i(w=uJ7X;eUJGW%f!2ajrPp}UGtV0UOeVq3F6+1f8xI1;{f03 z`cRxr_V)bW@H$2Ul%l=4hyNhM|84|e7^ny?_JIVY58qB)(xOG!g3<2Yc2%rTC@iRF zqM(-pfT~RC8(Z=Ms=cqg*={fe$4Eo z7;+?|Dt>!?DQvgO`KKfm>JHTR`^e6f|3?AsALbK>f;ep-y2_d^WiRJyE1aaRjFqxU z0SzdFro8yuvNIl<9#@tF+X@CE38S&^cHfLT8R0Tt1llv&jS|XFX~<#^4tY`Wp|*>A zq^@HET`+2o*fWxH_9vxqHx9tZ!_5*RejN1vfXROXJn&uWxm{7;9<8$Bhl6k+Pg|Ww zi8S7x3ZVu3Aszp)3ssE9Vc2Y*mx@${Jnkic_To=EHZ_uaCRTbU7hWSbyS4w5#ON3E zCO1nQ(Kj2D0=%YcmxNj;`gfyzxa;DdE`uIVGfkMr_!-sK$9v?)qPZ$Q@(8_Ob?aLEi&ux$a>N>Y=mNo$ueDq$bf_+PSlD4X#~y-*YL^Hk3iv z!)?}q;MfeT->(Dlx9q<6i3=0(l;9LVZ{c`AYD5#vkSx_&k`_o7WDv^)CJ1l!3*(Zp zs-tCbF&8>)Am-IsMX70QG)P{{rEBVNfrzza6<;OQ>FFs!qMEr{h!Y<2Hn(l}uz^Ra zg{6!+$k}TQInUC0Vn{Y^qr)?SE!a*jO*MmXVS*0uMob}gK<+%HJ;Oy?%>m?g5+Yl$ zN|Iscgs2Yxj^Q$&EK#?}vufg1E3fv%F6;SJ@DiTCffvdL;NcJas6-GjR*9g-7#FUj z(#)dqgU!5@9hve`E7>IVX#rJ+?r)1;(`1s}&j#0ZW{PI|jrFX$5!@S!Dp5W%{adAy zW+=t^WenlrHnid%Ndv_YVY!TH+-D-z!zYc+46F7?`tszPf&DM|fk4~=fm%M(4oJ+5 z@|J!SGcna@(D2f-o30^M;?lRlVO*<`am#E!wJtoq^?ADe zWAi69^mcL=J$C+)tPZO-$Cfue(y|u6GJN(aDanWKCimd;uXeXW#YPd9q0^AT)#sVv zLmRgRnlwa(Yi|iG6}}MAxw3ZLa5T41)akA0k!@JU3^0XlZR5P5Q7f-+(br`?=$#h$>V5t@3CduHV&%nK zv&%|uA6S*hZx<$|OFO%8 z8YEhuW=T*7E+_A~U}-!%DSeEQHwba<#^~8TjKN~|mVC9i9vKlp@MEOA>hd?-^clPE zU+^@jV}i#b_g%&`&B?h!=`YYTt|IBFl^$rMuXW*4;TllvTYq7Rh7-0m=!!}n@!VW` z{|U(a*E(NqY$Mwuwn?wa;iB;)#{6*>%|$gEDeU%D6cu55hxgzKiXreF@=Z}6Nb0(Y zVI*06U|R!IFVWMi#IchG<5J7&?RCfj`~vT0V+i7kEuN{=IS?t`=R|$xdRCD(p(V_g zBMr-3*ZG0_ltdpAGetN+Pg}Fig@e1b8TD%*vrg~?h?db~zq0g1SW|k=*})H9Wm{tA z=H}#AZg`93JK4?3!xLbd+ON}RESGljEYImb)KW*?WyOgcc(qQl$r1~Bf20OK>Gi~~ zT9v|H@nccFVi*e>BTGdASTJL2@#gg(G}pfMu%$pj}->sw(6hn+jlaJ%(v)iG)Sd%ompN>HaJ+X~RNMSx6vx?KT0l*booO8n?q`x%7x2tS z7`8vcFtT-FFF;r`p_&fLl3L>Y0!s{>Fg}cQ4pwZHOJuXfsXQR?RB3IF<50T-?Hh1u z<{wtJ*S~Ur<%Y4=H7=-QuQGIi6>rmpS7OesAYV4|r#uvWYjST?Lu!4o^ZdXS+I`j( z`!xbM|AB7e9>aK_oBXVlh}v9OtoBEb(Y{pk(&J^5LD*Z54-u`gfacWN_U4P>1%|Q* z)fAp$o?JuzNe~68$UZ*;K0w2;!A-vvO4{+L#kC6WpqTq4cEAsx&sWm@fd<|)eSM!K zP;<|u|B+E}u3Zp{AqJg$p<)!CT`Kgp4*M!ZmE(*837u5ch5ftW^cBoCZDySr-o0VZ z!V!~v3<=LoMZ1pKNA1TMN(iBX$V@@ujJfqMpzB}US?fESb%sdXu(0_!_rM_sM{7ta zBNOs^`Sl?}g%LJ;b+CdS%hgj>?Mt8)$Za3!?lI+HZfba`JXd>WmE>j7Qb6OKoMJn< z({x{3nqgxFFQA^kMuNzYtYWqw^RPdc-Oj}$BCA4MEMYp;#$B}0Ey~g{tV7L zy+iDI)+S3}KdUEdAlaP3?KcWWX3-SV#yccO@8*hw1#T{7lyY*$1Ss*b-#E)_#Avq? zWvHuVF3wzaoF>ZA7j^$W;A+irTmqb)2t(LLos^fp?$~SNE^+d3fZ>Yh&xo7DUa67` zExt_35b3xln}d=pBX3m&^Ty04YN7Ac+;uPe$Ww{r8uozL1)agIrG6QEBypmWP-`^F zBtdT_drAb{Ku}9tBk~Hq)2##yVjr9Uv0eEc;)7RLEh?tcse}Mbz&E{ zK9N#{wKs4}jt+$mr3an7yX@P)9nQDj%s4#t^y%QDSzFRe2 zk=tBt--25Vh)tfg8>ufAGX?n&&s6gsGaZI3Asjt?>yOgR>>nW7i{r41m#0$C+0b=` zPo5YQAyj2DgrNN=ML7`#3!m}0Ld9y{8Cf!vHcSv7iSIjRpkv*@Cg7(DwJb_X5|$HK zw|cxK|7{t6)=OSnmJ1vdqYb#7Nw)7*w>ck1xOc?Mj;R=W+qMK&I1@|~Z3KTcihBd6q39g_mh;@993ecfjiCzdBJ)REHXqVrqDTm+2FomOLEZ zeXI<7DRuty)3o6=pC@yj(sB#De9TDXa@TplrR+qY*{h2W-wcGba2Dc{OvQpPCs1E< zeF-ZD^*zRZNaj_Js?6LmZBZmm?>f=S*3L!|eNSagl$DX(u-$_R?+Is?(NOHgEC~}N z(T1P&hv}aE_7xnXDODRB6xw1SE7^u@SBQ%-3XEeYV&rLm$qex%#@m2zE}w=`ioF^&Jd(vC#pB(BD8zn`y(39twO3m%t#$ z={_8kA?UK2OryS8TDbbZP>*7B$8ymzF@ITR^MLd(U!Q(UL~}|}J4&0`fS1I_$#TYv z5@l^%?i;bAUR_*$*$oP{eAK(a*WTl7mxxP<@t#=jSL{hF#o0!NS6JgqDZmwr&xLti zNuc7{3B48#u18t7ONx1p3@9HL1vRZ7s{&gF03FARGe zIWb96RT5ij>m(x05Awvih6&wv4V}6qY{S8>Bx>5_wOCxQ?c+I^b9WDX2#6_X@g zu@8^Oh624!eW@|)AIA?LzM`oS9ArOJqaO#VHD9#F4UmZIxnQ*TQbbm93pgp$TE8sYKWUMndSP_a9U0n90Vu%OJsEVPs z3(JZw_Ux^RH13%+?kN<~uU$R}!tW|TC6J+oceci#Adzz&;(}gVyUzd0mT(54X-LV!=_LmxnM7gwcVcp(wa&i0Ed*7fjBHb@9l5~CRgFzDsaN$`eGZD?_N?-IPsZ!eRiGIcQ){x zx5U$dnTK+(*#Q39j{69Y_-fx1XZ4CcMC93}cA7Bj%Htt{*L|x@xvD)9k0TCH(MFoS z6c40hhGaY8xOwq*4(qPZrsX8)b=VspV#Jamg#02_gr8Ob1n7>`$GgcJf6&-ixSkxE z%KqW(syA1BSG!hckB66$wH9LcY}OYWCDur7T)D%ylE;k_wm#}nXNgMK3xnE@D(2!o zaz%UWdh;X~XzQ_N4xu~_=ZIl>eFzLFXQLX1bsY=~8)v?AsbpfiMP;D0rdkQaG$d>l zw6w!@R3YO)zXYAB%}`&eRt~~oCU%?_128rL8n^B0hsOuQ9#Rb;eQ)kNe!%Snkt|P0 z511ZF`jWoB3sAaA;u?RM{*`_aWB-XA>OAcLg3M$+@e!!jZqrsF@rb4m$6D?3S^M_4 zodjlUEY{~F1f1uDD#OaAb?5ywa?qrt3r$7nH*iHczQXo>i!sL-uu*>EzFXn6rTg~T z36~FoekRa3NX2~o#&X^&>4)Uc$l*kBsVtGHO!`+rFptKtx-ryw3Jhy zgm{dpSfBY;71P{q=m=M~_iWOCaNr;iMv8dc?maq+P7jAAauV4c;EK!yr?kDUqbCJQ zrcF9EmMtP_L)b8oS?Jl4$iwDcn?$VACb&c?M^tNkbVLwN&#=Z{ZG!nyXHJEyOHxA? zAll}rszeq_{MD!kD_@nSCn`B~mi8gkMDE3;=6#Jmx@(B*ATD?Rh2?#&1Mde#wCU@O zY7OjLj^enep3eFh$BScp?hfD1bdqoG?Y`J=(@$>5{<_$lP*+#|VJtJs*(!d5j>a2o zRKmm$(Ksm_HAxd}-zUV33j_e#9s{3%aO9evyQ{~#X|Od^Q1t;`0J$01V&D25KZi$5 zI2@dsuD(FGer2clB_zA15AIeGr>mQt`wV;bur)LPYt@ihC(3U-alv;1m3x1Y{!vYJ zZqzh{3gf;y3uKR-L{tIhQUE{?U%1FfPt#BM()VcUs3lDhOPoet!8XU`>M$)fqGv*iOBZevq^Fr zl%K$j8yaon!b_7&+Xs@*BeHY6_HO47zEE}ijKo@&`9NwPf4k~snP)F{Qol&|scA() z){H(%8Pbl`f2#czrFP#Y-y0#tFOO#~4zZhUN(=wEH@L01j>Jr-Ew8h#dAwF(^lJA-d_ z$Xkv3>&R>yN_0--LM5sq{6D*5~f!4W+2zrribKb904HbjGn*3<-yAjz2f3()%K8 z)pzc`FWc;W3%g1x>eFI?IPS(tCMo6aN&n-z&T4JQXm5^gj|)0mA1V5t-x3hUPx~|K z5}Wgvwhup!=dKfdJx;=7($@r=*jXYH(zTD?ehp|&z)&ee2TqKR-pm;^IJi@--C`VJ zg)T=uWi7ROMO(w;r?o{Pc8DEn(uXwOmbw=EbqJK#Jj*ZS~XPGXcs8t4Ja;xW`k%il{~2oocz+mcP;F`$8M-t4`={k zXc;LI(k#4abZr>z06$wiLD^$e=$&igY}K6_%oPAP_nTNNdQUi;#@_VEMOMFy5cz^d zm?uW!f@HQ;iDS3s7D-4@r;0(4)qz#ak;BAx^A~ebP7v9m*IS;bBaQ73T*zg|WnqGW zbzWQWHnSN602}V;!_Fho*44ce;d?JEb*>M-J)ZjJO{JTy3BK;ht8>-$+t%~(nZuIH zq*-r}*IadBqhA#hSJaGy8)AnM5Mn3woJE}YCT;K?jR{}c11it<9uCA40wCme3dbo3 z4VHUbdo|g+AUTV94opw`?IuiQ1L7F?BGPCF_nPBBaqS=a%tw2xQWWpY%~2red7335Vay{Oo+&;1pPVzIxb$)j3WH5cl6zwE1BDQD-cygjMXSbOEGLS;&De8v^<0I@@&OhkWuvp(j}|FBtxXFRI}Rs^EAEojomwq)z43HgtmH$VJc_WT4Jl z(y^E#K!)1R@xEjUR4?|>1{m@+%!@`6557JmZ*c09E-cqR;n@7@3TA^Ot*Slt9k{@~ zw7|`8h<^b5%)TK9O^7W3H)!Eq^}ENYhh@5zs7NLyT^Y2D??7{AwcMZbp4Cq@(y579Z{{F< zy)G~0_*|JOm+$()olkF}8lh)}>jfot{6%us0_SqDIfSKbB>V{ROG2t%o=oxAmB(Fcv09uW~7IQK<+tzxz%kQl4I zCoOZGCO|Ym)x0r0TEZg>CDvkqT#nP%-F7nW=CHnXoY{?dkVdvkU~NRd#hVJ6w!G)A;}e$RN10F;pVYvCLm`~hnn0?ZoyVDG+ zhl2T?@9^2XPSAkcN7*AWpsr{+$*wZbvnG`XUSHT!iNf|h%bq&;YXB2!N&*Bh_t8WU?-!V78id@Uz zQ0gTM74wtP?R4wp=Q&7R_w;)_w>9JX7QU#={{D0O)0`k`{?YB@f?dm1TA<&ICcFwU zDAEU==sZ(iXdmqpev{_XLTzo^WYm#r#yY`mMa#99LuCWb0|E*N*(&9t`ECB|{Nc6% zch|3$#xBHUv&~1V;pPz*%9S|QOAaP$Nngqrv1yD6Ju*eGLzsCYldK1ps3OTa!}LJN z0VhX7Saq^agwMNRPu?}e#0Fx$Ov)4P?w@qQ@1l+OGa!cWtstLH&W;-_$G5dlH1q8> zU0zd-+LIm^9C)gBGmBSd#@AYIcw4IP;zMlNwG$`2?Dxfn>7Z-;;a`#2im>83?mQ%B zvC+R!)ODvmX$@I8t(p~3LYl=2O=3SZ%zP_N=z!gBFo7W8Va$)S;7smW=#pBz@&)_B z#QwK>v0OL(A9|z09qO@J92qhzIiX^WEAo!s{6ams%0NC&Vj$MMNV3RZjLcIwU@M6k zE7c5Y5qk*hGxT!Q+r0B`JuE%%y`v7zC9k9?%xf+r!CdY^z(l6ghj#`v;$tIw?R-N1-`l94hrM0%R?q_~TL#$I%II^3P zk*a4D)f@(%@_YNOF2pMu#_{2rZEeO|4je7n#`GGOkE-wUV-6>sv~8jru{?bk;&Q#0OjOyS?YHr$Khc>Z;T2ijqd4M5$54#0bKGZu8sf%u@#AMIr0pc;#c& ziDmzGTcb)Gt)?5Z@p~Sa^^$9m>L#-rdtRnoj&iC<>PKH&&-yxA<8jLS)#HN=MqK@e z6{~%wOBSie;HO<}HlP*q*0D?}*!d7U%XFdJV23DW`Q$s&*d-49+q5-8C-QTt(%jdl z^OKn_xtf_g3Rq|Y55W;l7H9J^Fe*(MKnP#%vKBi2z;)-F$bYClmC zm#W?O-wXA+?fJ=F-$&;%TO&)7N(`wJt1ZwGAigLE-p;sju#r?u!w~cC#QZ>^$;~do z%^P)a!&iMP@gAnrB@F*PI>Jb6Dg}J)_30u2rzH|~9ascIj%1HgB~9JqqA1QjIC(O) z_Ox8a-gwXC9rRO;T1CX8^64EZR#6gsRvc>aowEs_w|gNsE`#nzeGQqgQj@~AshDCE`A zl$jnb<)}0cHJ6ko)^HTHHnqO>b~8rJNdBm>?#&VY7;-Qs`pdFHTER)|u`k4Vn@QM+ zFYcTo)(Wwc^qB#R@g-LpR#3$1ov3PJGmpBT)J}8d+U$Zo5HYB59ZD##w6O=oau6O9 zF8UZX6s zm&cdMiM!Q`X+wlsb9P?eTff3|O@&*Yq!#8i)jurF_$aeNDvr61QB?LE*Vmn{1Q2xOybC|AXy&}`a8%|tx$2&n6*_5B*?!d}a{CSS{ut8AM@UE3Cp$9hd zOm0=fiHgA^!lhSTMan8Ms2pJrD-kA+2{pYqU)R=3bL8hk(JRQJB>GFM8s!7`J*9d; z`O<5=hjNEwFA&1PrV>?oG4NaG&A6TVd_JWyFU| zL<=#^zIm*Dh&%Cb`b~W>;(1Ij&2vcn1^81O#d&JZm^&Qzx_C&|NsKI#h?dzYxXxrj zI9ML|Qdy*d$l{t;^;qgm&Ai3q2G{f2ZBUI%1oNM}DvoBu6>t04_xW~3QjCV;4wSTq z_xZV^gx#}tCb+x0NPMhs-D=8XpKX?ZB=_d_s(%J4QE_3N@PRe!2)YItrxd@cN9W-(f^Te!Oi3^lOCF$ys@p`B} zU&C~tH4)Br;k`WLbxDN`+=-25Ua|j0(|Jd;_5Xjo#Aqp69g0S@D6JYrsTr---h0#9 zTkVxZs@kf(_bk=gdlRa*+FJ>=M}!a|5&7lwJ?Hml{<-I#ocF!={dzth&*!^hn-dng z^<8QND>aMhM>zl6z+ZMQA@KtivAAGht8XLE#A=}BqD@4OviWOj&>6e&Sd{6#|@2(m-qUeMILqS?J-2}cNY z(Z}m(wE+rqDd#=$dEJ}3%kt5_e4SFVos-K@Fri5LjbGHsQ3jhi&dSBj-t`Gw?hm&0 z0Po-I;AgtkpOv|Lc9x^Tf7nu|?Hrh`^i7Fn2V%p1ZZV4_G>qPI4>Iy7BreTOF3#`q z?=6OYeyb;sOTnJ$u`M&51orV<%iCn|ytUWQbcCztQoJk`anJn*wG4W{bJYXLUUe1D z@sxaF%9*``%ZSlA#;-S7JJoZMxoIH~tadsnb+_h>Q2@isOR5M;dx|7`gA;0A?46uq znLvf}7WRZ} zS;!blTPT%q6=LYvHq^Eq8oAz{HG^)!2m8xrTlxg(130&@T+QG}3f&dhV?qr-y%bfV zEZ)I|NJSFomjKw@BuGVG*jlwc$o(}_Zy;#_$vdkFoz zx8C)=!Np<8hrMS-N4tNx50_yHD0eSmkoP+Mh)$8ceJ|1N^7Y||-`bY!yvbxTUXYOf zIR5JiMK|?r$qAtof6R;}EL7~p*xuoXZKvvXv!|N+8tNJhX2aVnYfd8XhAMIx962qr zW-L|Ef(xFj#T%);Oowr0g0plIE2j~0$Zjp_O=(4%n+W9CypoYgTrkgCb3CYeS zeo2_HerGg5P*ZS|g)&ph>R5k${V0c@{AFb0bW&O&(&MTqzMf)aw5(pVh-vq}o>Y$P ziv_ssPt^w*g?ru>Sc8qe zGq#uYu-8MkDyP~_a87)1`ixjJ`*KlY^98SX)qt^6T%OPi=^#OqEluMuop&ErnL}aN z@UB#~SRuAu2S$8FQdAa){dZ~nx)g?{%Y`Aj<}zlPGk7U`1+=?Iv~K>$Ge*}vqT6ns z8);h<%&b*Z7pDJOQF{zIzc2tRnb|ruD}mjZ-9v6@X0n;b-FN1S(L%e%%cGff;)p!q=suyMJBzPqPp@J_Y2sxJvQ6scS8(Nux?dR8GqwEp9pOc*+8?&(wf z+<#K$S%JET-TF$n1^WDnJW*%rtPKAXI$u~_C{odNSNW{y{5XU1e)GB8G4Gz0%1)3V z`Qb_e&w1;S8QU>kd3Fxx_S|5>d;i|-d&4gd8tCqcTT*gvqYKq=JiK;T%h7T~^>GBV z=eg*4LTcF0)ALt@q?{R-si}(=a~RH}Tu=zPn0V9N8LHD!sZJ{1?A--$TRkA{sVY2G zcx6q`%y)u2JRzC{2C5ug)dIv_R+}Pok=zWC{-?g2VdLWRs~2@qRb*%rW+%bzpnBO9 zmG;+C0Xa+d<{Mn&^i2(uvsjh;u+=QdZS65_j{A3b&;wpZnzNsx_&0*<^6dmG5jtV( zEx2LQ#HSczA_92yfS0o9$eWm7Qw;izFqARJd|UVbZWsDBE99E=fT^{FM-nmHhkclF zGCzfOM&i%&=<)_+_hO(n($7!42&z~mHvIJ7`28O|q7F;Beu;jHc*4Pf2fib=*KJRH zPg4y6LR1+e7n=y3FDJD1*-H|{%R8B#2z_P3Ma{q5J!(w3XqLKm{RW%pvw%m&xqiM_ zEV_QzSVnbuWQWl1Iw^R0Xo&l!P5DE}!@)*^k}!S=7w;Tb+L8QkF!!Jl{gndDGrz*S zxcVw3*Kq1~XqWG{qr>d*0u|*#yv1T*GkKK~)b<$Mu4oN1!DIjYHQb-fH>fPqIt3o> zPuP4lwd^CQ%H7!xz8p#TYek0-?9D>Q)&i>*E6_pDEr4J|K;F~)Pe&Eler!ay;80)2 zJj7_doLYgCSJ%TjYb-SoVXXlQZqjYt^f-aBpc5^-&WFV8knf3CURSEL%0o0^;H*2& z?U!l4mgw>Qr@<n$)Df>gZReD|NRn!a@W-*9j<7t2F} zj&52GA&>QUn++-S{sv`l&_# zb8GaT6!#3{1vK{bErwPfoc9RuqAe-gZtYsaV%>wqcqL*x@z{U07vmkzT2;E=^T$-}o8o7zoJpxSMfmY205@J|VcQ>2jhtZ6ejVsFopOH~M? zT?f|V26V`s(kD+MlE6dxpwL6;8qe>|zcn zhvbbte;)ACu>J*6s88$h@}k7V4x$l~@9D97gm-$|$JGdqOXEhYq~Dw!y@!sS|08N2 z9H^6jCvIqCT7HN)ROb6#!vcEPrlTmWNR~?E*-mHWGScqaa*xF1+*lM9ZJsHv{nkea z4oaUV&v)h1gf~WsRH_3{#=f*xD(BT1BG8lSVPehu7iO}sq(;bAX*CUH;DbCMz;Gx% zYZtW2loCSd_Y)88gndY5lVjr1j);#>pMC!w*PAKDSFWly`_=@#U-147{ys`kH!Tm8gsOF;tU+V?QJo?9aT>kGzC9ryd z=BXF(-bfU1sbuXq%G0oW!V@JLr1VSFshjp%p>8Gi#=+&;pEFiJl3Syv(Cc^AdPNbw z_B*n-a!aOz?)W4AJpC_3L*7*{6>+7A%gm91r&p+}wZ@8}mGLMo6V*bfe*K^WI0av7$yz(M)jjPb6q$Agx;${w6|4IX~ ziS`w44A>qQ@0NVl%cV(Q;}Zabr3NJwl|rWo%8Toi1!O(IOlQ=iHOYwzqn8&e6YbLd z7721;-@how6W&7*enmdo_jVl=mD{U#JM@F$w|#%7q@XEcQa}9$*ab`I`WPJ>U<_aG zafut6-gN&<^e9`iM_hHKgOA(z3Czt5g-kv@o~I$^s3~bk4?Hchg&pQ9S6F z@{|33Q{H;*T2m(l_$kS>&Q5mDni`lJV}x^o?Q`&_Hnab#mZ*?gu64Q>|G& z3CPM?^SvGS5o7*<2dmCz)|4uc>VpmZRSxcV-EtzlOf@VtY6wF7ET_jxej$IYn{ScR z&f;!&6Yn6cjcNb@ZJ5212rb~nh}I>pvNNce>aXTe6~h!meQ zBzKwVVM|BqwYIdB%WLelmoGaKrl{eHwf!j|Wa8;M9=+DS3FEbxqb_x)qAOiwdZx$cSQ}dBg?4`6n#{*R_rOyP0 z0I2&3+4UOU#O>4zK%e7hm(=g9f{WtqXDS(GRHqa~0&kzRIalv}^d)J?OdAPY% z6^0Kqd&xFlxBiKR%yZ8QZhiP?gCYkW$F+8E*0midejvTLP?vKUWI8T-p3i}B8{K|R zD?*n^qwE-HS)p7~B-f);|zjiKQR}QH#reg$Tx>TG*_A5e{sQ(980Lu` zXc5OWq$M$Yktq9`x_zkcU?)YbS4qZ&Ek&4HCS(zbSU4yJaS_GR>}L-HN#sF!*t|-8l|F7 zs<|k<|3a%Gxb&@GqynOl+w$nOwS#_L+R{#+B=b)lP{3d1LwD{iO^JQm@c6J#L4PQi zoqea%yY@Zb@_|Cm5xgW`H$ync=xlHU>&{XQ4 z?`)0g+b=#Zr#cmQqroLVgy-prpJUGougbH_~xOs2TYs|-FWO)ubd zQJ8=I+MDZ1P5ZOT%1WVsF7EmvZ>&gx-`WbUiW|LolX80ZrTES@g7dA@a!<(99vzJq;5uB}e1#1q56>)j38kC$!Zrz*W8hf;l7|&sAIr9u z_Iui}90=zV9{51bH05|D(Q)M!{Iz`czA3nZisNwhj)Kkn9Vz*hu9ck?;5^La?Cp-J z$+Fc$L<6t3&R*^qMtZGQ$t=3;$B*3QtaLjc>hfmI*jym;im`R{(}K@sxo)g|(%`#2_ntK+t-&*7r5@ib?rL3j2A5 z;)dA(@w+J4 z*!GSYwtQv(|1JRSN+m797lWf!kgw*n*XIFS-AV`9lxsCg3n?6-V&KKFeeT7Rt{seU zwtGzn!eT^9{g1yh*3BdX0NEe{rJz93#aM|M6%Pua8M1ZHc_DMAcw*qsEJ zfLw7;=d1Bci{!oQf_Sw00nq|-U-`h?dqy^VjY zGt_4H)8ewB1E=H=16m$VXSaEap)kO$r+i?e1_8|#564nyH1uPxrhn5x_j$V#uMZ1_ z*Iz;}*r^?Q>w)h+4OI(J-;KBMa|!a89`y8{JBzn@lkdOwu##-cM1(eM?ch#Fe-a=B zLfFq;c|iQg`$Z;h_nIL_D>;*6-73w~*n}zi3H$Q_ZXm52Xm55lV=N6<2=JbyxRLue z>^XVpGN5ErHd$Ok`@~Y0mOp!0)nrJRzo;q{IqE2zb=g1V<{v%IfL3PG$~*1dV{Q_5 zHD$V=B=JmXFV-kD#aBAe%u`I!0()$OsTOVoSbeu1+ae@KwDMzd{%@yko-fGZ z-UnF(nehoJU#;Wx^gqND7o^cwom{7g|}a_<5raBd(1#8Yw;VTAaoA}Oc-Hm{-~P+1uAU~2L~g_h5DzLh;hsJpR{O3snOvgq3zp?cK+0g?p#6V%3rO%?_^z+Ualc4nHdN2cY;Q|KG?y^28Y5 zQZfH+#!=qk7-hUHO36f}HPr!Rs})Ovmw3^Mw?a2jln%DaS!JB4yKpxV(%VUz$ZZ7# zH=N#nt~ZnxR`P?%^#-*}zyoqPaIA_g8U zwy)#gO26$=Rol5 z%#LzvXXheezpgIcJ6zdZ2kU}pde1^>E2>wRsHeN0n3z8TUc+{c9|=krIlN|bP{O;M zI1WYsc_^c_XEucG`pkju9Sl!i(2P@+)i1)qMaCeltej?xhW{_a@fm2DfIhXiXA@bL9hfarCn*sID{zCM9? zw#%4rR06)+#`+Vn>RB|^V`O!7LFmSt5D%BwjFMTRe6(XLSd8jJ1jZ2(d`vcc%|?U){dqkB#9^T6crb+l#Un;lW=&#h_EDgC&l&f1BC zV&E6cO3Piq#r-&m5!wq$?O)T3b6qNb-uFqnfublm{^ro>4t2}29Lm!upA+KBcif;f zeQ*6d)j?h^eM;pl%2#b`LWj*A>lMbb={ZVG1)A${26o}SAw2IhNW{r>rp05~FH(HZ zJvKa`L`W#mXja%$`NN`W(u8$2?4Y(7z~R{B;8qz@fDbp=Drib)iG3&R<17jyAnK>tz#BvBztT7 z^62a*ss)6o#5@MWHBTfzuPe*nWfy>m#L~RT_SuX-4_ikq+P(X1kpB#!@%Ls~Rc~49 zm5W8&^QaFt$Fv4<}wCk<*EGAYCx&KiNY;4 zEkNKC&c&2Dvk7Y~{|A|Wx~7Z(T4}xR!K*6}IoG0G>ngYcr=auk5WhON zt3OL-;oBF zOE@$k_v>Q90#sN^T&$t;`R2b5qI9^#i!14tM!Cm!YC|7$ep0=zOGuAY8yq_6=!RJ- zSdg36;7dGJoLJ9k{3DQ`!}Kk=8-sw_QnizFd6&l-oLoVq19E8V1KwDl^cRuIX zZIguW!T0+4xEzIj-P4U7IyJqyT{OmU4Al-P5VdcRo``O&DM-Gp##pk;-hg>jDyqmS zH+n)E6g(nf0t|g3>msv)**?P;+zE=Y)1`Vvs5A(>pAd#xI7Pl)?e~Rqdgx zL<9bizTs{C-oQ=1%-fwY5j!|=UraR~9Z~0h^}awnTRqnpx3u6- z01#9OZ3r^?!SoQBQt?V8uWEN>FclCu9w(SY6V5vROK{yByiaK<@fZ7}?XL{vN?Vuf zAwauNRY}q4S;WVQTtU{LsHu z_n;g<&LF9PW>b)|vQo~9%|NUVtyH__rOPg;>vMjaqw*F@&NhJO^^gt+^^1rUvmqm8 zT22N>@0a5^wUd^Y4z?4Ww7fZiwiSN*e$=&eSSg#2tPd4pqIQI^F>-ND-*#`N>%AE% z)}<6xUN-z{pV9t!o?HyMd6aYji;x`JK@WpJ6o*{-xc#D-Ww2A(L~EgzQfd89|2RH4 z*&_3sM*kX*Yl@%eg9l^Dl%ViZNc(L_Z@zm*B?~T=p>)sYTRm!Y<7G)vbsN$0PovBe zw6ztJ@>$7!6kiPjD2SjUa~_X`)my~2eSbd-6!osNP_cI{8z&^tvQtVzR4cq`h6q{) zh<#eq=z12=b( z`)iCNtbBoDD`(O?vpgvSnAjnqQ-HTE&H5*{K!S)8oU%gWui<%qThXdw{aQi&H=Cd( z8L}IbX-Nw!I;(4+518R{(x0`cRpkWIlbp#Y-B&b0qFj=2_~j8twcYjH*M(A~T!l zbWCFqGM#spLLfU98A0M4>!!Bdw1LTdydUw#Fs&}uAo1h;PC_G zyTJ7^vZGnn$>-EacBDO0t+ZcEupJW<*h3&yhB^DrE1?Y&j}P=No4YIBo)pb8MV4BX zTY%WS)vEZEhcM0Vevt@V|P`ODk>NtL|n>`t1O)rOT!1);PO z{k{>W4hirZ&{4fLrN+G%ZXwq_xI*RWDLbHXScLN5e`qdu)g_~P5n+3M*Dq*?khM1c zAzot$$DG%dhDmcG?s&GE`sbaRrCZZNGrOHznNQFRhJzTEHQwe2n~4L+%KqI_)e5br z^gP09e&Etkc0}fxmwBZ_!Ij-N)WyBn^E`8Kl9PNfd!qmMI_Qg+0O5W-v8d5T4W)~C z+FGu=sKQYW?eHsKKg!ZO{w$^ND$nd189lqd?Tt4*?m#eswS$~@5x6k!PA4_8qQl~D z5QOqmcvuhCQCnjuU=1YWdT*$CS)5ztRsP+FS&UsYjbmz8*$oMIluJrR&pfnlpG9SE z0M<1GKn}rXC=bQK*A&+Z)5>wILZ3a(Bc2HgzL2fJ5hj;D`b{fYxMAKJ2DP&0_BE}d zcER)0TRlfN=dvjs`oO3<;zi?6X-H?-Vkw8}j{JIM<|O%tnXbVigQuKC4nhrua^ZfR zf68+HrUxZA)&;G;tbXb;oO{>8Ku&$eCAh#6*_g5p1w$!^BBOz2HvAHV%OwI}; z7S*;O_oFv#Z{_nJ%)U>2t1$ z_hVQmNtf05bORDmf&s3JQ^J4W+@Cu~%8mlB(X14R1nb98M z@tEiHH6e9FzEU^x>dEL(*UF!&qb0yT6}ttiScRL+LFBZDK5WXC&|PSgFV5MJT)+xl zT!_K7Hg>|2Q@CTims+o9wLhCI`!h~^ja=V3dIE(V1{@l$062bsZXRJV(%R|@E9-}`GstCM0sB@qO6=7;BuYxK(ZE(h+R{hOI*Ll}YQ4?stuF5_ zk%3sR&-;gR-F2c)ua(?91Gs-wIN=F$15sPJ_UuotpU99wKWK-Il7p)EZ&nME_C^2u zZ`polOdnwQn67UqZDiMMvqCn__l0>Mn}0Ebxb9wgS}TDpJ>dnmV~+@W+lr)_SX1EO z_5E@LF~Z+x<)hq{Y)*<1yy~SY)(rY+LD+ng)|mKhcPGQg(KbL2ZJg3ZGVy;M2`pF_ zm~g+%Cq%M;m#`EKO3Me;8**Iipx2Nels?3A$5yP3zUO_xAjayu?pA(QI-H?Rd+&`3 z7q<)HZLpqy=AX{Zs0QLLy-}?yCJ_Tp2LD!}eM3g$^n>aD_+>xxB({;1)vL4pnmAy2 zytbTijKbIdh_D86qP#_@oI=-WTU9RoYXmq0L(__w9)6oz#>;cai_h~f1mm{6>0)sd z(d5^Oe=!G>kM-{$;Fq@>&2NHAb61IVA8anu=mrZ-<`E!?RCYrAz3Rv$U2+wE4A#8RfOx*ZtUc?{wK$7KjaN++!( zKA2#C=3ahzfG`Gr3IhKF6o14JeVQfl1enRcvZe;Tx|9M!EWa8;UwBZJ@OFUosD8Pn zY29IlpI^Rq zC`WlUM0ce@KW<{nE!IF5oxAo19=%KlHZGc_Ko^2fkd2N+?ewc^uw0KU9H{3OH^@Or zIZ}J?aSMlX60~QQ-6$!E5VY2J2d3Ns>L;pCi*|5GJ$1-n=j@xLh*-!u4>)`kEoT(c z`XEoIZAD*tij_61iI`3DNnP8Er>B?O0^Gfj^KC?QNH%VR)z*bEZ7W~Q+n4Xz(wNGk z3C=mHkf$C~pU_1TDspcqhjGc+@QB1U1%_+z1D?azhY9B2B(9rZw=4MA<|G*eyOhSE ze#czOBKX@sU?tb-r{9)e<|sNPe7w4IM?h@As;rzrT*73;oA&Iq`BAB9NVDO=L#a}Y zsvah5yT%(|XzCdK=lycs-}h#%k6a}W*S)hK=EFS0y~vV76VRb+%gNdNxbLr#kd%X3 zaTmxBRE%4Z<99+|7>i3?N0e?1>-0MaOS{%`Gv#Ns6<0ThmT^d{&kxjJ8}GVPdS%2* z(Dqt@gs4&_tn`C}OT8=!#@vYCJ8}&5_K|(2gWs$7u^3y{3gHQmp2BkmK_vvmWxn@C zLRn0uV_?t+9)o9LC(GkD`Sqf95GAVh<~kCNx7ls?FhBA=(_Y&<;qz7vBkJ(ZW47J)La>}4Wg&{ouoir{Gw{Yu9#qp( z9R;_k7P*ok*mC9HhvR>roAAp0__f2*^<2H@`6F{Dx`$ninrKMvuWjm)tmf3zLQ0!U z^T5>Mqq;C4+j5Itm#jhMfFF)JmZn~M?h^moia(cO{iW&|JXg~B>!0dpi-7<^^7`Q5 z_H@7Sb}vb!`0(9dy^`y)Ze`?2yZaZ)+jp`8Ume);1B!~c#w)~Lco8|9xT*YVI|Y() z`n%XbF+IY-L6f6mte z#?!K?^o0g;Dlv5bz2@aL>IL^3M7g1oY*nGD4pwK{Z+w5e^veDC-1*BH_GmpD>n)CP zTk9Yr;bHL#;+q~T{^#<8W~+ot3a5^tp>YBwlA`6ksO5vPa&ncY<%Hd68c11bwUIL2 zseHTfPJIGc0JpL5tf|~bYx-9H3_vHtwr}vS(zvb-hcA6p&+cCAc6REz z!i+|vDCZ}NTx4FSVfm(4k;2z95R-rvyTz#OPhcPPZLHh zxE3|)Y-;KOdzC|^a?h+}3dITcd_dHKYOc_W2Uch_A`PaydSl>uTo{KCUEK|8seAlD zE^G^rRLAwUQ&H`K?}hEkD?NG8(2H6TuDAxmuDZ0@X~FT{PBEtZ_xVx$heOmqq1!P& zy^i2K%Nld8TMx^aqSFy8T_pwyMiNh%VtXzK%mJMqFt>BWqZ0xOP}~o7E4sy_{c{EY zdrBIexbHHo4>aZ*!cl3R1+5$XJn!HLRG~33y1jB(cVR=ubE*dI<;a@J5&w9m zgU(3G-4F$zCEyZzbU1T;5s5Gf$w8ovtG4?#Zj~braDdqb{(!Q~9iP14<;Spfv_edO z<^c?y8{g@Qm%eGi^tXZYhw5jq?3;UQivZHMvtPe-G%L)Qtqx~}bRe9quBjb~X9X}) zADO=Vi*&Lc!OM?H6muN*wLb7w@_Lgesy;)Ke){6L>B5zNmiHKeu9Q&Bc!04b$JlVp zW1RpE0#;U!=#2V4mX^9MiHyN-A$3{L;OaV@iK|jJrOBb6DxjTS-qeAxR`@QxUMvm1 z-AzFDz6^_Nk_5jVjvL#;sk&Dq{&BH@+KU{9;e!XP4qWI}D>TdEP##Pi3vY=9eKSc3S4J10H>svOI*$0w&a~_{WaaWEMRrn~3>tD> zi*jn2ITi7eP6Qq&+|~QzWQirPBUmn5%Sq7F9ezwf{S7-X)jm-Fw$64qF#LS69eJkN zXBk~JzsMj1l}x&F6(d=xysRsIq*yzTljaj_5zile-YC`@9Ce^2<#*RL`U)lL<`>H7 zzqe!zzM+oCAvmW4zG74$P=mKgrWi#6*bv{D81~(oMHW9zz6PvEymHwwNKez*i)dx1 zd{ozvO(lYXGv1|+bdl&kg{-^F4LPr@*+>^%iWIi1hBjoh?~aZiB{sJ-HJusrT8$O( zf4yrsc>NFkT?2t@(Se)+?+(mrE+qZSK-;%{(>izqe$z^wy=WINzp3GM{Cy+3O3_{} zbC1#MKY>r^MePcw%kc97_C&4lUhYAt!D-Vvy)IK>3e`gVyAZ#I_%D?&eNiGNh^NGS zw6>)14AMWuIMWjCU~0nLc4rr$yS7d;ywoDgmhFnxpN4Np=#OlE{UvmF)5K;l5utS{ znna=d2Kkg=R`jemI~}B+gr&9Bs(QvH!BM(=9ozda-unF?>9=d4JNy5LbohQhx1#)s zm#+Xn&CT@UEU4S}9(q67iT=Igu(_pKH=*6Ma#=E~U_zD-hrwKO-EY)dbG(UFd!O!8z#FIv zXyY68m-MjCiP57^&dP@4mu=tBTIB#qt|4DVH@5}`*F}>>svNt*o_l=iy{NjN^NzY- zTHnc6I_Yu&={502n2<+3{}0k4{%zCg8NCZ#HOR?&p{X{ZbA>L^=^$br;O=Ss20F=7 zKj7mA&Vr9@OPa|89@r1ecpo1he>O|6esJD66`b!grm~!km&ZVCM7UL!!MxB9lQ{q9 z(O-HR_FhzT8r&(n8hsum{dcGH8wdv-6@7dC7^l1Ud39Q0V4um89ysd=Aaj!_k61O~h<{ zZ-O_xf8-W8RD5URy}7jTQtL`Y$#)8-m=SQmXCSQndej5~v%4ExI;(ssf9R9O$Zj7; zmWEAC`G5>3a>VN0En??Kdk^$!&*aiG&BbR>I}f#X{^pU3llOdB>y4!@+L<)^HC}08 z|G3N!Ko@uzU^n0!Av{GZK!kiQM<@5L-Et*jBW7~BsZI++sqTspOeDh!FThi@aG~j4 z1ezsGqTAQd-kQv=er#*Cz^iRQl7oQSsTFE_Wb0tKanvRB2C+jzOP8tNx~TWWwtK7W z8FN+tt}hG*t`b>zxT}5G{S|4@cIUN=G#CdET(1(j@zCMRG^0Ax^tP|kji;J>$Ke1> z@A(x*DLoh1d<=OR<=$=*Xy!BK5U#4rIBYkXTzcQXhseuxdg0( z}}Q`bxxUq5)8KGou7N`4}*HcHwbNfpdUC+_q}3}>}SAW->LPD+?^DgM-dty|rgf=RDyyStrto zr{)k#^#xH%Fh4@e$X4O)EG^;k%~bT7rv+wo_yqh{1CqYx!TU-uCdg zG}{XIXYzSL@)CE(IzKHy53wI6>9Nh5zCXhUp65Rc=K((^AG*TZ+hQ2@RF#oHFSAtUp1_+#sa(Z2#gVMsAkkgZyqaW#4mia8v|?8p?%SN!$Lb5vhnQ z9c@w|VtXnmqZ_#(!T+8ye`&7_8TmFXH02yRLBDB<+6(`-1eXjV-jLObL+?FdNUM9? zK5r$l9i*YNLM{%#QMSk2+xgTq;#hn_y9Fkn9z;!Uj9@&GLXtQ>OXZ+L?-MP6E}zj; z-V_Y-WQK{irQ53>G(pLrUl_Q-C08}Rfyr_No4Dr`Ah-C{+?AaXJ&5K$KslIku!01E zN$&w*;P*JPf3m`reNT5Xm0ph5=mvI_$^SdB3-pn+Ur!knt+Lxo`B}NJde!Taev|06 zoYgdZ#pu07&l+4@UB-$CbsTo1KPU~-!0<7|-TQ%8LNpz={Ysxn^LW&88$9)#kvpcr zCCBPX{Ia*5G*H`sWjl%vD~d2OLYS8WD|jS8gPPy$?8D&+q@ZP-8hEV^u$iDu%YE@M zP|vG+y>hmry*u5~&gef(<}EzocPgY^cv7RfTVdy_@oDDztpp_sgTlK%CiIf%nZXJd z!!q+DY-AuepzCb{h##1{aBRK)^&kD$W82{9!}8Soh#yTqU+qN{m*i?8c!zY@_?hmX z{MyWzVBSe^8ZNezpEhQ1S0fLj(p;WzyI9>nxm*p<-T}m{N7qSxo3t$ja!d2SCytpU z+^2=lP;)TlFr=yRKV!38xu} z0L@zOYwbRR#CrDM+|KJfKN@YhY3ShDR;vo2e+{^wEiJ}tHlqYck_wp9a)m;>A~Y*m zE;(cjTSby$e$(faj9=7FlXMG^$6QPBd3-yx10QYRVs}2h+xQFH%fx+(W01O4Cl?yP z6*BApF)p>&n1sAb;sTP{_wKZ|wx5BfAOj=BF0HML^&3d&gN?i`o_cyD+TC$) zP~K&7F6N%EZHhrKH#X7q70CD^@5F_AhSl3-0LDvhtp$FYVEWyG*!^i;l$_4yWq-!X z1MW9vb^a`verJROKCRf=`a^1u>&cDXx-7K zxyxcE_mY2Gg)V>}rzsQ2|!pb?e z52MRO`*yD5f-GuVcLmPLL_x5+wbc%^5J#JcGDZr{8t^hR$nTbnMo5V}^(mu%sFSy@ z6)gAcYl;%9pLM%7fPRck=gw8;uh}?EbLr6Tj7V7;rRJ`2#YK>3K4G@8tO&b8b@Kf; zQ|h#j8z7ML6N@i%dF>a8PXXVga2|c*ryOvXK?Hg5yQ-2t(3YAk6X>D3IABS~bLHjs zaiJVbB$*;vye4J5Z&$0Mba=rY93#`v&@bVv8nnN9&ITiX?hwVQ5 z3b~U>KfoF8Zp3}-fs^K-I=rmq)70`mqQb*~Lc6u0ua~W_q~jEK@+DxhR73Xk$gAFYBd~m#(jQe5(!SbZ=$6(-u{S0cPkodp@Hl z^f!~|C2oQ~vd_e(CgZT6E@80D9>Qt%Mzm=}^7!oU+nKc76swdpKFMov z^}7Lb0o_O#iTj+ez6gINGWKGMHfE8{-aU4389XEL9k*e{_u`oq!atRFBqBE6oHF;| z5NZL)bZ)7}#H_Sy?;d|OOEe{;9UiJKtyW1ieKdG^u2h!XHHUve)ti5;Eq*XP;y4kl zAbBk#?rQn5K#Qw?+DDzq ztvlsB5W4*5)5Q)}{{X^eSB;A5A(-Vica9yTz_-en;-(fZ%arnX>BJCP(x_n@ug|77 zP|Hi92$cl1Yl8fz4ml~mnVvV(a3;Q$N*3}yYa7>6S}9a;Y-KY;*vd0Xxp;E(Q!kZB zqJ^nfwxs4>G{i>NTLtQ~tPZ-j+4k#JNL~}{@smnpX2;K}F7+1wPS3%Q!D9pT6N1;o zNdCnLHL1LH%m;6JEN;8zw~3r~k09i#v_n*9bTW+IP}%9ys^`xD6CfMDv3`-SS)sse z6%{+2rhEGL!**28!du@`rc}FOPnP4+;Lj4*f1sO1lJ3KExDHj%QYvY8U$s9;lwWfH zF&)aLFw6-)oT^+W?=j=zDWz7UzZ-=$LS%2;@rq(U*n@XXlkWD&QoGsA29S7BB&R;H8n?XE_X1p6Y7 z)J4vA`jf9(fV;a`OR+dFqu9|)@+BoHT{fCO%-li`oczR_i}uA}X2aReeuyTXm|?KG z9+E9H-cmW`qJ7VOHk-YkQU#TC(y$_bV7qi#KNn)*>MQG&TBo8!=?#2gaf_}yRm-gJXawNJ&db3Ic<4gCN~44N4DP0}KP-!oBzN z-1qnBzW4LK??3#8iM6hE#TmyLhlX!86(PM4;?teUe%`x{+!tPXN2Zd~8vB?>8Hc^@ z_3dny=}&v=ww!TtzR@H6_q^O_4wV#~u{kDO#cE?BdKZ9B{@Yi-X$9Z4kxwql*UQjG z(WGVmfze?WF$t~rt3D>RiI*QKjx=vSmRH@J3=Jn;T>#1PH#UP6qm8zzry_Q1ef8LL zl%|w@Azr3stCM>QMi4QFZ;QfPF1edTvhnD}FIm#jk(fg{P~1@hVyu{CZyTSJ-o}p9 zlE-+%Aq#gih3_e@9XvD7e&bN4_*UMEkbZ;Xq=_}iBUGD#nw~fS3JI9=rjAW~h{kFf z^h$`ZU_@_K=&?_pf7+FlO}~5pOhmlPEUCVj_iq7;6OK*;2=2v_~T6 z(vnv$iXUJxW%ss2b6$X3%7O-{8BDF8IQpF(oj1%0UDyQ~Nw$(?A8PO0hV+!Lox*xU z78xRQF%vny-PhIzRDT&8Gb|!NKAOwfHaSI~3P;ncIiWXIliY;mK28b+W8sg$1C>*@Xz zgveBN`;rY{>;z)xOc0D<&8+mdCSD)N1EEC9Xf?bgfpUsm#+2tjnTpEv#1(mEIQ>6?E($3eMccrpDsx08T6!WBF6zV^~j2_MDj>i2)reMaAA(WA250=9z!( zQ(5@%Q#L%6#?+z$@R1i@9~cwJITipilaZn=)PV!gGNQ@oxz|Le=Gs@WkKQ%;(M)DA z*n2kchQFsEwh0G0Z{+QNcL%EKkOZqlrUqae-t{|vs2|=cO9ki`0Isc4>?EQW6)E~9Ht9>f50RX5MBzXjs=bU1@ko4_c&i8e z{ZY#GbR-rntQN}XR1dbPV;aEI&FUk2g)6I!i7B=6F z{BxLXAjZorlhk_j*&$ROf$2ywa24%8io#rn`Ni~|ZM!5UDq_WuR0@9bwa!iGsmp7u z6@+wbb%v9SCE6Y`@)nBR){8+yBt#VeA@)Z_ly)m#c=Ah3@C8^f--?qh17)(XS{JMO_smno@c$f$+Qztfb) z!~*^G(KmOicw&GumKFQ}ucJG6Ds{!iu$DsS^v;D>C6{uu@R`ke$Vz49kXo_fhfUiz zox!Q#$UoR%(*r?$L>pkUqWO)o?Z1E$6jx- zrY-F%*u@mxzQVYVl?d0$j_$r~&hc#!YSpy=Jk)rlq*}*FyAPy3?|iPZVdg_4kDaQfz2Becf6wX4 z-aBu`0go0$N?*x3YW=!0t-?)r$&*q^7|_MAD$?}D`%=NZJHz(=IOSZKhQst1&EUVT z7*N0iPso;?|FW%vIC`n*4l9E~w%?OR3r~kkI9O=T0#CzWsw*`#8PYEi1zj*(o+9^mM z;GzbaC0^r7Ky9=039u1d5rECt{FGRG4z?obT0$_82# zIob3m+|p>h*~$L!_(BZTf9{pA$%-htQD0yNWGcU+vG7ruB?`UsNAu+W9{QiJ(kZZU z6VK0m-^M;2t1pNe*H3YIKmri^&Zx>;dBDLwkp>Ay6k@3-?4goQa#K}3+`wivg0XlF zc#UJ3KWSM%>Ye_sUE+0x2sor@Xu|`SCkyiSJt~l|7ZBT(Er&4$?A7i;h4X={6tJSJ z$4CGr09Q(3jkjCHERKbVK4<@f)l%i1iGfeqr?gvY*7GTL1xBxr-tXyXW0MLj=Pu3N zl%1tX40nH%M-lma19K>rK2e=YqOI4>d~ut8Dbd8F3*fLZ=5%?m^+mS$ix1>xEj*y7 z6Gyq4Wh^0PI?739Jdj6uiw!n3^yZ5D`>2x?aTJYb?&NMo5GO-&3($2MNqVe$V);^v zIWQTHa{x8V7)|v5SxFb9BS$KE#lz!X9~PA&bpOgWw#*l}1nINV;Z z^&-{#&Mw=y54o>b{%|8J0j%$8hutc*zy5cJIYw85GwM%=UxgRCKlG6vIE+T$vnHau zH$LtiCeajLie5tNOb^Q5YsMf*xjlas2IS`dg3=Cn&zQ|6AN3Bw30OmXr_>~Gfc24| ze+8tq1UiUI+}8w1#ifkrxp#E}f?!;P(@=JT9*wO?VO?JuVUx ztdPsXOVbAA-}D%j?VFwtX9v32sL>UZ!1%5fdj)-Bu+BVl5T7EdG(LvW(_Y@^k}dC- ze}DnTvn^Ml*DGBh(~;tT3Rn!76~NtVgWG)lpRpodPHma#ymhFY9+Wv5-fQ4o@v`lG zWYEW%e%gK8cq&g9r;9J&$bpu6*-c>b*x2otZ4TX&%l#K4XPKL3_B~Nf!E^(>YF|}> z{9S(>vBcgSO|f&=38tHKU^=7}WUe|v)G9|kEgcg9NY7ucqrCm)fHi^-fAje-)_x$T zsX0HyUKgmpd1sO`d-G(q=0ipNAtqS8CCtf@@i{TDJpP2!Nd^zf@4hY`brAOaAgJTs zHr1dDVoab3eu_7Pa_*jB9f)hPI#~u*!H|+C|87XQAybsx3`sGNLkfg;@4wXh^?(MV zfhsox?Z*uNiwRaU%V$U{6c&fyg@-zpw-I>@D&%H)4SpsA(Xa}%EPrdzrX}__ENp0?=H?G+qMFBm4E`U4hhCKqp)4!S! z2<3p75@1mNdU1dKoB#CXVnZCi%`vSXEr5~5ilhAn>r3=NLPYaJtLKZu8;ZhTY2CxR z-OYb;|1J|wlTTCB(bAT37+H&{L0_fV1w+h9-0`aKCj#x70Nr`lNvLUCRz7KzIw7A4Wg@C2`Wj}0<*WM7gR z|2NMXSq<8M9`gK9yDlw$Ci?WzUZ8p$|Hkt-=eYqE%aqB{f3CGW1{c96Rvgd9m2-2 zfWkk3JI9S-zVYIIUirhPE7(!Em&D$`l#hT5q%cn^+<6q20R^II&9}xnNCvByk3&2!&1AcQLmI8gFo% zxSSN7bi4a*v(4 z6cfZ)HuswMFO~N@4f(r0^ep`T<>Q@e`vw)4)KUiT0}_{n zpg@$aM{I%>a4JuXzx?>JPQnlx{_BTI&%FZZq}=nR8{)s;C;z_LBXrMxPea z=0I3^vZN^?5^_n}dOdwENaI2ee2>s0rjZ_Cb6+7)oV(zH?>{D$+CHWSkn~?Yx{zMF z-ZEwQUsCBGNOpNW!hq6)x@Tl#3B(H=I-I^mDGn&_!w|OsAjk6)b`j6H_JRsGrk2P6 zY%!#E&8x}8Gx$9b&^IVno@uz-qVr3m;n`C2{i0nRl9CvQ#llVZ+ zm`4!L&U4_M(PuW^>4=!>)*K7qJP-hfd=*=f1SYRVRaLO49Et}rpT(amGG?dFU4}{p zWi0BkHBk4v?>z$o2sHfn9v#e-_=C)4Rp9vJsy64fsGi+6Ubx0pGBCJ4-tyCCac zUcPEp0jv6n$T8g4Z(jHFNq?hte+%izZ;#a|qR zrm`Nb^rKBW0m$^EK|cWc<&kxmdq~Yj+i2bG-yb~~5v7krfb2J}rP`Xsh)$r11S$zo zp+8$T%y3=S#HOLo1TI?8c9~i2y09X7$f_R!6UjN zpxB?bfvG4eIw%r#zpC$u3v}g;d<2z`WPtD)mxz_dr2@4nz#k?*OJ|u_#raFfTVymL z7KSDdKL~cWJUo{&^WC~xsvj3vLM%xG!nY`E;$AR3zqOQe5LZSLaL#r1O(f+rdnTdQ z!X+Z=snqhGdf)BPP?ps0>*vXWY{pjt9lw?u|21{1ETD0AN?fVb`I?dD#iZiT1O0pr zk7sTEa9#g6HR;uWU7Pf#I1F&oDJ6Kt<$^LcM7g)+fuvKN6JZAN>kL*Fc-S@NP19%n zi%e$W`fIX%gB=B>d%1?7G!KN_4bBMp5FFW{<<9Ei0zo=YO}z<}JY<3>=BLoUl&uyG zz;Dma7IZ;O)rY`STb)}7--}ZPcCb6Ptm)3g86YTl^$pPjE4E(G*5=$_YpId}T|nzC zoN{=`j&GlReU`Hc8{2S39oo=b`OTpOwx)bP1(!>^M4+b6_wNeEa#Q48L$PXSgp2@ao@5oy0WWcmf*QUN|;L(1{pGne>< zmsvhQUwH+?5#k3W-Jh)|4WJf+bf{76PRJlmk{K1F|rtSau!2-~7|Z`y&sH ze24i~)AJ(&z($!dov&qYROKTKC-R@QT4!s_Kkj~+`5s&P6~#_dHWN|`Mm6mT)2$}uwm&j!L-IcFMoaew5#7%Vm>{3{_9Ww`S|~R9y|)=;YBji%F6$B zB>$7D0%Dw1&i8#!EbP@&&iYkm)z0H%J8^Ox@R@<`gPfG6a?Y` zon0&+G#u~8{QRQfDlzN`{~owZIn?o2dk#1h?3X56RS%)(?n<6$ELfFl?2$Qr+~hyu67C^dEqeLAj!ZsX0mP51 z)*N9G;kYN4Slb!q)lvw(2uWs9LSX&nhguXhaS!noo4l@MpI(P!Db*xw@^-T>O3Awe z-vGqWn_JXHF;7ktjo6tsgC}I8!NSii`IIj|E0GW6ek#Z>I)ZgyzrBX6f$>$R4rm>w z^71F-|I2BD^-%h7`S5+?x>Lt~4SOvkL^rIt%ufF$%aUE)b=?hE__8(6qi4EU*^*I+Dw z?S@~KOYzp+7wXfD&pOC2lA`s9K} z_#5=<7*5;j+yyJQ^Is$T@7ZSlfg>9$&UJJvM*D4%Azcx{`V^k-1c&nu089z#npOL< zPhX`i*VZ((lo=>2Q0j@qNsu&v9+U3Z3V)+|J#1L`;bWg*?UUz4PeO z{~$cmI*HBhqbX&XCUuIc51C*o3JQs6CIRLw1;>dCeQQnC6+lgT7j$oQs6cw|gvZTP z8@-481Pqt=F8Jhloh)?Q9UrG`R5a49;Z_8BSN!3S0zL+hi^7_>TCPMr)3+xFQfBYy z>`)#*_FUG1YrDea;xE!YYKBoTDN}HmYfB!UR9^=pzK0sDAtxd&c`eRYFTUR;{0{ZD z(qu#Uo4+#w|A*;qa1Bt2pG4{auzvGef>j|y2A$yv6X4SLWi`Q^N*D}G-KJPExkNzt z35ibm3?|!V3x7&tSSq`~%+e!J>R~~nWcHo(>ZV&xOZ#mVVacRa$_Ref%x}-Z|DE}S1_?lz=wm3?$`SE|4@0!TVE=L(mRrje`BNk z@9$W41Hf6tLcjgrKlZ;ax0E4(+^6t%0a*S2!waWtz)T#SzTg6iUY-urc=s&3ghODt zzF-N686Leldp^Tu-$T<^ts4D@WIQ*$u7A?sl;APezMyntD|a94ZeA#u=BZpu@aH#* zG|zJOLYor8^^;p1wWs@+m=JCSg6%c>PGO6GVGMwa=VnXg!zp4Fu5Vp&S5R)#YQn)@ zy}=02!rJNc4ZtT5Av^wDMp(x{n}=1AB&B~L>HUu3Nx0+?!z!-m#9IJljPwO1_flTe zU#NaZ0!r(yPfoXYOM#&9j0Hr%Kov;W{l}I|88fh2l=mJ1_7MX`Ri@SbQM!`uKQvL) zR=8mpi3i*Kt#w29o{6 zv$xdi>AU3H4{8pqCLA65RC2Ls--?z3-n#I6(L_h8p3f*MWGR5u)7#+tM4ki%-ThXIQvrl1t8V}% z(evWL>*E@qu?n%J1pvGA!NOmF)<4+0Wo*FX$31uigwGhrJ3_-hKevqF_4+hn6;AU| zyoY3Ufb1JJ5Dlqq0-6rxU?t)vomW&|wW{j*@vX6z>h(TAO-w?d{+Z&8s0cAccP8Kd zL2POjgY&-(lZGY>h?sH^GNcW+-S1@^Q4HegY{@0;n#wBB`WCr~Av9bI_7V6>A|xHK zDhWK-WGPOGdK_LtlAbA8k@k63cBCKk5cB`g82@@Q{_Q}(7zhT&ZIq?zfCt(nKR&D* z8tSj|a_mw9_RI%>xzAhUtL|Zn+LiE1DbsiwXBAe0p^2w=uqdylww| zX=@)|hV^2T!3zHmWdjB#pj?I2@B<)j4`2@V<`+#)Q~=)P#JPg?AHas6;@HO6%yc-nsIqQm>HvGvD*?`_H*^k-@3-frP7GEO`7k4qnEbgfd8*jex>XF9I^JWa@&bZkx96? zC@r9G)+B8c_lhhCW=tvZH8mz}o3^q2dGEPr%LX4)9M<2A94MSON*`yG!_ovcLrs0t zboGUHiGaXz_PTg;#BFn+*?c~9v5)Nb4?#}rlR*ru46Ff_3uQk2b;L0|mt8(288x}Z!p{PQ- z^QEP5E?+(%Oyc*@0FKpgU!c+@h}-u`(eNdfmdNk2Sn%d`K9;#y=S-8>jjcv1(?=4s zH14;~*u<~zztJMN#6S?eN*DEVeq-YSGNg}2m|H1i>-@(i8}y zfNoW6*6I~B_95Mj`c|fyrPKw&Oo8x9xjvhw!(>jv4 zjnN8^^_J+o7i0>C2diNL*dbFvK0z;E?m35UWtyl}Sg$8u$6(u}{uYLHkNcO+STIgo zfr#^H15+2BKNqop0s`02{H@oVN{?$Tl$@^TW~ma%zRFIcCE-nPv=99Ud+gImm=fLw zSSYiHv=fzpR=+4Z`N$`;4zcJ8(<w!-sl1Xy?-HZeI-mdWLc}cP2HWdmeqJld6uWK ziq4|+aF72%nm?S#UI9Hr(9-^l3g9jlvv7G{Eka5R=|cHBLOy~#(yz&ZfDQrc9U4_Y z-~i(OfF6@!K7AZ>@UV$ee+Z`eU%Ea3Mr@^H5QG%ZLb%t{ee6DaqH`OFw_Z=*1Q~!G z?mF)tVjjv<(3@NzP{7VWJpEW@n5{eiQ|6nsgCv)28iBy#dSo6Mp!#w5U90#uzR9M1K772T_L8%@jg^<={DE(fS=P~P(w$nTOhWi1r@&YB z4jRjF$>~<0mXmei>N-}rgT0SQ)pQ+W14S4584;5ye+a#Wa(CqBX%j~bJJTR3^+MX0 zG<0K28MfGodsia@h4r@P{Ez&;=NEE60^{qp$998vpHVg8_GDnO5WX;D z&LZf|aE)HpxV@*%sWEpRb94wOsmyfE6;mf|7=QWSE8NK?C2jEUc6M2W# zacr*lhMeu2pB+p2-}5@H@7<_t%vt9eJPEV}2u=??JJrMBY7{+|UNwC|T@Ni8-4>23 zvb=m#Zv8#bVnYSnVE|nLcA<+VD9B?Rb(2r%dTl@<6i3aXCXr3SGwB%ysFihR;x$;e zr!*szlwpXUJG4iXYCS&YbuPN>DkgR_ei2i>eFGUozi9lv}6aa}u-6AM23H&wGGWpYDjDG$C`ZbHJ1EwBk3?Yv;WC!c&1nAsOiN6b`H@!#L&||a_WDjT zP2|Xk8MUgMAE2{J+!@W?l||J#l0S3ssFJI(<lT5!FVUu#Xz!;^Tx#P!b=eNI8P;3pK4=Gb20(tSup`#ZSe&OSICt;+y;fnwWaF#3VG{$T-!=>b^x!UQ=tXqo+~ zz;7VsfG5`xscKKT^OY;{q3qzRV1H9<{)&t>PLg8rNG780`dcr@mDSOB)sCUPEz7$(YdW0c z{YCC6St_KX9trnrj_SAc;&|0vTjS2ACE}qyXwW&btsj+J5vwu6I4hOiXl$5hnss$k zJ;71>`i*<@j_%jm_8Iq@8Ci|c&pNkjXPx**m;CCJ7Yw}PBi)o2pUU=|6q>q$9~OCB zueDGhx;Lhu%S)S{MvQqn+#4?CRr{95nPYNLDJ!=kJ-!dz&U9q>Lu5B(7|&XNaw>1_ zaagSHl1_LBwtpf4x<{VI78h~1UG%U?u+Y5m`yCSxId?6anc3{zgEyfh(de-?pj4Hk zFMam=nBCmR@sK=k7K`fI)X>!M3N26syetjqFE7tlkjBkRz)#|o-7}kqe0=M z+BC0LgzKB}^SPI(yc#KQxpLlnvc58O=F8tYPXm%%+TWJ5xCAB4>aYy@g!FfTra z8K&?k$)%X^4r<8w3uvBV+t(MQGuhsCX%Ti2P?f2y(09|gRCC~JQQ2vJWu5lR(bpby z1)rN`R1ftD)dUHTYkpp+xe+=Z&hc?TFK)-LxMkd~5YBYk6{D80mp@L^+pzxPgfqU+ zEmc$YX3plFUCpqQ+@c;v93iuoGg?TfwR6cYda#7O07f)Logd`yM5G^H~ z<)-nK4{kS^;&-SiJ)7MWKP?Q`-O9WHZiennx;q+B`q!(|KuD{zwT*^OJh86FM6r-AvNeT!mV4oQ|bdFGiymU2R08spuSts zgWR|!Ta??CJ{tGt-3hMXCJRBd$CIBFmF|1Uq=>P4oak)Hy~U*^uv|@{v+~#{tsUi_6Bt1Z+w+@iU8=d83^Z?M z*OF~DGL-Fqr7kwsSAI*_d%0|Guhx@Y!-qw=-bMmt0nr_=ZH9L74N0ler++F_o8SaS zEO6N4aA3jdHR;cH{ z${Dlizv?+P9iM%=>c_GptH1pO6_SW>tYbVdARHeZ`!*}{{qVjlrm{Mlna5;UY0L0+ ztr}-5sP=?g^HYn98*5h0yQYsXl$Wh$isEM<2YMP{t^V+2B)>^7xFE%38N3=Gv%L$Y zwK=FkUjH zp~3Tk5G9y;!9v?5H~HeL2$PDb^_?+P$c!)_Tg9=4x&zC~BdHp>BwMGqp|{%- z)xICbRJ|B~Inb9y6s!6HFNcw-G15 zKYCYVxO0w%b^mk7=BE_}dR2KW>Z-UIx|}bucg7{$LTl`v8C2l6scN{$0klO_ zou6SL{xF;SM&w>C2euvO(o+X_mJiQx8vt?)8zx&PiE7Utqd!Zy=9cqFY9;MRB*h%eJ0a9$V1BWqtn#uY# z5)3(R?H6Gv&7~GTHcE*oJN)@xUi?oss*~QK=zGfyx(7*!!hJ>En*1(2WBmD~= z79xhMaYYmxKLi~in6XeCKSg5z-$&}n2V1uY1(^b&vK<)(WlcP2-zy9qdhCt zx7^ck=Sr3+c`%xPuK)!j96uQg{(95dXP4}NN;?k3p-of076ihsCF;{!V0qhx_o4IqqE&X;?SSMWpZIGUF_DC4rrU0q z7d3&s95d&IeC$FM4pp7(Rn$3nF>J>lW5)rz?n^c;(+^TX%S;b+qE}RXmslMi;)+&H zQ1{u$63RK{+7vwWb_qKNTf?!%#x`f;#GD+$MAA2KCTlZ06UDljo2eGPI`5-$??VXk zBPzEC%x&KMI>uzqPxZoq$rxH*&+YCn71R*YIa1=v!66`#cX4IhH?dEPoWbS^qlOgu zQIOVhLsyIm+`~ylJ$9Xv(brGbg-%sO*u`PTpKO#&7XWf}JFm;lPs#YC$&ZB>q zl2>oCcNKSKF8}#xWtY21m5;dm_ACw{x&>RC} zjy%3do}q2L70;R7NCPNum*F8pTr1St*`QTLN`WW2OJg5e!cUaAL$hLzo$g7KXZS^m z;YxHh?>NKe14_`^;hI8vz^mffMZN07tr7W!Mf@0SN*0!8xMw}v2c?p_`gP(4ske&o z)GfilR0`VWAa!q9?J_x$YO+a%3?lo+;sdlTF}5=`nJhuV*h7e=Z>P*^sz)w|lnRNM zs`TD7l>QP$jfpnk!HXHK24ysy9ljv6(tOv?Ij) z8rNT#AO$gR1u*RQvPr3k4REtw)ez7|zZ?GwDH+`!Te~IH_5$OA?S81NwBsN)c#DR! zL?ab`bPhP1xiiPod_)9>w{OQ~F*zD=!gi8;(gWTS5b(-IlZ-n@r+vn6_QootSp=*eHMtFj>nQ~zAGdf`@&;LUNq@U*VHs4b_YXiA|H-?% z#2*L3nlL9)Cx7f?rb`XE6Jcy}XHQ@%Ef$aDkgV=yg^38OCu-y^h4waJiy)rcE+_URD)}IG!bGD0CJvvxf zctEY6=my1!ZaVQv4V+3d#FAT5p&LV<@2;P04Pj-9mLxn~}NX&Y-cNdjI z>fbIFPL=B(by`(&S4I;*bY62lUCz-um6VTYc(B423OZ5=pIdfkg))uQl#`Rcet}I` z82i?XHmm+CX|mkwLa6bNs)e&>91(j23~sQ^TN$ifbbB6$-6mMGqC9hY!SW~ig7@11 z`(OR@^`!YGqH#`5r5ED{DCsD+FRirR@K0X6c;|?mm2#Vlb;RUOSQ18-)f+JDBqFd7 zflxUjS1QpWcchOB%o{eg_MCiEx#U}MT)um#h_$;(KNED}VoVn}ko7LXm2(E3d}hZ4 zYBc1pMwrJ8AEwM!9vLUq++s5sui4eTc<&(Ht4VS)1D&&t^NzdoJe#Ls*2H$ZXWGs{ z?q*=%Xv0H`*q<8N2+lwH;sp zK5&&kFcZKHgJdhiM;k}2&=cBLJm5QhE4)+eVK24qg6t%*$Lx+4v$m+8ZgS88;w@g|KiX>xL`2iB%c#rG@qG9RW z_|hAxuUI$f$Kbm!_;od-2zCj@sMg0xf<0d1x`Y9kW*&AJYgo z28~A%jilFwThv9+Wnxxk1TfjF0HS3CBW=63g$kiPg=J;C_dI~ebGF$%GIz&R@AMnN z_h82aoELG4C|hF8cG{;-;bP3VS@tQ|6~Rwu$)t?AosSs|LdepQzQCfh!PY)adz)h{ z0o>LH;kp(X)i*grUU_CZMn}C9KUSW;NhRxD>Qz((XAQG|#k*8U{?YkZ+M}=$ep*?C zj=0YD03W^KzSYpB?0KR0P0PxuBICzH@EECfR7%Ng2w94pBi+KcOIJEHx9w(X+KakjgKAW_bW^pi`}j1B@xM(<4ADiMC=KwUhUUy$<|>0%x%X@ez3omzdK(TE@%&^<(4Oe5w3y&0n^Zzf zDx5lwa1_mEWmpl@bbp42N6hRD+ zpU&_P^WWE1!k$nvFWeGL3!Ho_4Gymt`!HlkJXT9waN(9!!ZiS> zzY1$I~DAH&cN*vgsm3GT#6Y@4a+Tn(1C_?WdFu*rY;v zdwIC2!D(nVVHk8*O2(wI=A-amIPkq3=?$d!t8mh{^7ZK=EFlMRx+&i{Tqok~rr{0!&F&5~wD>sYI z@3s%HY)ugwYSKHVh0N1wos9v#vJ|H!>c;}Q0%TIEXrgEuPwI8hIoA%b}@jQA` zC>lA&ba47qdjM1|u&k4uz}76`sfy}TRVvUrN(w75-gYN&i8*mB)JfV)H*D!zN!m&0 z?VmV4X+HHlJslLF~|fC{V2%;^k5J0>fV$Ro{VYYFuxSyi*g@^->W(eoD(? zHilB;hv1j6k&~7s5MWJmDvU2RAAHHW*+U+1xC=*cYP30%% zH{_FYtR&pG^LQAwLL|QJ@rfytp<(Pz-6B)INuKBMP&d*$(Bu41l=r8`422`1g<}hz zkO2N1TUBynwtcNtZV#2S&n@r>tXFLNQw9hGN|k_bvc|Z?L>Z}EZy_(nR;+I(7e_#l ze0n!8r)*G>oR|R5t1AAG5lotI@3A6G0sJ1CmXvhukj2Y$k(Xg0z zBef@d;vq?efdGev>|-2uY;`BBhw+UjXM619_|??U1?-r-@Z@dzl9uiJz4`&c08- z>SNsuqxPX{)=+3#)74+01$j;#1WSg!f{HlB6Yk8cr^SRz&3ycdUd8WPDpiLT;a)uz z4}c~qzhox`g|~z@cFZO#<}@&qHn#sxo&; zuG;Ufwx5d}h_jXWjy|-%8$o(p%RXu}?@X84pn<$YcQl;y&_mIiNy$U&E|boa(~!_o zdP$iHt>K!?6cSZOb?G8l8wWP6{RPF;2eeM_ha5b2#vIN>`z{600hHEF`W}Mz;)Vb0 zo1fsDL8Wdq**EbM>uJAuwMC(Ry9+yx_1GM=%_?5~`<$$3Bj%MuKfAT39$Bbq&(Y#% z90j2(YMfI`$9~<+Yu0=HMJvY5zFH>U(d;1y(3wvZ&n?1ea>{Wtk};J;rqAy6-iHet z+;BxJAvO+^&q(HMlwfk|MQYnj-iY@cN0$)Q_2CW3CWy6UsPN-yb-Yd&%fzO_?T8%9 z@W#r?>Ku0n^wLrdwfaE3tsJe0M~BXIDy-PIyy#xf4d~wF9(;h;64T1zJK$GH!2BIm zoPcplFQ|8koWMfERv z^Q--_lY>D3p3RyE6!QDRCh(SF!*>okrRI)67_nWRIK;5&)`zD2mfWTJA zH31<7CyTt)MQ1xKRfTvN)Yk_??-Qd{|7O*;&-iN!QNfmfd4@* zFk!N(Mb51*wj{W-_mMtQ;K?3c25T1Tn5T}|nSVpGjLDp`4V#KxNDTMY*1N;qQ@=r( zM<@O=+W?#{T={5lx5&9T-nPEm(IwfK{yqdZ_%0+C3t9_5q?LCRS%3{H5-x)vCdm4J z=e*fb&Hllt+ECV-cFvC0_W1P_Nb?J_+ou-(YXJ=g?7wLYrrC-;bQG2r66~9D4JOFR3gky-fCoRY!mDCyGEvrsCV@a!Bi{%T&yqE~gE22}VmYQ9(y+C9&Shk}aL9b4{M@rqCQ(9TMq&G1 zWO{nJ+Xr906A*>0^#*@n`Rsg(;nE#P@9ZPnly_2+aZ*JTehv98C$vsEiMs}zD{2%E zCIo8&VhZw2;GWhHEk6~&^80Q2rwyr1_ngI-%L+10ZUK1!&p2n+zmD~tituz@3q-G_ z)^;2Fil$jQbdWiKg=Y<~nJNXc_eKE+Pvto&7Y6LsscgEd+<;;3D&Cd(uS3{>+-Z_o zK)&6L5RO`~M}OcLs3x{4cqR`cU_%CJ#{g`engYGI=0!lNE>GMpI6YNDl6WA!%RIN! z)vh?iP#J}TF$>#8Y&6;4x;V7#%*=fEY-}wIB_Qjocdf3qDKmN?+xg1KN-ov6QdWzc z>o^}3?myPrH2DC(z_EJqNLWS5TEQ#>_goBHwz3XKZPpKVE+lQ3zheKodaSSX1Y><= z28bo?u*|z#-^7;UWVN%Ohn@v^<bAQT-x*tyyE;W^%U=gtDE4 zF5CG>UAqzMYRR(Gkez`!KLM>db3=u`P9D1cV=;P<(Bm{9o^2-}xsG~!Zc#SL3W&9p zFPsx!X!5Eu`zKaU_l+DHa076}k2H^dl*`rXcNjnOAHrc56JI!boEv(C#HY9&yEh%6 zpT<_4ko?CWd^StxL7;Dc< z4z^jFys)3a9*&Pus#ahCk&@AMP=FY<;W=bUmz@k zN3rpRa(LL}ZSvSmRMU?i6AyyXFL2jU%YDjfD9PcI5H!G2HK;Vnl!zIgGnXI2xoAU_ zrDftA^8@a zDob>1L8W)LP5K&CKB!Ua_mMk_VX-pHJQTS#qS~J5FsI+A<0d`w8_j=-FOW8X|3ena zU#SDSIL#`}EQ4Rf($oS3+Il{-r0Zg_da64|ZPMPG5%})zzB|mjWs3E(n|}x$CPtO0 zsw!i_s(fTyEZS2S>U@af4ODYL}HyQym3h+3A%Ep|xL z(MGRAho0}cI3n|sscC8(A>6Z%4UN(7u0=;7(p=|?PP4l?`v9{(so^d%ej}(p=$lMo zwKd3?Hdr*!wZJx@)~naq1CoLfrQ%=1?B@l2ljXx zZ12%cbEGtO!oA?HY>M~C9#G$aHae(n4*ETZzYP_ORwN?aXdelouxY?KkM;llBgwgzA!^WNez zTrU)DWA7R|_eUIf=tSXx&AYJ=i`qnsjFktanJLlxyGr;UkqgKCpIKlpQbQ6*EklAP z>ObszV!KP`AChKnmSxypQ9FG9LTtpAG@z=l22t+0WqIlRuiZ)Ylym6|?J0TVPz4-5 zCe;ws2VFPThV5~elbIUn93z2h#Pwr)vl85em2Lo%m|DG4(cwM{x0@-eTTVUbhY({| z{^-R|-X0IOO*oV=_Jz+adav%0%cQkDg>}n-&>@hvyA4XsS&H0vi~j0&VUG;ELNoT`uU-JdFNl)9v0|_C7c+$; z5n}cKA8T(N7FGKGkIMj33MeIwfPj($B7(rEbSnr*OLs~4h_oP~bcuwtbcYJkEg;?9 z9Yg${VRhf`F7EpIUEhDWX6A6tdE(C39gl`bem4DE0b-pmqM|+=_gM-+eaYa04CqMeJq-hHjPGg^^GoSpuy*Bpt*M4E7kRwQ!zUhHt>W%F!t%$8TM zFluZ0vP%uKKZviWz7V>05JPLxIo-p0aQM)3KHS>zh2(AF#UKkB)zzp5s{978U7P`p zvcv61T3;f^%kGMCT1p;$wy{oiSK>F`4!>(*iZl=uZn9QM z*#_>z^0Hy@@JM+Uzq$q&?ZB1y#xLNsrEZ)^a!cL^#)}fxrS@sP@#bNDhj=$XN>sE< z@~^{o`nb0Gcnhnsa*ND()2x!F*xse1HW$RW>~#)*spLRG zKSKvH+P|p5|J`a(UPD;@#e9uK$!x}e9ZAZ%Bk0^)>A?CI=%%A`W>Vy0{NV7yApVr_ zwgKjxgI0Cq)*}#oU%Y+Ty>czq?KEMhENeOk5 z{D5|WEi&GhlB$kd7RMdIR z=t4>FIe64CkHB@(iVXGTTS4-lMeIu1@{V}Bu}shfV|D3?I}=Hi>1mqjky3L?M6|}X zSsV)W{QG)F60M-NNk)|ocq^ol@!Y}vBw;FM4>S+oU-`x_`Z>gVp@5F7GhxUJF5TA+ zm))7$VsetWFxTgu%1pjo&?X>z6oECn?M}vi)v`|arlpXm^Ua5;+MNgPDVi94?V&59 zH{50fXTI$wXSH4N4rIp^fIiV@a`&wMfEdBx4|?=5x-XmdZ4*qQ4V zX1fXQBx5@oK6^5MgORdpnWbPgZ`?IXCp#~{P}*#F%5`8V-e%lp*5Sn6&vUw!*Ynz2 zgX)Lm2LZ_AHnpBdqe0k5_eH;kK9dE7eifq=ePuxgpWyW_-&PWq#Fv39)+{ZRoF^8a zs-Q7%I~V%K=*FvYWf?ZCB~Pv$`jr>{zK?4c4>#2ol355Y>t)(i+h(ZF-5xQ{$=$EL z5Pj=ni&xV(^V(Y6Mw_=7H0hrlZp}1BbTmXTE=dlXRYXz_Ub}crHRtNb7dx-kZB86^ zLz_nTEy$Po-Yvd=YL_Zc-b1+@92I5i7y|<5H{6yt`V=*!jByXbbM-!u8*E@;-~SZT zQ>LEPer-uqJ%ufFtJ(zsa+X8~|rvNT>!>xR_K018l*KEE$7@$#Z z9(a-F{Og4)c>lCm8FXMy?7L;H>HytwTE*Um@M=r%K_-h84p&<^5zx-fHt&^{ovqv=KnNr7ME|x{V73b1_j`%~5>RM3l2j;=r&en0v#;s2Ze2 z9T#fMGo-%u8uO+|ioek6wP`QeUh|X^`9!XMV0EqCQKmA~3mmd#dAE%W7URw<@S z$hGaZ^;gG5OI+cNK_+{u>|*kkDHv!Wvwi25{OrCtLqZ>~l)u5@l`^1V?X8&kEV@w& z7m8;cVLiB;OU|QpL|izzyu%viN*hZVdHi(ucH~Lsh27C$`>KsTG2gA*H`k%%BQlN0 zPR2@()kDW}PL&3R?HPPatCB$Pf5>_LWiyiYHAbI==vMdRgV0{(VTtoP@C9*4ilo%W z?c1fbmuLF~O0fsZM|+QSKig!i@@~0_Y^9big6ReJ`SJ@fdFz^2P!2Bg%rnhiH>AAv z6HxNEoltu?W*%<3c@^nMF`VTIPn(abQED9$m9mk ztHryGM-O|;6H*jd=Cb1*h2k8)=-PIS-exL6{*>>0ly`9Nt5}Z*#v+{$rNy+oJo56d zT2vO&+^KH9h4f&-hhJB;)}pp}^qIcR-Ceds_`XqbAXPkOdtYat!!b|4tMsm}L|5Z+ zVVG*7M_BLO(amQ$9^Se#lH68R@kh>lqc`sa@np)R*horRRmBz0Z_@VNbJA$nkG4pf zUoX5HTP}^=xPo0N&C~2))DOG%x0U$mD}EeQ)K>c6lb!#kk$&@2TL$#i=7GswPzi^h zR1?n%uWy-@PWoa#QZA#iSG3Vg6wt>LTUFOqaNrKoq)}Nv=ro=*%JT-t78Y6x`t8bp z+Yl3;!U4DosxnAlPFO?b&$XY=)3}2%snLjGxnDvB6GCo8??c&oC(v$;n0b>1 zFD^T)3>ffHP`g9NG05IbTIx*m61m;V|2R9io9h?7EJ|bL8LNvnt-p!>Gco+ylRaG~ zZXx#+}L(eq*R{s+B2v{zML+ z%{S2s3iF#%Uf0#oW#9>)Af`WtN}*P1v`xoqm9QhbY-zguczUy`o;HiC5%~wM$RG$C z&2g>LtL{TFsN$-^iBPeHEmM*hZC7`mAc8ISuzJOuto~V{z@E7GS$)0ga{TRK5zo!J zE`kbRg7>fHu?0cKUfl5FCaoAG>5z=#dl@`vx}~BS?KI-VYSpo{R;WxFGVJQM5+t|m zFm>w~W48ito^E*C&0c`uQT@aJSPlj=MCRS@e(E-Qfq%`XJDW}Sp_6-E59w%mA|7%j zJByYtMaF`(S;b2wdMnAglP??0VPlz|RrR`*qD05pvKNhbV# z5`Wca|9v&~0igWY$-5T#{|_IEj{gRroqh|}-AcbdzyFq3Jl^1`JoOG^4F5sD|NW?+ z9>8z|LF_&ADY^eISHKz@MiD#7#*GQuax_88lN16CkflXqzZwrK9*EAVo)>eQ?|DP| zB^R`siAJ?;qPUZ3?5$3fVdJ)p;b_DMJ*X>d<<$Z`bm#IQgSy3JUGLhzs8hL}&>!6k zH@$-Pqv$vbbE%^pHE>aRdtDB;#-EV$f+=I%1-h$HtcMCj2?}iapcFcX7BY%<~j-soIqXsiHyw{3*_$|H#rNewMVWhWZTwt zyD9@xrnXf-=%tjOfy2xd`Nz~P8orY(D61KAT#jdU9r1lFbGVh&Zd6IVDOcP|^q|=g z@FOjxuN}TLQOGiiGo-TbGZ@K~1lleQ0+yrWr$Aq&-=2I&B3Lfvq^BUJQSf+-op&&h%Tz6T8$2BsH9L=J zFgFEPMK~IK&4Tm|fC2==#eqyvDt-C_PudT%0z_BjMK2~YgCvG8kZIdE<~x&Fh)xEW z_Y%sj{Xw9`m0wgq7G3`}*KZHW;uy$qi{n-Y;r|po3GY!HMORJQ6OAk_Id>w+WONJD z>Zf0Py=`PAGynGbLqQ;`P0~A^PfZO>GSfL6!TUK>U20|ZXnb3jj-calcFJB*ZP+_2 zrYcs^nfW71IMOoC9NJ}kBNR+|s=>8`_(Rtq&V27J5dX5mzzf|603xt_(55ZY*JqI% zSCK1|iQ;kaR}52i|Gwq`O_2?Z+1h;`N*Jg29GE5_pZ>`3 z8?UxC;`dZxDl}3Bpz|kN-S<%vYnB`c{53YHZKBR!&)5!MIS{QAW!&(dFCP48dC?W< z`?r{LL=oDM0@Tf8gY{;X(WV@x6ZyI;j2qbH9oS9nGhp=iA8J}0DAf-Wn{Tg$sbpWL zG!d$**m~7PvzdRAUKIhgAWn8d8Q65#&r0i|8icdR2enM1_}f7T&K8G*&(%lN zSFe)%%F8g2a<9H#KvxUS!2Ml4WAJb+K8&^TB?mK$9$*%b-cX&h=f;jFd5QBi9kqMS zb%;xnqNIat;e^B%a_Sty3_a`F1Jpqh83SRro}it5{j7U_=Qjg-7{zh{r7h?`AjGsb z+!S9LUeO?3T~FET7zTR&k^~zsgJ7I7A~B;1syqE^Xj59JT43&#;WO4;j#g2cypFcQ zcZCSEZyf7zv}v{cmh@DFz{+A_sp5cx-b;egZ*3oFFst_q{>bG6mfZWUcGRM@nyYSt z3zZGYwq+OCs5h6bc|W|@HMol?#k4t6)yyDD>mEIyH?YLGY{Jpt(^4cSc{1@dAsHP% zxyJI&rByh{|0jdPP{vK?C8W|WmDWhIxr9dk8%QtP0U5PxBkv+SZVg$LU+yc5KE|4! zf2^T$lbwG8?K=hHm(>X9xQ=~-yPuStgg+j4xfdx+WYc#bvU}9i_0)63egKHDSz1s+ z_-sNO^pQh{jFz1or_WY4l=YAvvSbOoE=zMRYoi~BQOn{oT!!T+9witBe0LXG?V895 zo)v%svHPDqs7uie^g6MITy~3B)u)B9zfz?0Ws_7&wkKo7(A^CpX8*Ks0a3MzFzN6! zYi_5zsuuQm3i=eTyVU4U?Ua8pFupYoyTFM$XhH&7?gpT&l)^{STh;Lrfa7oxqvIgD z%FgC?)EX36wLZSy2=@*n4T#m1?1SUsXy+u-}JvuEhRaJ*~8$)#^yNZ8B0rlD3eI6GLO*K=F(CHuZ1a7Uoym^zci=o_nO zpWu+2o`dSjV0g>)V99p!b!5=-vudb_Wd|fw1djN1rUtJBa9()c8P3xG} zHsMu86ACIVkOFcf6bh%QLBP8%@)mbim)p_7G9hV*QI zI+1nceA)L^t&Af~JMcw3I(|h>r_6*b zy)Gd=MH-1Vl$}3-M+(SQksv}~b<$sBXWwh>>R+H0f6JIhQ)bfwT@e3%J3jzI@g#XZ;o< zTm#QKe!-%#c>7>dIhCZhvQhmhJWh|7@H_26$I&yN@mJy4KQ5}>MLkM>W!*iara#+1 z;@K^!3`mch3P>|-sBSnqesqlp(aCaH|MB!f|4irftAuHN+y0a zOOZM<8Y@IKx)eh9p3Vb5yM}V;V76J^g1X#zx5sN2i88I^X{Tt0&B1xzM2l#tW*`fL zYc3YMnl(O?o+{aaJc)Ii?b>A_(H1f*oVGQ1w`~v53Qu|q!9cM}uEiAN6P-q$aP!f4 z=A*U5b%iNM-qEm`e+SPnmBz$Q5(QG0;Ts|5ip!hS!?!AK>Ta!~XNcNU;iLEoY9>2f z-$9nS^;Ili;7w^iwkRDy_7f6NDXgn^MG8D0@17(sBoJNappn9P@X6yj|2!u)%=R*1 zAKrU;q$qw*G$od?-DHuB4hbpwBfgpLhLPW_W4b?hiGd&1S~zHoV;_9`kjo7kt+BZ4 zbO4(u$2PFE#Hvs)F9e5Z-;s5C&!wX`LXS3Oa9=9~?T0-e>jQ~4w)-L=zp_0gH2r8 z`<6IJ*vg(Lh8LC3XgD6Yc08ZlT_JHBJUbo=)VHnU_D9%*cCP=%{J@dafN+Y=*m=KJO17wgjqAouc z8$qa25K4(rJ^g;JtR``ws1qP|dMl#sxu^r&QDAvZFYh_i#a7i889r9{J`flLZ%=-P zOX5>Lgg1>74aR}56tWNHp}n7sz#K8QUQ?`RV7P_sf8OGjb6!rZ`>`AU(B_~+7ttKc z@PweEP;S0-cI6VuH%-M@LomMVHVnhchlQb!*T!wY3Ak_6Yk%^nE>nRcg==gx&d3pH zGhyItQ2&CCU}2yRq9f$O=D%1jzy|r*g-Lh}GYjc*>spgD4vjXmd7uDd^v^HN(G6>< za1P(goJYl+`PzkxGQiZaRb|dIJVT!Qi^F>GV-X1D%Ij{;zdZkMulvi_0hxq@V5cyd zn-}2{3p;~+PN20M3)Kh59zTL^$UV}XT!{=(* zt_R08O8$tKoV9ig1~8E!BRhGOz2$U`G7n|DZnx`M)wvU!ksncqtw?@=OujX{G0(iM zCx{+14qwU=iTapQ-g~mz^(xhuL-I93C*6UWwYKUYT5?*@LEId7M_J)nc>5l8@hUrV zS=A41%%`87Mz!owR#bQT9#?0#>>`h*9j3X~mD&%;NL+$Kle8L%R$V`^kK!DDUryHmzh-~IZ z{%fPIv#hAU{Z_!jc28Io{ZZLR7KT-0!AA$LfT2`(J&2b7PTKZN(sjC1SqF}-?2;R_ z{X8-RhdsS^&FkSH)|L(sa|2I+Ww(5xX$6--7?#7TQMBdA2n^V|3zFCL+~?I^;ua9Y zs0sI0{Bl?-Z!+`54PvAzdVkalnwP7k;3Nm`(q5y>N#0>t0YFJ9MQq9R#HB{HUL>^s zA>Hub*0^OW6;0e{JcxwG;?Ud;kAivOko&LQPiPckUYmqhm05cc9H~)lL8u={`C_=0 zBw0(rV)LZ17v7#EZJ6~-2keAcpUmM!Gn62m^@u+bC;YL)9fYut{UgZ%eHr02Hy<8IyCtog zQ2g<}D_huu#EJNG$#@{9xZF%4 z$?AO>CELx->YMu)k7w12!*Om?EB5ynxgpAR{xQ^3CWFZVg=B$=!SRdhzv4syaD!m+ zmWcH<&qb#;$6z&AjeU&n-mE7eFjAHWWoh+o;K@01Z!gx#A!EqlI0Z@0n%p@EGX_xG z*NA8SG!}nPe?v1M#lw%()f0_-ye&rp8gw`m9E-~c7{R7rMc)cq3F-2xP=v!Cg_?KT z6B|0t(4T?0{_&;)2H@Bb8Y=zGIQY-6Sr|HDuAF>L1x19-K>pyOI!d&I#xtzpt}(6& zxH4>}XPS~@chP|@e3xny|M%v3_M)NVr`O!OL;b{bh{6rJP$+$i(>jxwZWybuvjFS+ zmPud!#)vivcRxCob=K&3V0E?SU5n-jP7G}w3J8-RTz9!kKyHq`L_Ox0d$M1E*I!^) z?#g*J&!SV6_lwVv+33?$BZTq&iD)mQrH@^P=g8e^mH+7dqbXB=mSVh@4du(XY!gpI zInFRv7WfJKt2@Coh4oV}xOVycGh=lGvkS47?0-&yaLbCvs+bYNUgDctEQsu5jWS0g z%>wBS$|bESAR^EqIwsLv6}GOPlwHJs{C0!SKRXXJCV699ME>~q&*G&~%eaY(P59jFU55HKx3rY;Al8>;K}(rUVf+zXqG z+o0=El8j+agp=Z@e1A!6bD@=(P!5FIR z);kRWxL+T%{F?tUkE-5mqLusMK)TnYAsm;U7k7Z1_kwh{Cgoi%lcJngBVlKeY6vVs zZnvP!1aVn470s|nBQN6M;N%AqaAUbIQJ3_feP)+MfSl83V6$7{tlSjB?xT2vSGFw5 zA%EW;??<2kQ$w?NNKAL!rn;AmjlQD6fLGpe{*UOX=E_hS-4=3vvUHxh&I@8DzSES5 zUx}k1Vpu+5s3j1YR#NHs4zU*1_q-vXDNFd&%-}|!i3Xl@4Zg7dtWNhBp1wSAXP+Z3g|`Pe~5n zqo$hWq`L*byQ3?K#mlQ3gy8Ju##9)?SYq`^=t2)#lkc7_cKR5aq+ZiLNEB{r zO)Zdd7(1vKgI_=bOT;@>XezNoCt^pW#RKFFJQqoRfmZ+2-thmn9DfewtlPLjjA*vt z7U_Q}CMfh(M19zU7JVbrjoj&_!69pT`K zP)&TnXyQ=Xd8DSpTJ)}vf;Rbb9Q}1P5cBWxB^o9v9`--{a+L1q(YqaWKGEe76K%WT zUr^&%AkJn%8(54p8eXv&s-7a528i`6mQYP=Rf4sL$2m1pq1H8R&B19L{4<+!J_--65HJ)*viMf4gEbC`kF5~VYj z`L6KZqH{0#s%}_M8hlBwfH+}$myt0;fftyz|0AKleS#ukX4;S*S(+*qI`w+jHjKlO z-#YW;H(>j`+5E`1J@2K1&%2mEYg<77c+hmGuES~osAJ!n z3J1z36;0D{*vWh64pSMzM>MjU5Ui!1X*@~Lan<x(wqI+7IFFwiCrk@;W1U! zbdrgg^9rYA^>KDLPY+wyc;U`@-a0>849uih@w$`tk=UBP$6>ydZe{~XPN6HLrXwrK zo-7^DGac@!;wG^XTHXu6Hsj`wzBA_un?GbS~Q%e&_i zokgNp$xP--MnneYp`4~gGba`Fr9%ar61NT7_A7V0@9I0Wm(K2wOl=K4TXm2=$m#O8 zu3Y`FnwM(aLdawPQ4#)eij|#21arW?b zJ<{nb8y>7wr8ARMM;^Bu95m<2`BT4Gj=W5u&StA@$#Cx8zjUI9?O~XNExaH57;Ee* z|72FEs%qxAY3&ZuMI@9Enh$NJ>u)s=$mijzYTglKNbCTu7%gk<+{MeQN8ZhRqVo8U z=zd9Vk~aZ(8~SX|(4wR)eS%$eiU}ViCmcH3x9Dq60b-dsHF>&}3~HK!J9{LC9o(&wA=Ck!D7d15H3FG? znuaAFL;TemQMZ=+_0oyWLP7;1somWhnl_@tW6g!4T=L1}gZA~ph;@U0m?gC6&PH|H z$#_|FYH_6RCf)nlp9th7faqKZO4l?cQ>>2AF4Fk0d&AvIDrZ^FS{xL0H`xA8ObCYX zl!;RupVTB>@yF#g>S~+EkJYv9mNCndbczUwjp@H#9oWBWr%^{pzmb@cJ(4l`uGOAH zN!#PNov6*Da>*{m(Mms&{zyAdu8(6lhUHymwgz2;>^nyERuO?$i}iMlH*VZ6d7yBq zO2+=v00T$w1+LPb$8h~23d#Vx{kv~RSBmOP&}mu?2CLlO8%4LsoFSZl2y7q!8s6>A zNTeu9t}oYEH-LZqj!22qP0tc`=K!3J0}j%ut`TXG=iphgA;R3!?7{hFiL z=3Vq!rLpCm`^J(l@n~;>yg-Gq8&1BlMrF&wpg_qdx2A9>%eKtd@_7=7wV%>yET(GO zEUK3sPdG8an^0iYA9@2N?tjj?Ea?q(c_ps;g$wRjA8qS zcel67$S$xmLz{&nIhKB-J#heGi#@hA@h{yV|ru zQFTw?+l8B`F~WvhO6bt zF|Uw~r1U>|I39Sn(O>+EiDmSVG^_Gf!W|n~-qp~7ImpRTmo3uCIc69xCe_PZlm6ZY z7Z$U6zCG!NU{;lWZuzJ;cNGD46A}~3Tv7#-z8@3BGWG1ZWyM*PSC{9A(@J^Y9w;~Ay zy;d>d;pndSqoC>eRfVO6pc#-*&lU43GOJk5i1qN>Qx=b3tRhsJiuHB_?jL*pi~l(X zsnpQSADy$?Q>EZ&CF5wC`hr6lWu_PXkn1+E(X98E$e2xV2_7{B%G~5=K@TP8eIzM_ z$692bD`#p}MF{QicXyOoq;Yw7AGeDvTEq)qz0<-S$6hMzm0vp^gi4rjczz*_E4c(Wm2A_`(+3BmzU<` ziI(1@Vd*{Gb!{J>I#SM)x*(lk>?+AK+)IRCUU>O=U~{E^fsbdIXv2MQL5L+E!Rb@W zJ0wnJJ;Vx>r9)oTv8cj zYE|}o{zIOePQ~(aiTU@l#tCI!R*D^Qx)cjn}oH4+mq}`vR z-NEwur|J4bIwEGSMf;)Od}~n6=_4{Ddv{CjJ1P0Kg!Eqj7Pfrd0_pZ5`ok|f&(W5P z=~~*jnanJza~vB*Pzi<@N$8{JZC_j>X4cmIurtguNQ*CT-^)kP8vj&(@F9=Dpi#0g zwvLG7z07VC5*uEuWYGg-GR^a%RbS{v8JN{f+!%szSEeFZQ9EPRNRzKFjM4_AWrr6OyK;Rpg?S@9II zyWju|-|qiRKK3BmTrc7tNousOqZsE!*lmR|;$59Bc)tOuNxoUr1z!3ach`KLt=t(^ zcu!SfK74J^CH71BQQKGk06tTvqd0j6)ej$w3837ctkT$8BMdwD^Og?vT~w~3kiVMI zPmNE{?bUZ~$nU_9lwH$IxWI)uqDxnUqrxJJq_q3{#A&c*el>Fn)Iq@-L0s-rB?lCt;w^BMXq8L44 z!ktc~+yyzqY{oh9KnGBfZ{ zft=)REWW9>D?NhBqYKp=0!>K1RXsg5BUN)C3@SkhDR zVXjBEIhI*)5B1B$Cl!q#v(XB|7(V)VzoK~=&2^Gucf4(f6Ga*ore`Sa`G`zqh_1NV zAHUH8!;`zMkf>jaCWICBGQZO364wDa&xv5Mp{>HYsM&uZBoU^r1L02?wj6B;`r zdW#Ha$wYv{{+b+~i}~d1VNEXJd`c6;s#06RK3x3;r~mN4Vo+eMd7a*@Ut_N8H*$wE z+IOT==6mA|#9O#oEu-Q*s^8q&4;dxFWMC>F`sPa>H=98AGH&)#ajz%j-awgi9E`oB z5Xw6pefXa0vwAf>!HV;maN)({-IZ&s>>6#k0CK%s-VxZhSE90doY}pYMAt)Asz7z5 z{MkE5e{i!!Fgm)bGiP&9)hy=fuL%y<=T!~a^J+`FgR}Usaxg)=u z`8633^Su1+UOeifWDUcnxq#~}RO8vpIU8(1o~xnDt|efR=>apf9c4wsr9M3)tH6z! zGbUn;ElJ;M>pm4fq*~o+H+`|`KL7aQ_!1g5iYrwR8%!YU7#&o^PQt15Y&uQ~VilKsd1g_ma1 z0if|QC-$5BM;2;R4kwwT@7C9_c5EKK8hEp#%gr15qZhzH$Q=cpm*nQ&bC-qKnUu}B zWhjnChG=p`E5E=Qs}$E?bn}wz3#1y^ROAz4qP}>JK`G8EQ{8Cv5!vO%dXryHQr{gA z)DTIRuGd)I$s3IvNR>Hw;ncF+VP6(&TyNm)cJO&VKdV8ZxN&)dy7d6v&L~PxrWkao zu^_&VY;%Zu5`%Nx1C-J*3E;3l_2Az>;R?VwmZsj1-Q)Vg`hXoo*H=&o`y=U8=bXDI zG7>-04{z)914~I}4C3UqoN8$J8W-_2s0=EDeTUrj1F#9Hkn!ijEV^^Ay@}Cj?&sd~pSkVt`cFYopHj;X*<~ zUvc#1aF?=|2J7y}o%ZiI7h-N#@r|uyVS1A87+v>10s>x5hu+|BbDX|RcZBJaR{>^f zuTNNqkRQvy*@~BK8g^)YwxfQq(a(znJw!1Bo&VA5S((A|oXSyHCB3 zPa@#Ew3Q}@X_Uq*@GT1Et=ktb8PB_cvKcJn`K|lM@6yq~Qn#jglojQqR+nrPm#H%| zbde|o#b$fdf312`^={*#ouofSo@~YpG5b*=+@a?gKaqFD+brOPI&{(B2&(8?6(i@? z5flDdu2Zc*h*Yh*H?q`6t96vw$6Y?tH;=0D4EQkRhJQ;ep_g$*r&Uc*$GYdWNgU3y zx0q~-iZcjR2y^>j9dpScny(&PtmM-C*>EGY4}yPpZos?rUx*1oW!BUkhHpKj4|Ywg zGSumCdxxmep`RHYhz#X7?*vN^hCiDoW-{md4TyW@;sji{D%W_ z_U%6&d6V$lik*c2%x>mMzHx7a(TQDLtTvWb%giGA)uX@+fLqgQ?17oim^>ys|sa?EAmipLA8L9Bb3(33OA9qtsn& zCS;8>70fOQA4vOCh~a9$Ua=hAKQLqsY5bZJb&KVRtzn~RMyI-#$d}uu?7%C)hEOV% zSxpnNcD*(XQwT_I9(lXswiJN^R~%FJ?Y!an=Szj zILld#d;CvhG#sqJX$Pnqfo=qupdWY$%i0UK6vtxfyJb(iy~x#*${eFJqzSK8ZM0$X~I*`l!wZk%fw$A*bo*XAF)O z)0xf1lRU|{I(6w0X_d&gzAZ6otBq}vtAARjN-aNVN=MHRp@dc$d`&nH7&*-(!0zi?v@u$Bf(wz0` zzx+1$wq|2mBYS8@h}DUoA&W$ya_Ky=w$O;;4k2%*_hJGmIBifGhTMfua9645aHlC; zmBpL&^(gIRRs+F|v&4944Az6QX<$tmR?#P|g@{l74#EG8{(tq=!V2{uZm1{U_UvW& z--7(@lTW_8%E|QOZb>IE5;SqQaWhFv*Sf}wu$UU?Jke3*iP4dwf>d$oyoc^NIE)PK z7jx?H1gl(D^YqVBjNhD@H8Y#4mw0@3IU5mBEH{EeHBvKZaq0Iwi6Cr;cPb zjrH8s8&h6T>9IR}tQJram3R3NP-XNM!|lYAJ>m!&=zH}))?JHvjkLJ`mXTLR-{HV& zUqqk!mHB7Wls6b(+RV`YNK1SIqbwaQvmje*zV&J!XtTTz9aDyfL)kJ%K*Mz_oAhlF4>X zxIcBRn&XE1hGOz6bF97~|C_2@lVGWH=dJ_nUDdKxs@YBU>Z95H(;S_aHLb}KVF9NTTLm1n*Zm_yO;77MgC*ACh z!MN6O-0s(<8=Bd0Q8#?Bb6rNjmUyR=onYK!hP1m`p+ZbUgao37!MP_)dAyR-byPza zzPO*Zu_ysLf`kuv+D0H`b*<<12*CU>8!#&{M0_2cUdvJ)#Viy}!fxs*SzbBSX~O`NO5nW;^2wmZ zpk4M(F(XSJ^>*IqZHM4ay%)p=Woj?6!R<7#oXow{E{SGAlB9>q6%8mH0~fe%iU-Mq zBpnr)--b$fWvgF7!#%^EkvhE?a-%v~DcL>?8Q zz`Sr|Sqs>3V~Tw$G>TPFNg1J2pGP@&hm!BoTo2@kR%3NK+s;;_P^(`uT0+;4+#EhD zOnkOceaf>i6m(UsS&?`=J#EM%Iz(>-LCwy?$cN*h(s~>qeMO6D&CGZi+R93*9diR1 zjx`tnKmLeuUe^Yl_8|zUKNT*zX7;`$takLAl`wRQ$*HVY)7YGj7YfLL79&Qxy+B(k zgq=?DJBv49w)Aa6JO+g&ZAk!AhFts5(U!Lihv{6CE&@gQ4hQI{IE3^2AFtZ~mw<;R zq5?lQ1q%MEbbZESzPIsRCs-69XiWL$!P#!kUkTz5(g$!vyt1o^V>D6P8^=5EQTjkkPiU3hO*4zP4{E`8oy&;ad=d<;_zlxQpx|Wwv8L%;GF|XZGVSqAu1fHKny} zrV+mgYn-)y!|2Xchbde3-BR>=fLAk7kKZ{v9B|?-;){X&Z=OqYIl6%$#BsuOqOyY= zd*vn|_p{_t86slR$NzsQ*F5VvFcuW$q-#-wNx6j&s!d=?*r8Xxn|H7XOr2NAdG)Ai z?aw%yYZ@0QW#(IcT8L_S)Xlq*_Oamn8 z1nXM-{7Lq=Il&$ASWcs|+5UaKm`k~~!PD5->uyJlxG<_U^Lal%0q#y0Xeim&b&2It zy~Im*`q~P$5s2-n9ZOXOu}i96Jzf$Ty|}bHo`FU5trQ%3ac4Bn(0hUV^ewV+$MJsQ z6{64JMByVQL<7_`R$;M*=j#Pr*afLNAyNn7lvN-0>bCegU8(#nJ^4nlZ&T+l>u|8~ z27|PVvv%n8w_L)#IQSc^KD?o_!<8ly)-I6^T3x~3oa$#i2#4(SPUvNns@GM0J%)*I zj49HGW`+D(uXOkM99nE=F$&Wmxsw6QJOaT=E!IrnT~A;qYMY@=sn$B(Uit-7u!ik4 zMhWRYOH2wKPoOq5##9~)WIBEVZT0OA*1pinY=}ST{XzhuG%RxS<0>m^w>#X{Do6gD1><}Hr@M%9mq`P$0J9(5aimt@mdgzLX^Q73N*?d zR;KdiyL57OtOVUCj<@Fqu5b+DUttEte0P0LGGx5Oh#ClaN;5XRjf>zhUnF@OFR-1C zAV}`%uP})3<|oV^3#ee{64*pQv$;y?;H*_;#$gx%$hn}dw7h@MjQvkT6Ua6EyY_FM z1A63EfaMC&v{I>+^nR6i*NH`@f+cmLtw!7oWJV7D6%EcZgAbkJnJKTt49^Sc`Ct(7 z{NZP&5(Hc)(Gpzn$Hw=3j`lz&$l^Zxog75s0oWH>70rq`BJ}!`BdL3I_&f|>^HJVX za{yWip|OY}R>R*xmWrH71d$7$k@iX%t1fyul*`OPAr@S+I*G(C4f{2)uJ|Kpq8o=O z#aS$a_>IaJG8^@z)3c>GY*b0vKu|!)08Vz*mvHKjL_O#uRF>jd;XZ=40z8S&yXa_* z=PJ`~AgqfybpY55lXe0LRCY>doJISdVMcNMB4+Cx>#|>vI#eHT*uV~f#{qv>Q0ptQz zMb#VB3e9P34J*3RcefD>L?j-QvC#5<{bmI1Eh>fPc z>`H~}1RH)tx{M~M{7w~3{A6xb0AGAEE<4w4UyN-WlC|u%>!d!6QvkbQR_&n;o64sY z-CITf2`;3SafhHaI<+=lIo&SUB*7R*-6VmI!vAI@6(#Kiv{{Q(~pj^VLB}@CnFXh)iE(B@9+OzjMCM<=M9!4cS1~KN3 zTM{48(rAJNVH+E-!UJz#9-da?Y-0~KIibBD!~wy;pJUw*>8hw!s>-x}-ij1snDT+L z!IJGyeCDsl(EkD?{~}fYGAe-WUbC$tAF?5u0X_a&P!ZDm>dp4xEue-QK%W#D`L!|T zCA7c`wen{#-JAk~n=W_$-f?%oTxlM>Zwne5tvs7JE7wQggZgIgqQ#|awwi-f0^gB# zsu{@QaCep1v!RLjR};7#vK!Wim~gs5ftk`!5NRNbhkjE$#YiSE+qd6}S3P#ed-7pS zt#3%}s+I9Uo8RanLRW>*tOXkLmsuBrxM5Yyv2ES??=Tfh#neIaZpn~qLY`K@VCE!9 zt~!;fKGijE9Mv^L@$RgK;4lxrU(fb~57|=w2tpER0MNZ&6%eM{?z3XX+tF7659ijn z8U}epY3y)Qky2V$+c^CMt)8_p08c%hD;D;|KHlFkSM0S9Zf8DOZ5rsa)dqM*t&(Q! z;N@ks717bz1~u{) zc&TnDXx0K9Q88PM_(&-7R8C|;bp~JaJ;-o$Zv7>#;}7-yV>xIaP{}-cnCO!HD(U6i zaLlG(A_nLb4Xec%$_0lq^2AFxy^S@*eA$qQ`z#cAEwC$?Nn7Yt1xxEtNE_xWY# zcfc`+sM@U`LX$|uxko7F6ny8wmw~CNADAQUld%WMif_D5b{8v0#{2!53i5S)#PZNf zX@c&;qQlixct(6ykg>rY5=Ic~$!=U}xB?TzoLW@G|D;HClCo8%izgYV8Frlu`Pn-l z&VNk%uj~sr6AD4eF1*I&%x|%LP!!?*TI@&s9vg2@(9xGXu{&@5L;p*Jl8wa#&ZZm* zs44|9xe=8e?5y105nfWKGPWb29SI>4{~u*n9T(NswXXw6sem+6f`Ukibc0Bjf`Bvv z3J6GdIVvG3qI611cgF})(%{e~-QD@^LA_oT?|r|2_zlc3XP>oKJnLC&?bDQ*V`aji za2Xv0c`;}}QdXYTA`4Tq?l%X}o`&+IeI25gOB}lJ7b4}lvhpRj);3*Ip>6^k6{iZF z@ju72*0I5E8`&s#^}l#zp^GR4vv5(A@Ert!i4SHv#?1Z#6f5FR%@+`fmo0Db{~oDU zAtRYP?+4;BP!ohNJmwo{X8Ypr4-PG2rCjCti}KYusM)>2Wn1Iaj1G|rJ}VF6gz>x# zmct-npG2<@8hg@mDZ%1$E5JJrks2dHcykSvej_LrBHlOZ9CFw zC_0$-2ipMjk;dTzd_MQ8Z900r#g|*jD_M7=?U;E2Daw|cn8=c^O6xq6d3}reW)D;T zID6;o%PZsXV>N-=E7U5vfIy(e40@z4))zDQ{IJvVOh`wIMlvB5N(H(O+GdOFvzTqaL=2@Eb0 zbSMMfVUH{2ua1!_qY;WLI4>fJdc%)Y(ucviaOMf*=DMl_pA|2!9SG#`205wxO_zXAxw4Jq^ zF_2{uNqpIbEjYxDp=DFFaZi&{9ob(wc5$etgGtm4gpkCx$o7N9n6D6 z(0cFO`f@OTqi`Um+up6V#^fj#0}+l#H=;1Noc7oEp7DS%ZV%H8I@@x9+uH_E(Yg7KH(Ob-kT;vi<%Sd6==4=p`fFxFz z|J^cA6+6@)qPR)k`h_a-st+?0u_2h~260X3CQ7$yufoubRf${vJx|$__8QO)9%k!3 zVeBZKuxPJSe2#svfWI<}GwiZC6(ZB6Vpk=EpyL-iZBDCH40*HdPNh(d3v~(d+>pG6 zYDE1?0=nOQRG(V=kc#n0C!c~y|7$a4b+{^mMKL5+(4o8YieZ9_3AmJxq!_xA8!n{%?f>sR!nw3~nW7N{;U`7R}T{ z+PlaXaPEJuq$oC8RZ4u`aygF(%zM5-D~B`XAF`|X?aAH(Y&B&&=oca181#+?FJHpY z=w6?B5IviK6oey0xdn;W=h}z%R(-nS1z@ZmAcoIr%JdwDexIyg#U%nQ*|$U=A-?D* zEBu#V%@y~q^Aer?hW>;`uK~Ynj(6Ys|8XRj2+DBP2J7r&M45Wgv_qBR{y}$bjcKJXe)8t>_l^8TM`IO%URg`k zocqK3zkD3=>x|s!`0Q0%eY>boFkG5LP<-{UGPfhA_0Z3bz9Ktu2BOBJ?1BwOV zj*^Ylue;bPs}`hqo96xkxL=of1&h9^tIC!tYp3EpQuyLzB4IEQwWVK0vs@Pf`tM*e zs2?#KP2b)!AW>)u2ea=*Z)7;B%nAs5brBOPUz4aT*seeVq7BzoX&l$JW?2rC+VTs^b8Op*!Y8JNzgsvjC`P<$1W;&y~zn^Rz^j0;U< zEMJ+vZR3nd_er_qL<^u?7zdwBQ-#xSestx)%V}@h=|fCqd*O z$iZTZT~m6yeT`DPwO*Tpu>K$Jp%JIJIr`zgacOdh{LNh&Zik@n zN6SqhgD!waym!P$bP25JYO@h(Ux?^u}N+{c%P|kje?RFkI5Oa9} zxzf`4hG*w&QV^{}2Ws$xG7M|pxdaaQ%GoDa@;{A;o_1@r@;Wch!R66J#d_mtZX+~M zUMDchsCpY|>3Y?}TJxYLL0*1Ncd##BX)rF;YA3Lks?zoWjl%ftP)2=;p%H)Y3 zr%fZ~&9E=dbcS;GL_ZRxA<^@;E*IJprO@wg5@4*Q%!QlUGVf<=3fii(b4agWQVSL4 zeEHM9)zhsMJ9SgE+prn!7Oc2laSmj`)4ycwfvGLWBd0+i9vgyY(r&lAZ=+r#K$-v2 z_8veFbfOEW{SrGbg-lSYcN^L{N)6r}3US=ks~02WIUjVnWB0>?^-rflebfeA;i{V- zqKg{=D{vWwI`VNDKkfaCG|(Y*=vaaDpMrb)l)(U6Wt8DnIsSaDSz(gr6jD z0G=>;LCxA3^ooKp*ZEIJxh7Ej#*k;q*GuWoeWyJTi_~H;@A~9cafrffdAQb=o^DGe zn6i_|8-~*3$bui?4{rX+{iD9OZTo|+qjBCgnH+_EuR)x*#_P?RKD^cVe8ED9Ltu>D zE{>A^A76VSfbTzM%pqt=sTBj((PftI;?n#dP-lO{Wq%m6}Fg)L~VgR=fJI*zzI)y|Ah zZ+!4dx583!$E5zxF|(iC7NXG~1l%jr1vH9(ygMz18?`c=)G|y^?PApHg{7^SgeErf z_m(@CKDR+jhn6Hzuz2KN#i;1=S-U%Gh;EJ_mR%tks|y!o zqUQh^l_8v~6OW|w&F2U$;X-`qIAO6Js3-a2xX5QM&$0V+)bwJJ3ep=3#j2oz^3L7M zpW$i84z>Cb0}~dG9ITO?2|rTDpONPf`bwX!-L2+-4y*mV-?6BW^+oQhpy9r6i_a;% zPWH+3fiI%2^Qo!jbxZyDwvvq|^zYn}O|D&8c~zFB>x1jip`@}5U+s8QPMn@2d_f}b z+Zf4E0b`F~nr&PK9Dyp(8 zCdX*RSD&+8U>D6eWPfz9^x5_A2!7(IX81vhawsLd+^10p$UV7dFl(#uS-XqfP1iw{ z?K5FR(7pUX*5=z=NXbV{wFIY9M&?o&6H%|#YsElrlXbC|cC#}m-l! zmvFErjW{X1CW7s;PS1nCcKyXd3LL`}xGpr1W3kP3oY_C)%Kp_vBs_#NDk;#8mwRSb zg}lBT!anFH$OWU7i^cW}j&IoqK5#@o7K-BSi8ied>#=rfd4U+b9Go>t;;-@V=DNdt zj75lHY6YI-S-5KGS_u#&nP3W5h043aLgtI&&ovKv=UI=0Ja^rb8eUXG>IX0qC3rGv z2S4PPmN^zqRk*fY9!LZ=m7>A*s;+wcvwAf0Lz)>FvDB0^ecf$X}R=lTWehqzvK{>>J5JqBy#qf z&b_8w@s|c)XhCb)I&mpWHEVT#7SP)>k>Xie}MyJ`^&2qvB|*q})lG^y}z?2CNaNACMJXD(Qp(cy=e zSC1s9u^y3nn2oSXery27v0lx9?BO3@{!e=a#45+WpQ~rvX0*{%=v^94*PV82)&bw# zlK1iraZLu(Cfm%S?s&Q5ip}R(tM%*s@kDl!1AP|N7w%m;FD97Z{`AEyjQWAe1NNE?bJulm7Epg_>FM;x(EBU^}$UTTifw|L8 zq`5b-*&az?Fxt11=ec9cRV(I50Vq+6>=6+MhRea& zR)Hm-xp#$x$puJqiqMFnby+Vs@p48Ka-6;JJkiIuL8~H0J-$wtIBVN$UKBn1J>YH! zAu*~JRncDKgwNi5woK>2x>M zb)_O|$WXzO7#f;z%UCp<wF~~J^nTxu78_x08`*+`; zBu{k|OEyr4ZukhavpOD-VxWAUAudEB(Kd&}!%UJdSVXyj0sM`Fh%hydL2rg!!hT5_ zhLAuctqJ0y+6pSF_(d+(`{NpU?Y>1+iY@6P7?_`TDg^l2Rtpzh)on5|6M$o|Gyc4I zvxZ$ub89%4HN(paOPO!6`Y3ME8A@QA9k)^wu^?J_Uys7Yn!)$Z{Ptt{|Ktxg#Gp-! z+#Jr@l$V_JE|`Gx!y}2HqU#0(grT^3Ox-}iDx`Ic`UVy$hbBxGG}YU>5krS`poxQ1 zA!b^Pk_JLJ;J(F%8>BA*s?z?Fqc@$jtf93mjLo+|yBH?4Y4h1tJ>5VI$!{tFy6!a| zw-t(tmz*2I@hTIlSdeBndJRC(-OEqkKT0Bw8`o>z>Ap;2w`2PL&NUtHs0TG00-cmU?Yr}h7CHttExfh$z;P(6r~^&;9&m9_TOny&kHwv+{lv5_ zs_A~8_*+P7_hFnfJFA7tjCKSVQG+TL^0hRymM(kLU>wPdrR!Za>cfYe$!#60H3J04 z#RKngF&~B!$6BO^={%F}&D^?m?tM+j1Ja-4-5(IJoGF-6Pois=)zCMS^t?oaDD9p6 zBQzRO_efUQ_;Z&vAZ-w4TZa1*gZzGA*du>3(|6BMl?t@b#}*hDYbXqgFb1`;_U~JGJgp z^3E3PJ|~r6pC`HAsV$jhMU`x%>V609VXh2kjh}=Mo3RmcAmPV-U&7U;u(=@~SF63{ z0&BIh3Au)n`*SQTG{{pI9REQ^|@Mr=? ze$*yzn4Yzuj-|ZPwde2FV@_I2zK52d!;Ltin=?=oQC;~%aD<`b^fFumbGay36AZKW zS7Mcxod}kkw_fZA88h3PYY-kxOS>9hi_LBaz&l*yf&23>t=>F`f#d`PGimdUT}L(f zGPjD6#+j-Pi!rYFvL@qW!8bJ?gQNe{16ghkpX*r7aLpS?wD2U*Nr3~Z>4)2Z4%4q} zD#b{7ZeIrJv_vM%ElVm34TT)EOoM9dnNE4>C~s%GO#@}3pz?!nEh#_#``asjZNQV% zn>CR9*#KtljiOAavGNqvExkn|@sx^t!AmXxQZ6U9Zb{ix;qi__`o)5)R_O%T+2f|y zDDPaUdAFIgF<%>JSxxRBI>$b&y;|W-tI>vu$v{^YXA+Ii-GUcErFlfSbfyUIbI@^E zI49~CRnTbbxQZ6#5S>%l>%q(I&-UCJJmlGHX(p6$CA*b>A$pst%2qJVQ4Z13_vgi) zV#crOL4=v8+|u_)%pNbgPDO748qb%sovTTvgPGMw!>}zE6xV@brznpct)c7A{1=EwNAerbfj%cgzdgY(S8N>rVZ1&KYK(TTx|w z(ABlFmbWjtY)fOkrRo~-I>$=gEVNkJb==qU*tu_cWxu>Z(G@&+dR0`L4F74n>UR?I z6ajserWZK4cqnVowPmvK?T99>0POj8i2A?e(3bpZH?-LQ0%aG>3e%M zdA<`+KP;EYaAr0k+NtGbmKB(U3=1n?{2I02Ru)-D`x}2is%T0;j0gxVpa{6_YZeL4 z6|6`i<|KXhHoUR2xay5QAay)LRi^zO6DbQJ$2n_GZwDe9m|_~)jDk7AQ(Or!D8*2) z*buu*yF$O+m1+P+yQZc{2iki&j|U{ohNB;@AqU&=b?{73lS|lP*mD6qzJ{PTC#T0CkIyonSJIh(-#W zP;Xw1sAg45s$PaP;?6Lmh<@>DLrT!T+xvcEo|@U=oW3t;_1=?&Zm=)zpP|@7a_Pgm zvd8&sBIsId{h7TlFJ|iT89P>mMrPu@uSkJrs*}Yw;-Y~w92}mW5jCwx+NE&{@R(42 z#RAEy5=wTzAlHzzk>4)7)F`*KH4*K3`M=DK3ywV1_<82mlsrROp|ux|P{iL7*(Ny>Bl4RW#%S-oNvL2QW7Glxu3YkYWk1X`9CW5$s1f6I>Awf)uK{) z35?_dF&2Q1toqht2D)BDg5ps$pK!NgLJBbG^G*#oy*3 z0~qwFP|!JgmMC4c1L(IZde^C~jZZSYh9LJ*gSuD>U6{MoH~!Sb8Fp9)CtdtB^M^B# zU*gR~G^9)ZKOX)f=LHk4XwFgU`Mjl=051|7r`4ZKM?QmvKB4gaEC6IjccEUa7h7|# zPb-A7?1y?KkmVADww49UTFp&BJMif)-H{4-?&xbB|BpwH`CnUkiNCDM*Y5=efVfju zWmw_oxOC-dfL>{!2xz*B%o25Jt=t~(vrQr<>d{AZkY2!Z$MlL4?14ct&j$rAk^YzbWX*p(lX_K74r7sc>;*^WFFMeP}2e z-=y|NOSp8w2u>{&9JE7I42yoSUwcKo6EMI*)L=`3#y_dyNW6i`HVFnDmEbx&s= zbtq4`JTxnaANzk4&%_UCdSb_mn5xQh>wGo>`M}}CoAb*FqtJG2iC`E{Q7xyfgafEw zVDR{|0y1G0f9F9hwQE(9%Gb%}kD)n9SvVzauEEbxS6%u*NXJF!C~kFw6t+a+)9ry& z<2T?zHIXBWq6GciwR$qSvJK?W1a!W6?PmS*1|KzOhFs9d4KqiFhV~oNAJsDD7vEb%JQ2Rw9H$QOmnkU2+-<=!9f<_3X7twCDHG>- zyGb`6-v|2Tm;)=58dkVD%LByHCDFUD%ZNj(5o(&EGzoG=tx1`Htr)E$9CM}JzSKA&MyauOCeZvYE->jWPZ5JW8;GE&V$x3 zk;mQBuH$H;sUzB)O zt<}a^)m+wH#N<@b7Jc}zCAwl*^yyz`AjoLgltRC~FegG5P;rgdh}q8LxBaN&pPayL zq~X8bxoWiVptnjBn{wqNVR7z(S_u=yl#Vf;7Z-KZn>pUH=vR-5n5^x`3`Wt=vAOO; zqgdJ5D`N7x=xSf^S($`~F}r*|^|Ck0fplsH?%(=tK_^SBLWYKHm0Nz9 zt!4fK<-hWM@i0B`2%izoRMb>2=E0Q~cAJGy+SF_0T3p9rn90ecPOY-y6Dc^9?Yod= zjiWfYof6LWw%H6t!>X*0tIMh{6(Qe@(n{=lj0^F_UdEN~#AR(81N`0GX-$^Uadjq# zmN8XPCj0jI(GO29kDyy;!V39O0*1>sD3pipUYOjiQaKQAW>Q1J!a%|D(2&77MVc!T zXHc-njox{lE^k+Kh@$S}&vt)By-p&q`5~F;UWm5uatQDG<)fXw^J$zDz3?G8|IPZq z^|G!v_eS~--`D!`Wu11xUpCYO7fhUR5g(qu*S~xijr7jwNM@x;?I0e@{j9L@6r#KG zM#yMv5~Ka|0@-U5`Lth1#YHvGN>U5OqC;@4hzIuEj?A>TKfGP{j`J0twum)0?8f`P zH$UC62R>NGeG<%5_x{&qU~|2Kg%T}3t3$f1Di>RWQb&Tyb3hzS4n@KwLcL(3fBrPp z-C_jUd!^>aMamT-WY;@Na3qIAMtEUw*!afhsJdx;lW_bX@*3B4si&|YmC>oSdide) zN>RN(QNwBj8>4K)>I@qzjetX!K+#=BU5RX(pzu-%tbW|X3e#_t7-dGN3L+e?crC` z?BGr6mHtV$!h_VxIEzsc7nQA{dmOZGVHYW}S3e~lo6Z{Sd(=VYH(cJA7hDnfYPf8| zqc%;)x(?lXPoG)bfv@dZYECCJi=4L223UHcYNgE~RwUL=4yDlOUG(Dj zpW=0MFP^Hi|AVgXU*w`m5_dtJ#`I>L_Laub+?58l5eDhea%<{egx^`p(vD2-YA>e) zOH&z57z<5dR;$z*T3UyODV9zb8#_%4jNGI)=RyIU*pcB|qOoxhx4f~ICZ=mth4%*3 z@I#Z5>5Mc)7!zb;-$UqCDqZ?8ou~>`c-7yk1~4Qgq0833;)Hr&9L#&;(`yalI-Kjp zf8IAbqbnBPdk5197oj-NBy^3+HO3}6CMw&h5!AW$r(wI>&<U?aTn@&Ce!mnkT1jokMD`om5Iit zr1OMFz^11$ISHd7;xDMf>sa}bKyZ58^%E^l04B-tb3SG@nStx$&S*wCKqzLl}X`F12Y z-&75zhYi3Hi;n8spS;%}?)fjMCq}u^toQIhn%CxGgr17l##$|=4;`KET?<#1$+)y| zpbR1?t_F=|j&2H~=kmp%UMkG44_Mem`Kq{*x!#Fb1rwZsl%W*XZFSQhZ-I!hQ?axWN=n_&O7(R! z+dCkO>rb~FJ~Z$foEc(i+!YcRTnE#oGY|}N($YA7Y{PQc$kvhK$mYY3WSZOeB690W zFk_TI+da8|kFSV}PW;5v+S@IEsyt?(-Ye@?8L%wHBxJhgFN?!`En2g=@h(t>b(G=m z{o!G=H#h^Oh4n&m+tu#Vgmj_@QWmxrGX5mrmQn(7dpkl{T;bi@TTo&{euu%?aZV0L zbag{lYC4IL6@t8V(cZ~bdz4n`V{0a~8#P2Le?`?u&D&ng!qMWR)_fT725N+n7iE|@48#QU&Dma@c{+e`S zrSnG*Cey!1XBxEftnE*hdUDqAxin?dR4N6Y>wZ!=Dq5>s4_U+iq7(=IM-3!%&y(^l zBcf8<;L2O}qRFsj&EuN6%Ij;Mm*z`-G05|=ovGWgq4eF(MlD!rUIS@mse6P$jn9KR zLrJYZJO{+*WkKXllX952vfGje#l78I^+zp-19^3;R{l>kdpGDUY{3l64h7a<2>opT z0!iy}ekgnB3gcIDJNA#9_x-RWEjAsBN&fN88(KCHB(z4gm5&F)ozlD(4|(_PCQalc zt(vcnD>B(*Cwo3aB|8SglV2dbRweO!%n*v%{mwb3)XTof%#k59i5e?lo|;I3^5$*Gnj=SE{A#hH)`*)g+H4Sd$fBcT%bc%p7yIw@Y=F*4a zcI8;j@p4?)nhs!3@`^__DAnt_oYsE^N*e+jw054qkQt<>;M?Nqs$Ur}{(@Eo!$0^h zs0bd{)u>lVNnS07>ic$6F0%4NceO_ozQNWg=9M=Gl|le0_%6{6#ix-XuoD8*wv$2~ zjO0jSx`v2(=k3t+)WS)RcG@GSwUb&18nz!kJ`?FU73o<{!NpBOf*O7pf7$7DT``P> z?asazJ>(t(C&jSLwc*x9S5bdf{I0_1prZWK1p?w58)I}n^$A|9EUm=CtkI6D7rFG$ z#BlTJ-{J)jVOhDnV7mkb6@VdzmAJRdYPJtL^v{&wQm(wDXHsA7e1`PRB5p&mGM$Z= z8;#_r7JF}_apM|h!|F5b>%p@G<-f2|Y)ts|zIxT(27QuF|kj>(D`ae-fX6cGO>? zo`p;}4t1W0zbF|3gwcXX6;d~m&#Y}Rn`>lr?b!DCP5=T?Ai^dMoRG0dFL{cN8EAAB zBBG9bCO^$J{g#}tiH%OfD{`m}c(KdWxaB2r)!hSW>OXe7U+{yzx&}RqIjA)>M1p#D zn@C1hJYVZLXpMhx?v@b{UljcfqB8B>B9-m@I;d?@SJy;0*Nw{~jU8O=$~Zr+%_brQ zeg25AE%(Zav-MPjIeB?1c2%C@segB+Y%-%t(!q=wsa}}OM`qHl_rwkqmkFCt!SJ6Z zM3!);zz5*f@yCXw#ktGIlch=V4KYF@$Q<>B%8l_`4nn+Inp!GPOuV3MKi2c(B3x`B zE4$Fr)_q#k`0=sdM0WaHFkv)b9xqdqKcud|UIQ8oI>Wb;M1jhY<*=T$;u9cK^?e}n zR45+#XxaNXXQvmBCA5mF9=EHb4k~ttEK%498P}Due)x1dYbVAhfZpSZ9FsqN-G!EL zs^6oS&{J48hzIAS_0F88S-&pk3u2Tgrw-8c)>vSXhZy9dUnp>3=_6Mr$IBr%vcJkNE$d$mU z>RP9A58OgEAU?T^8A_-bDDiAM!0gfnKoS-jNi(JJ5~u1e14EtNooI#2LZd5~pY`0u z0Nxe3c;9-Jf~g|c*ZvcFmF?=MN-sg}qoNA!wsoMpEjZVhW>nX5EDcHR<;}E5iq^`- zo(fqZxAM&QFdvzZfV>1+84xnU7!gz@bD}#!K`7BqA1Ig(<%linRI4f`2DmGWws9xP zlnhUDgWxd_zBor6AAp@wK~y;QoC>Qz;;;H`A&(hTK8@I}Ri<%vow6BQLI!JG3{WDzD*b`V+I z9kt!41IcGzTf4C1vIQSw4)*iHmB?tMZ(u3U`#*_+@9mY=aavfQXjmW6b)sMLjbbV8 zu?zyRrV_TLVP_iK??g&u=+a)Y&KhzO08Jf8Q<%*SW3bM>u!uFKzKGa2kOlMxju57_ zAr)>f`){f~-A3U#R1Kj3uy?{DcC&QEiPV0EWC{%%B%NFHRZ#{m9HY*$8JAD~`FHJu zK0@<-dAH-OVpJ!8j?-;#XHJ7{L(@7|W@$(Op8fJ1y^3kN$6g!VR3ZzVt}vNrsVs;E zP@wzGBCV)2HUSjrZCD^iqLE5~z>S2iD)$t221U!Qk)ALnkZLJyPtRCu|Bdx6nU=5n zyfgkVOY2~RN>{Id+xFhB{}Usv=7w)?bxFG}zeb_6?0Y`sjzy4=oTw^lwH88mvS!0v z*wrSjlATa0UFpoW;nEtb@CX_X;@eBeB-d7GL&_ajb42;>ZoTef|cW?XJ#7 zG!|3kL)Esc^@Ji2d0AR+3Zk(ae~QB-m(49eejs4b@9!s}_WG+lxy9LB+>4S)WV}~6 zjQ}+_gRC{Q-Z}PptRusi@vA|`<{@i=O$_Z&rEB!~3tE3|MV+6S!Qa_;;C>Xyys?S! zsnzWs+1s?a*FjtDr5*~OhD*O~=4dPm0p5CNX!)jJkBiRa-Pu?>y>D4MP+|;nwiU^c zo4;=Ss1EXz>t@%M)2TRWJ$hYl@MfR?$4C6|@4s4JuyKBDvUd@<7omF0@~UOUNf+)W z1bOpzoYkjGPuG8X%CZrcN5BdFBIO;-1JmXDCMT;w{O7y$x(_TKr7ll!0MIzcTmBg6 zcP4DBx6g5?Dr-9^!y-0n788(wLF>)s*3KjYOL(V61IlbH5DvDW?|gnk?K<{Q_DLo1 zV4w3wdfNDy-xhw_CPI-gNc)C{_<6F}dBj9jyhB5mrv+}d z83QjSKAN&*G_>i7W7iE1PXG9VjY*7+)+OwsVZM-xb-`MUQUH>Xm#zjARG*Y+?Nr5v ztss_SricEIz5S}$r>+eZduIoK`F?Qc8Rgv2zo7mE#dCA`^m0;UQST0%WH&+0#^@^f9=Xgg387QCBWJoJtNXzl&sn z$_65PaYv>ksXW7*@9epcnUOoQMo+?{siu;~743p3C!|i>n^UC*{7v6l#AJ8mwi9!i zWlJ5Y_(WD|M&+0rV?@V43BRU&0hK48BwZ~xd%8^;Eo`@aKLm0gjl7k1O15=eTcZ{l zeT8g$yk#y?md$bo0iK$g1d8YSuaC(}50@Ow-5iTI7U__-jb2%2~x_pHtHBvg= z$KiNO{ln=oXZkL3-A7HEjda)xq7Z3P1X5Ae(e-T$;Xs(XDvYar!a(~^faDJfYKvJOxBX7{;<;~*5Rhd= zt3=%e*H2a6-?xIC%6zrfOv_ar|E|VLQlenGunt_LtrwSjFM| zp52t__IB1XMG6&%in^Xk|8}V(I`)hV)M<~x&<_a-l!887*Oh+D{8TO~EG-?#HU*}0 zu8?PGc6oV3^*rMM39s&r^DPmlI-vizciv!d?RaNow2jib>F#GhnEdet(vycMAkmW? z-Sp8aw0HCdeAvh|e|>TiZddW&j2I1Y=309md>5Lpc_=$c@o@N&g|nXuKA;Z((M%Lv z2l;0xJ3XmE$oRsQmHy}uye_Q#*9bx^A4ajErO`YybM7iABA7$sxAFLPYKFBrFP!sC zI4uN04>7LUXKRyVo*H#e%Uyoi+1?l!e-4xFB)+TKu;yZO4!s+EFj3hM zQQEE(l3UB1gQog}JZau{G+$SaWN5arDFBfS06zECj)}}uA;y)dNw=Z><%b{p=cebo zr+23rou}T7TOCA2hY%(cI@|)vHjcuix|cbe>swrO47E|WEF@&C)aiIhH>OnUrLr?D!je{}KM3GqZXbHSI1ew)G|d<%IY=b$VGjH#@<%%0Z*PW5w=%g_YH2*Y zMJ6p+{@4Yd+M}3sqMVpCp z8c!vo@-aN=I#ptPX9}LhLj)Jb!)w!rLuu{>Tm~ssYzsPegPD-V@nM0Tf!8-K3XCm%SrI6U7oa#z%3 zVPsIdN_aQYeVTzMDaz)tyw}OC#1cb>jQU4+BIokDP(-D0>IrEH6s;oh#BT%kS=_`- z>Bf=jX3%5J=;K=@rOW%1cRoM|H;eNXy^|UFZZ7YZkCp6tQ6<%Fqy*#*oz*p%m%}Vl zDhl47ZcS@y3lU_X?pDIGhP$^Qa)m!D_m8*E(Y7;LukLQUL~`i z-!bXfn#f--_3^44u9~k%YIgV2b?GS_{9j7Sc-uir6*Q;` z^H&fO;99+7p63?ylgEkIyEpgv)|llL06-8GuCI(5V@1|HchM-o`avkeISa3c*S%>l z8$d3CPk)qP_uvEct3=dCYx%QgxHE{ZTd%aN(N6-nk~SIAeZW;;(I4KhPKZayl#YoV zsmWKCf_afI*1oX?Q6Nhr5{dAf8u7 z?YuIxkVF_~XPP^wEH;eISl=FQY#@T~Ays?aAK}SVZ;I$1EDMNQ_9D|nDmgBl z3tuysY{$s+8TY0W$@{&I6M((*$U(7$d)qamJZJFDxO`ffUOjbpr|?rDTFe8d-Kg&Q zD*g+DcZUo}XC`Pho&cJk$O|+}Ob=uo+m_Sr=}n(d`+oz7SZ>H71a+}DviadR*h`uY zObM0VfcMw?{tHU`7Uo`CizzRQleJi(-^c3hb+0*!b@8r#JCk91*S=>{Ys&!RtcxPO z|I3``@oQV+Nki@^ViTPZO^2h_IfF?LQq;AcOj1u{q@27ot!PZ_H{16_jLD+>>1eQ8 z$TvQx5Di_oZXf=D1g}tX`SL+$K5b~f!Cu?OPDwko{R#K6=R)!j^KaZmKjheDcO>IT z6@PVKdZc15`Qb-{y-KZ2V`h*{8oq#C3O<6T4y1ts`P|yTWSy8k6R1NMPUW`Re0Y9B zL@EvsUiZ3vI%q*fgeRd}fO-2h8d|@AwT;u>b!&HhEE52pa!q28pgIeC-$FN)RC=S@ zm+L0YRB`28R^e1Jf1wTBjwU>^w5ynOz|_1g%C~)cXI$40 zkNUUQwJwJ-PHulHOY@q>XJ(3iO*KW3jK^w8s_L)7O0|tOk)^rXU~3r}{Ag;ke=%v! zV=gn7pU}cAdcZ0<_uUe|K-7Ji7K_`y_q*PXXCmPV^#)4Qp8I@h$q0Act5;k2*_I=! zw~ereW7Wv@s=G(|-hjzeA&sG8nsZQUn-%?7lxC(}6oO-?Bxpu<{C?I~IqrEfVH<;g zzNMJTKdna&r8)n#2!VB)`0p^VUo~P~q@Mim5Dge1h$=n1C)L89)HJ zu<0!OwokZ<`QBNeVrmy|__r~HzB*35JL0mKO0S&G_nt`Y1|!)6(mzl^Fjr(ezFsVU z(H|H6F2N}3Y{o*{#pca?YYU;k)?xHHg-y8k?1^H$3d*S4p`=kh}6+blU5fN(m{zg;z7l@|Q z+*JxaQo|kjXB(&BLDF&|&3lO67tozDh>JDhBp`NBUdqccS+SlAr{x&osbv})^DUO<#TTWg)DQuWJ|Y!^ z?meTHN3-p6{V(t7#-f^zinq(DfM`i5%~w&}@+SaQ z{(wgw(vGdy*KQx0W!ahy!mkrqD>{fc z7~or|u~czg7iFR@W-6T86)_FcT^sE!4?6B&FCEVFDK!^XF%AKA{86RZTO2!OLG`jY zc;5bi7g0`W2=Np&Y$) z$M;6+yPdOqi)mak4kVYjFY_mcMpK2H55f}$EBk+Icm5B~@7Eu^mFNE#?jdYf;t8F$)OZnq8>YdAcv!b9SzkRo7Bj)Dt7 zTs6_I;*w8}b5H~tmkq! z>CPP$ykpy4ipfO>S95vcr-L?63(HnMXu{jdI40PwH1gscCuri=hvzxh0wnA46)gwz zle4Qe;bck`nol&#YCgEg8$FSc78w{ObEty1ADAmHR-ScS9#2o}#rQHGP|A3-zpSB5E60gx?ynYMfd?sSgdN_I7Ta=M8^Inc*zai)KN6>IBDp|ZNJ!LW83kE3@eQBY?usg?RACHkf9fsfX= z(?&&{61$K7ZiV?buX$oSTbIpuKLP%8FrO|AtcPYZ?A@9VY}KqR*aX!(p_IT=qBP|x|?@h zo-|h0OY*ti8joV<=MSsz9O|>{g^N9Iysl*j!b~mczkwV?kQs$R;xCkY zvwz1P|3D+a-elqDA09#v4C)biI<>C8^`!NHJ2tuTlz76B`+2Q<<>eq$>Z*kY(o956 zJVOPhVOTVfs-CvL-aNgZIa5~Rt8q_9yeD(3+T|k)i>DlaL`DNp-^+mY(l9&XPzB32&?;8}cEPR1cn4NbV+O=Enn6e?E|CB9dB zOext@nM1tk^Yo>0e8hJ-{%og5oD<8H z#U&sbsmNEx#Z-^mso1$uUXH)+oWDh2p%R?JeCNKRYuv$I;?P>ME7bya)fMr`0x_RwJZ zHYX;`caxwh80T)9Ix-=f{!8&_SekUW?xzyl$qJxn(GT=S_ElWcoF%FQQn5dX6gIGK zt8Ckvwyx$57cn18?XD!E3JPNLmf23WjEwB}G*ty|^HPbO>qhNeqIlBAt0!(;c6_ag zT?xO#AEXT*SRCS4cPphfQPAd7k9xz${dYaL||<4J+0_D`j%Xww#P`ny+p;9nO)bfowNGsd?{LfdWNveF=G7{ONxd4+q*+IbzKVHr!v1$yTiv$_Li!ZzV-T} z>8}$LZX^4Fm6tv>5K1pK5NeAZNUd&I%K*1$;mDG<-i7EIIOV2JTdrX~OuQ*KJ&V?U zx)Uo)OA zR79i{kp=@0DV35&5NSzi7{^4?q@)ZO>FxmrC8SG2Y7iKP9zuGU`St_oYvB2v_qyKi zzfmThz4zKH?|Ur-ZSu-eBK~`t(k=j_FDX;C4w4&LLK@v6(}lr{R${a;mo^fW%+h;f zD*0J8hwo50c+?$peE6F{{1&8tza+pnHm)*1dIrjw+i#Y#EK+K<^$Tru6YY{k1p@bu ziF`}RyIlhK1qvSJ-3RQ`Vd_QPuEDjejT6ybQqon5cj;S3?)HXHf=a`coyz0UEmHh) zHsgJLQkUeE17@zVxm}TdK@)*KLsd62bu)0=ps7tjvSZm@7IQXH3l-Mik{4SY2eb+Z zwkI|^)PBDXo;%Ry&yDm=ZSQ!-OQE2&;d!z}py&Lv)V-s=%v2;-aH*HmE!W(kdzh=F z2ONjpK(XzcJ+Jf(J;*by25`%M%#6V}u1-*+RRin;qnSlsLoLbX;FcM>1JiChy|81n zDPCqXZqj$Wf6sG#-@;#CsA(XcwM=Ljz5NuV_G!>rAC%vSFuSYH%>#;~GjO(G;Q7(3 z8T&X~8JDk_o7;ow% zd7^YCqh1u0?QVwYndn)wS#VpjSt$8JgotSeV`XWsca0SC!>gk005SXBR|mnU-AM7f zuuqZB-?LrY5p)l)ak%^wsN(zQZ-eTd&phDt!ZqX~o!asI%V+k^Ao|o^ES~ywwu>y{ z*mOXaVct+X0KF}RmI#EdZJ_@tZTwPF?r;NWunWO!x!&>IhvRQIkMXBHMVC z+%3)3FJaD~Mg7}%(ws5=bkN3H{oiSUef-nyX8z1T#pD9YO`U_GxOAXx{-dvy!Ychy zygu-mW*!qkxLgpx&cr)xa1(Y01U5Ina3c9LrWr{Vv78k>SeNDLVEsT*m|#zLbgvz4M-h4@URl1%^l#{Kdo=`x7! zM2W;G_xr4g9NH3&6J1%euk~3h2}F_XfQ_>lVSz|UISt!JTLg0CamY$PGl9o|UVoAx-^*Yt7{xdjf9AL@hLxG;SLSh?jdl9NPXLP*YcLWkMU$+TpK*dlc!v8-g9_7p6=YO_*EfX036OMZ*(4=O!P*ZIr9v$;yw z`qH$nNX`a*w~OK@An^V04wT2no{ujwh`ZeolGz`%Nwf0wH_RAG;BkC%cfZi%R%za- zeGL>5bA;OG;8T>6Nmug)jki~?}k|~_{L5pVDpLvmG>O5w}(kd3Gk{4(A?D10~&TOP@0ec zHt#L?c;_#~UHYqCs}a#iW{SL&6iC|otGVpgvprJoK^;$sCS(n~(c1T7{Eet{6%J05 zF$&U1o{3?3DA&(?6ojSA4HQ0zKK9MJ-EUeaM#D?DRtEt1sX_bZglL zm$5Zo;EtOSlg<$p3iKRc&*cJO9KoFgCroG!#Vm2V-W%C+u?n7qlB{t+YZ6`%lnycg zMzfs0lTJb}jSxI<&@0Yi!SN-_9~t+^{Rp@ZVJ^rETgfWI8)$=cS_XqHj&F-gD=CgB zH6#io;S)Hg@J1M!$Ad4K)>a1g-UsfgYNIZh__=UWqVv*L`)k}24pv`$1{hyElmi?JJ}Q>)>X_e4!Om&=U<-YLP~g2(S_Rzb zf308s>DhcnD1o{^GMM<&nY?Dn3g!!$8SifRNN7pnSh=*;>27UR69kEOKn7 z|6|yv^)Fag`Quo58<((!!loIeC$E`xQOC?qv0u1d!4C%qx4 z7L?qb3)xyy!9AV6fbcXiC^5TIo|jg7YjWY(Kp~r}q~j?mkT;O+&r#~@^@KNM?N6&e zt=rpo8x;pqrR9yYwl5Z?Ir0;9$Gy1a;Mjn-(rfJ4uI7er{6NKvb1#E*Ku{%qxC=n zaf6aDSCf|_8Rxr_he&KdNvK@p8i&9Zl{>sv{1%fXi`W04T1fOpb8uKu1_Id)@E2PC z;74bazmldcnZi=zDj#9;rxG1>?jSI&8~F6PB+Y7>^o!kViaseRZAPj&uOk1X+zdj}hC^w4$w8Q8-=kunS zFOC9+?4Gb^H;~n&z;e6L26oe0Et|^e@VDjG+k|P6i89US~o_8 z4-YL;Fv?C6aC#5^>3rD((X1W<#}@R>zglSJ(QNu>fFL$~?%ydT5M!cTs*S!vWz~+- z4C@1UY^nY%;eIdA0HfSxX8;AW1+404iv60*q~+N}KY#;B`QS5oSU^XVPY(6Y?Zzwn zm1m>j&dFr#Md*;ub`Nan$^a>cz}?og0QUl*{RU+^;LS47ujBl;c&2_j2*!BlJjJiR zrP4dNt$%CyBjbbVWwm0m+OznkDyImt`5 zS4AK1ds29aQrPf7>6qSjz;MmkH*l5tWx$_E&i?`9|C@B)IXN>ybiP3>i1p(gZIV2=NB){a@kv>@D$j^K73Dd2+bVLuj#ST(OjtLfl4PzYAt+>I}f@_)LrtP4;E* zhToM0`!mRxKB}$R;%~pddyD^>;7dQ4TW&n%7TdMEXhGNBOZh5&=BELw4__(#L9GjI34Jp$h0%Ay$K>?g0o%WRWaFW)K~#6a16|~Zcq*^u z2iENbVJGzRyXLc;}SWNw!|J2lNxeb6Cc2#m{BVwW91io zjIX_fNf=d+AuO_vmC|N+ryUp1iiiYxFhIz)<^1Dj0-3e&1MtlfPxm#kJ1#|D6>+uk zaXaqQc5!Y}tf%dPy<+D#i3UWO`{)`II*gHr*2cNY(RR=L+`ch zi(Cn^%_=f?>2S4?5UIbYAX%X9_!Xq79G5bqe(%c5D}JFnj`VWs}l9)6(c zw@eraV0p<|iBqE&=dx&Tylq4I12l`BVJV4`RJjUwv=xhkO@f8-D9cp^{6} zHGO7tSGMg5+1&Bp6+ghNCx`9hnrqRi__Q9V*E8lrCpGq-domYd!e*NT)dWJ)CFkqo zUI!F#+xD+1D+QsyFavp>e%S@OjQroq33v#E^upq?N8Y zB(r^wZ9bZ>O-*+YZG5WpX_%(6()>8wimiF&w$lgqw`zcc?oyGez z24KQg3jqSG{Er0K^MC;RK(e`IlK^`;wq(@rUuKmNclTV)90D=eTfe3GI6DI$y}dIT zeMz;%yIs!$L3TKEC!w+eo{LHZ9atLYz2E4QuB%i!09tYwS#J4)R`oje%qIt+_`ZfM zTnA_NyDpA62AaXE$GE%y7g^aYzGhRdjb5YQ84Z|vT5R=GzyEmj5Dc%kfDsVmm!lp^ zD`PWfY;7Ikc2}i|0ax$H^cO~W$;6U|-AR@wgA*q44za^ckPvwVJX)EuCZS9|XNpx^ zdSAty)e`nf=eL62x&*Ljft15F%j5qp2rNw7z%cNvuJ=SvB5Y=H#MZQQ;e0;e;T~~M;Q}7*Ix-b9|c8P=@=T> z)@CHlciizkJ#VP5Y_%P6d>xi0J4g=N>L8OFx25vh1+JiCB~+}U=uq)E@{01x@xK5_ z1rC!o%a+++3#3p3CQ!T-sH7E2#~o$=g`8u;e<=$~GQxL2Q4@qfa4H)(OlmnTOheFI zZ#%KUs`U+nx7Tj6ZHXoDdOOX>2R9S}=yB9TMYOLDG%Imxr7ZQH$#e9w!*kb2BtkjN z$LP=I^T!KPq1dbkkZq&?L$=kuf2kX49yB_Osa=hr=5qam7&gfwUJi1DS}w=cwa=QY zNxrnH#GXWzUCxgIad95^F!lK98@?{r&q7b1%3~KaDb@=(wxy}Wnh3snMWc9tGP#3( zcdoM?y!ubT^zUSBQw8e-B93iunY+v4*QqBwCg&G@r&1rhybvR+PTp6vQUeUE3lRs= zEEzIlgP{H|h#&?)c$W7LT>y_#H#K#})fWE|se6TtrU-ar52HTOPy*=j=;1US!dHf7 zj&W1HAnpnWp~IUwNB7U;Ofh=rZG!kR0PNfwBUFbmHpwER_ zg9KrLdgbez_xZ>U!f0m4ap_dw&WQ07_!`QXeLN}_8))t`h`bcH-T^T=5S3|D5BDtt zg4@^rEA;E&$S?pu?jMlQE+IbEpf>ZkAzmOzL+!qGksR10mE9ouo^0av9fks!Id@Lt z>JzBeSxajDiylBc>n!t3=g6)r-$s`KPKkZGV=hRfok1`&H1ZF>r7%|k@E%#jIs-#} z8$HB9rQL}_x%mj4mJ+qTv*B9;=}E&blE^`!7gfz$3!6n|&BWTt3&7*$+d{dUpEvb0l6!jd&s8`rd7jD~KrUKNIBCa@kV(2^IUjI}}l* ziQ4p0m;~sL#_v4)#e?nWL*a&_!|^kq6W?w?F-_P~l8lW&usES4$MKW#m%ItnexV(b z_xuTdE~D7G-@%hXf+$C+FGw26Ud`BUVjaDtyqre6e4tfeOjPn)kPMRORH%5jbGnzD zU4k;d75F5>$*+i8)r3W&KM@r(c(Gyl@u_o)YQyHAGU(kVVBGPhSEOhr{1C(obn1?u z3!emgpUwr@YsI62oQ1jy-d7@er9^fe7UZd{^8K^LLSvX7#${|B;C|OPBpFXvn4Pu` z`%aQrIQI#<_jT?F*?WIo(_)aKdMK`;Xlb3aU)j+%Cp$OH&~~-g$5!>GwOx|YOGgO{ z&-vlEU0rA7EZW*1F{ZqhQ;db3ILfQM{kmv4E)s7bA=dl1gt%8G`PP^OJ8rn)2Bau8luL6Sm@Gv6q#POt7ENs zK)v-+vGP`3BW|OcV17s%Ths5G{`)QYFaF0qj7**_eqNUkSlB}#V&cUDoa?i;h|b8t zy$KRWkiJU(PX2=sIm@C1jjR=Tfl1puB-<(CO!>h4bN4 zIqkOPRs^vLTriIVSn|&mqn1|Dzwu-0={rH5^#F4I5h%z8Plog<`2ksWmy8>14eO0( z{bNNXg4f=Ac^>p9!gtBVpnMF1KFq$kX@r{D<{zcj^LqO3`r3sJ`|lQ?em?Jmmf_QL z@h zaoC4Wtxq2quOr1Fg13@u9S?D?K!Xk6cy&zU}RPZnW6=JNa{Pzn???H^KL;h zr}2SO=Gf7l?AOTxp?(4IW|D!2)7}~5`3st)YqPvg7;#q@_C|8rfiO-r$ikvz@pnp5 z3-KpR3`h@%DPr9i!=<46p~Ev-T+EV3XF>k!rwg{*A`;!+*?!Eesc3|&BlURqXtB&% z%_$@kXq_ZS{aqXUY$y@KR5pHmDfnIN<3_!u#eOW&RP4@i;MYfF5p(=Y_m`6rT?ROG z2z~d})yoe96_Y6Sc{k9}44u1QMrX*;*it-_?hlMp-~VGbR!XL z&23_%HP3%}{BP=NcjsNS*prrzl53&3x^RhuSUk;BJK6>G^*!s$1qc=;e;pxlb5ZHa zhRKU`&svuBVW11gxY^Rusn@SBCn#=JSXh4=QCWmeMZ+D6 zyEA_=cL3hhc1nFI9OO1^k2?ggtPAS>nI>97#}?~_#-JpIF&uhEBc8Qy7x=p(`7d4| z4w9!%6=#MC4(Xr#_C1XZ@9YX+|KX5-789Tdbtq8_env*q#m5GoQu#O#d&PX-;*Dym zV%j2(gM)l>%>FYYJ`%3h)<;7ybvOMCe|u!`7X1NxSs1H{`ou>i>M089N;q$+PO4Pw zsZr%Ebfhd2xCTuLcob?2e!`BE?`X%2iMle<0@lz*hSwtZ#h&!`w6WU)R6I z^8#6Xc)33mXL!n7*Ut-%;}d#3cz?7GsshGnf=KQ?{Sv+dWi}wr|hC6iY;WSbrK{3Era)MiR?f>2Bwi((G(O0wtC=SH)eH@+c-*_ zS$(0c+6!dA`2=12#{Cll8!kD5_Irl~9kt8uF3Ud0j!zQlt61iG8$g=^n|6i&UU7 zp9Y>zUq3Qj{*;vaGN7|wf{@G%G50BVgBI7t{j{E;FX$FEX;TfOs*Fyr&VKF{GwfXr zanJIX1hD%iH&6v875SH3k|(5-9uWh@x?>{exSSe3&fstcI+2<~e?uh&Dik(x@%WO> z-V7lTIq%yheWzqZa1#s;nloc2^1lHJnj{hR8HZhlvVDk&a{g1tx|fT`BTg?yUOJC@ z4HAQ&qHVTjgn|75?IpAmNykqE>_lF_sZxgq-3QaF06T%LB^8Q_fQl#JgAdQ9TGig9 zG`dpf{A%td`*uoUoqlz1qm;36zYs&xa@=^5@ADuft}ErcD)0i4?L*~|X+A>*T<4~H zT0n0ZXy(j5sg?#1Tt-n~ZRW5%_k-e4Q zrKMO~lg-_8O9a+WZC((pE^GJFlg|Q^qYbt77m=e=<;R zOfb7+{JfRJSdUbRG?u97ik-(d8;-Hf!0;p9rl6tFOxB#CL4eY-yqzV^om|1o1f)Xy z)1g!Ed?fWZu)D`cyt`3U{=+yP(6;9R)6!(0Yh6(`i${qV$k7?~FESH#@wI;Ie{Q^w zma8z60?nM=3eIV(EJ)@}h7220Kt#ZReJ*V+ZCq)3Wrvg*$0B)4$> zpb}7MGWp3aJRI}hXiR04d|?2^_9vy)FUH8i3`XHn1=gB9c_@QyoTvsz_KLD6m+(O; zNJ$`D8#@o`srozEUNqid4~ZFhrxDWzLEw!^kUfO+O8sml(AVfig>Jd3)mRJobuc24 zzPB<&m??di+%OM4?RdDfwAEZ}YX(!aurP|Y>`ZBfr4V;g%Hkc)0m4AbKsm!ql$HDZ z-D4)2^G!85GZWpXYt#7k!aL^bJNME$tKgWJ7uaH$K_8E!oHzMOHKijv@=oQt*vd4$ z7~O)9a2rjf3lcRUjs`yW^&AUY5p3pfpUuYYDzLW}KN#q7rqodYU|`Q3o?f0E&LkR| z#O5&iit^rKo_Fbg?rhUZ!*0O#SnnEdvlVOx};{VWwatp($Py?T%Jbt z53P_W5QSHN%TY=;!jSQMEv@|Yu_&LRv)i!RHLFQTM)A(cQ_`2E+H(#D!?_ldsOYJ4 znVAI|k-KSvq&PBs=IKHiKxYL8ItiDk{%q8W{IaoTWAiuf;fGV-Z4rUS^RIlImjM8G z@3I&^?{@)9XEAUM>xhuIUZ5PEg!W`2EVmR+&-A+`IC&&*6Gz~kX@g&l)g zcvGRa5NVJdDpMeu<2ieiiX&82nO@!V{kgW9%u=gh+EZV9XJu*?T*h7X#S_9rHE=lN zl>n0)i`fK8byMAd+L_eZh1q7d4lV0K5gCd`JkM4O|L%Wo{Q`1D%Ad?#DZcXalBNli z$;lrWq}*!Afrm;Hlv!{hj z`*uwM2_6+i(=mjBtwIUyMQ`rs-Z{H6O02D?vQNp3&8zypG0_P6VB+?Px9*JwbaC)ol;7yE;) z_KQUqol*YEwr(?9`0XvE!_(L2-8vpfF5Dd}(|UF1k&sx-YkCKL@eI!a_`Jt3I$%Jq zB3sh^s?R5F0!FjXP+C`x|6F>Cb=A#Y_|=qS9e5ERtBA{NQ7$jjgUeDf3cyeRUKyn| z$-&lph{EYIr#4k(q_bL$n#)=7!)-H&#KaXRueTog){{>2oRT1a^rJ9u9A%?Fx|}6O zDP3OLO8gb$_#KL4vC;x|_qh*GqbQZT=9f8oXaa(sPnTc1az@h#?d+P9>2ab;VQ}W102!2BVMDCW z-j7LgD!ki`s2Zs5>=YY?kc7wW?QX%x-w&5fqMv0P5qWa3=@LQ$kaZLiT^vugCOa!z z1@TaRsP#})r5l`mbgzh6v{To% z+Ev|is_SqCcJ%q{H7`tJiJ>%T7QX9;umHG1?fWC0bQd*fHRfl~W%(j-rSxL=(VDGf zXnij`{m~tBfyN@ZWxUSxtG*R^9=yS{w)Zz$1PJJsaI^85(r{yYIB@P{`f!z&QFFxF z=jbwkg0mO&2ssQI2TeDS`!jiG1h~yJ+QpEnK^sVeug!f}cl`~Iz=deXzoKvCDKY(| zPi@{CIT1+!ux;7$7uvh0k6BSTBG1E-{r*ioqpYd;U7arZtwJ!U3bzd!>$3U2mF(Nij{ETJ7T zT=mD}u}jzaZ)0 z(w<=a$-Vy3zj&zBk65}kj*4px#po6!_$`?%PnylUUjiN(c$wb-_ zcp-k!o1`O;GV6oCbiGFBVCmrQaIr?nrLrfkZTqap*c~b(-co%n&2lAwUccv@?ZfYP zHewNFN-h24V^+nfcDR~k+M$kVBrKQ?$uF1v2(F5iOIcll9)E zX7c@)pk(#YQz`zk4|jU?M=T!qlB3HwD59m8CUO-o4uOT#(2z7N+P?i4zu#oB|NEPb^Zj$pn$4C z{Lsv^!B1h4oS`S(PKaPQZcfeW0kwN+D&@I(K`MnN z0kY-KTWfYW$D_q60^0Z6IxQ$xj5q%X5=Qgt^;MGAm4z?HOl@VF;8i1PvlgtfGk@u4<;#&SZ==r_PH_+0~Mh z6^_AR7{1c1iDvOi*Ma6S9wpZ{(@+M`TNpE5Ic@GiaKrL;Q#U+me>=A?gl&(g=I ziwo^IHPB>c{Wc@kApQY7?&}Xh1r%==QQG+18c5788DJ-|pkcX_Kh>O+GMAw~3N_N; za6OTm6o*c=XE?+w^`_6+LN0NUv1cD~N53}UkBeO$T z%UGQl;&{M(aca3^VQM8h^Tl{Kt|TKYVhlEAo-;MkdG)VHKbV;BipRbQiu{FN{jBsr z^O_#IJguZe!2aS7=%r$(9%}U%qxYOT4*JOfTR+|(>B3KZJrEgfI_Kx%*TIBjeo}iZ z;3lKi(&DTVb}`Am9Vf zGzP=I+{`|jPi9X+g+%*nB*&n-!duW-X1_qwN{{*dwA6fCY++*kOngD8g27)S%r41K)(voskCz-XVh)et4&DjDJ;SW)n^SN@_~)W)Pm*Etv@yKCM5i=U4l zFLqciQZq6%sNUfsThthgyucVRWvOz@hxL073^-wtH4?R2Ul3+Vvr8piY7L&0Hj2g5vUm*tQgD*O0sy!GJx( zZ)oU@^j&w2YTA>{=S@A>I25q+0X2(fl1Oew;Z#Q@pA4F|aREHmK<=0x_Jdez>Pper zS*q3Uc1`OfzJj@+Y^k<1uXD-4d~GG64fmNn;&C_W9Tguoi_tJSyJhRP<=n*hk8ec_ z1C8Q|9q(NmB&1J?o=KoPkgkTXW;SZ|H0d%wy&oipV$orQz#9hB{f*25BfZ7;9^2Gk zY-Fi_F>enQK_c!0nRU)j=ij6QGvX^vpIFr_H;h8^x))9PFg&3GdM{RUObR%tM*dx+bJ?mLHvW^BF}KZ}q`52? zMWidUcOIIQt{2=exJ}9kzKoO{ne8O@QV>gD5eQMT$(-mRW_DXXt^Qt$GxgmP7(*W(idW)wJoV9wuf<^8BOqktml*jMZK`M!ksDbiZ#moIzXl@cYqY~fV< z*-EsH>wnlYwo%wT<<5B{et663Ov%GU7ZJPThFZ!hbYMP9Oa8+3b3eTICszxcq_mDt zPEXjJC+1EtpMkm@b((;KGF@#bY5u7x=oPYlX~oa<^WH z>&u$Dx^}-+{BPMH04cKuyAgdVikxyc3&YaTypg_#8he3vMKS0fP~Lc}I0Knl_O`z) z_VI<-Wf+Ii!e=u~3MYFqd%~EEvV5g)!3W1Wa@wH@%H7Cg$Yp{>2;@3&E7D+5y=9@P) z5g_(}hMrV&t|a30n3#4$)ML)|3PRIfvdw`2WHb;Fb{knMs9~7zj1*iB(;$^)9JCFv zj*JY@K<=9gmV} zDz$VpShBdH?Ar`E_&@8z2;L?}gOs5$i4zmVV)PQrOMKV2DHOjSUeuxKr_NeJ;@pIX z{&1lq$d4G#2?G18XVjaWd&LdBZ80n;NK@CM19_< zo&nbjjB^0${Hgpfp}{XIqb%VfP^RY~qU^!#IpSNHsBfY5_x%Ceaz6Rdq}UfgP~!lN zGMtkHTk^ed@rANaK^k?AoZY`I!!}Qtdt!wU{5eOe(>CM`C?6b2pM#TptLBL4scyuZ zS@tvDuLeh0Mpc7$c{axVXWdZwo^3+uBd9n)KioeGD^d3<^mX`GPe!(&XWYO@YP^Hj zrjueuSrd!R$}wMw*30ES0x19u2oNS%@=_6!rzVK?5=zpZC%t?e#s++OB>F*Tq(6I( z4C(IbHlyREnyJ0G7V+=L@Z*aE43`&`evzu*w&?p_{o@PCMHpA~D)MWA7mb{?$^AU^Hvp= zn)LKB32!nf0MUXEE0wZ#TOw&yZ!?#`@#t4(2*(z=2DXmcmqaI3U zKXf2=*2+oM1w`Z|{nc=@af!q3?to=^2}I;pmQ-N>4^Sls?pnJ=UP&b8tj*I@SEj05 z*1iGi8z4<|DnmL~17telyA7O?_eIcnNPi^)h=uvO8=rpw0dt`??R zsTGN*MoJu%)4x)u{HE&}6j93}zPQuI-URoOYtF40zTO;b1L6behy@-&d<4f!30^r# zEomLwx?=PBx(i_bQSbPEr!Y ztgE6#+4e;aOuQa!2?1_W5hcpB?-vr!9WCqw!WF!J zf#a?H!HUnggX?CnQdyoy_V49!d+~#GvAsq68n~LcDM(AZ>5G4Sq4UQI6SRDU{Eqed zi5I-nH}A@x_3!By12aVX#ojEO|KV$QgEnDg@p=Oy*!yy6JMIk!;R zVdAUro?|fgwHZ%BRJ-r{`uzovyx@g3z2)nwuBJ9Y`^5|+4WCzH-L92*pY=9hM=er$ z<>O;&tDGVvOk!V5)V35@da*}nMn+T$%Ya#}BNm91jFkCmqn5?bvyXZY8S3aiKQc74 zceGsCBX4y3PbvOycWc@i@}c-m{&D@^H4u3ayZM?WRKu0+R3i(IVr=pcI~t3Lb-EY z&lA9{wWZrqhNuq%OML0XmfG@nqXQy>N6)G%rhBYCea`!_M9EjAd-KPEIaDfp!i3%5 z53M-GrV{RUg;F3;^u)7zv+T=|x(|eP$FFycC%})oq{zIO0V1WXn zH~#2u{PdA@S45-!BBBBrSG*_``WNB`mDhY_=~XXzt99Urk%Aj^a#}gHHWEiNL_3g7rMQhhEV#gx;z$l1qV$mV07ff|$%C&564xa!6 zlrHtxV)H<(o%se-=)%HPc`Aozp0#EOd89uB%uO!xT>Q!qCM=k?eRbPiTP^VvmQaNt zHHE5oWsm+yj{v>d;JkMHr?J#BUX$jbDUA+Ssgu;WeBt?1t{%au6r27#nA-?%U0lxW zqg}#{+v#fInIj(uv9m-E=J;dU##dffmagqN1gyk|?^c4)Xf2cfl~uD`pw1|NgvzYE zDrC(G6SYp23PRiQtvrh};_L24fLwV7iW}NLpxe{<-7q;u{NTR}-WQk6XU=0wBUk26LpPE>9P)^^jyh#R+{g5BjDns1JDA(+Qy)jQb674 zn#M#Ahp70GBd)e~Q>$Qh;=?N-EIOB9X#jl^pXy0^+QCfMJ!^V^HK029%YLhawy>yU z(~YNz*ryyXnG1GyFSNTD>j&(T*c-LdeE_e@xKuM6*RiJ2M?;;R3!@t})gPCYLwbP8 zs*uQn;hMWnm%yu&UlTozana~bmdSis?lsuQ7qU$G4$DTz#nL(zFLQ9P;g|YVsbwgg zZ-ZIPFVwUGmb$#*w|XaDM@`@J(nl|n+0t&Q%hvrKGX7%?%5NNBi#4pLLPZ&dL%dN&x1{d)i7gEq=X zns{IeRfoC}s_t1>MdKX^OQFM|;+u73get?kU@Fm%osaOSNXl&Tu|ZhwHt5O36=SVC zqQb`}WxXG6{}r|P%fV_d8tN#czo{3|zy8J@VE-!wAYQgGUB7%3#O9j)DRZ98Dao8G zs~z)pjahvnxLZ!~Z+-I`JZ}kM6AS`@=Wz*f+Hjtgs>DdnCU}1eHGDZDX;@i_&h8jU zB-mIqv~bEABhi(eJu5?`CC$>}*u<`5rSA2O4dKz8egiOO@f@8k!IVE_N&d~lu5wQs z&wn8D6^zrbS+C@2(h7fM$v#~j5GKhI zKjp1_>PGNs7Ok#yGDuwU?Ag+IkUaqHtc{QEZQarUf7{>hI|$-0Jr4kWyXXgiok=V2 zDHvay`-4Fp~@>cnkBKDcF5L@GXEDu^YHgp~UP)!gaHYqL{ef zUjCD7#sb}>gO+vQfASw+fFQKAWp%J3+xylDz(SIzA}sdh)xGT7n0Ijr_QvFTQh%AJ zC&udkC-^NoASZ*%^{S@yWm~&j6IN@INuq}Xd%EuoZ<^#lI=4g70Uk2_j~rDr@yr1= zo`27?myM3z8!{QLMAh#(2xzi4Tr^ZkFZPTaN67gTGZ$IS%D1&8rsjyvM@K7psMY{j zTXBMD(#LHez6oSrswW4Tt+o>bGelylidgsQI&b$z&>pzTzXP=D-hfOOF@bTal_yNp zfhTV()_b~f?Md{>E9KVywf@h6UtR!O~_l3+yMNG*+-`LDC6ORaSLH-;Dzjiel2tAF~*7owmp3^M93zEZy zk&}CSdwWx;_W4OZos|K>NhKASJTRQHs7*J%a{8-X{b$1#C)Gx{_n9aAVoJ!?Z;h-1 zl@}ie^Hl>mLi(89Bt@ju=qD3>zAHm;o^>8ON>-<@rHjU96w_{`eFI)S;pF!yVa8Gk z@>bG|HKz^?)W#4OQr0wI4&8DxyrQhQZfyQRkpUy#&Fp2|Os^?{Ny6!ixt^`TG4r}L z$qSv|I9EwIaEXxiETEgg=N?#q>I_(DluXg; zJ%*X9V`{8UOh`uVxa!SfyP*S74j1#B6NJO-r4)FbmXsySl!h=M}46 zxjxFl2|)AH{LvH|R#Td<1QZ=ya4eS?8Sw{pPsh!doBSb})s;uSmXc zw!G(krx!s@5A+QvHJ)n;J98UN+(~G>U)r_WVgmOZSGX-pPfm23vHM!`+QQ_9BT(RQ za_Q{rUqH+1)owkR4c8i|F}x8WwNG9B*@>rAAeDV=n%N)ID#5jX(ZyEge1AcOcSBo`KM~(A8bbdUKp6BqQyG*$u>i3yQAbm6(ufcN@eo@n`2dY$=I@u+3N7Iht6GSGqJ6Jh* z?Te~HRzh=Si|SAO(7On2S^Ch?XE~}{M8g9r5TAi#!11M+OrQq43l(jnvqX2R$^R>a-da1dn%GIc($J=k&h62;=S?SrKun4>Wk&cjcCEunn(g`@fH z)g(3A?zhPJtc8Z!zT+f*Sz!&eb@SjJT)$%!o_0q&u*wvJ^;m-xsu&4Qcf~y;_6SC7 zamFcD>M2^U;T1dnB&vfzmF(^ez5S9O|2^&hP3ZpRO#$chfFX=w@J$KtIF$N1A;<0# z+F%&wA|8^s7@M$0*{|~L}4LEq|D&`_k?ZH>}R%NEO_WdsUg_Fc8#P% zO_s1y?|O-0!w61DET5XXvc&||Y=X$)U()Kmb?5*AK*1pVmb|!_it6T}TtzLNPUG=| z92<~VjDDf2q)xwg(+JR$`PhAt7>?%zSb06Y)xS^9KB6*}IOre-Sg1xYIBF@P0Ll0y z?{5i{18Uxv$5aQ2)~R4^5yu6O$;)f2PIn!qN);=%F!#7AUd)1FKecI>f4{&WR2%nG z@)HtkEbIK6M+p#z50deV!EY?S`xNb-ahAfC`W)Flen9B32C!-B$_GeZpn7RuL13EQ zt%*CF6VX`E(&15pdR8dt<(h-$^=D@0=4JxNnu)gd4`u94ct$>?x_(OH+OZ$2$dBB* zxpIOVWSCJ$V)BK<$pHI~M^F+I`ikFey35PU{-VOp3lW?3z%36Ifu!=fUhV0Ll=go8 zt=NM$gm4Q~K|23V`%W12!{>dn@lSfpygTAMFUz44aRbg8egG&C82iM@-N(M~N(0ILP4v$l*|dOs5o5I`y+>^m6)fMjSj7q#ap`9J^wG7;*=3dw0A z!=HjwOu6kE9SB2+R6fn~)~hk!_AU@mRy|)J=XMD zCO7rQYD?UBH#_Srx@uJ#^)$+3gTAPs*iS zmT~5(Ft3X82C`u|9^|6PGSRt&YL1T%mKgI|g+viWHHS0c>fCq>1~mMi(1$n(`arq^ z&-YOY`f!BSKb6g{aHf$-&Cb5>%BFqkf^{tTB?T;uykns-vFm0{81+M`bKP?&lhvNDI;4EXGuF#7*k`ui~F? z!HjOHD{b&FLQPLzLsXRMI(wY00H372p~1cj@q$9XTI$+T%flL9zP0WZ*CBFZ)%${u z$fxW5gpA>YuLtc9QQ6cVrUjW1z(mUHkiMF8QtXII$&Kq*repcOQIUSr0>VbddIkri zkOe{_iyik{9xl@QU#M?{+O|om_oJwMt`QRxrPhAJMnC~BV*5^;?py3-{X_uj6?Z>y zO7JodptOC2Cg=^l)w&QnM^;%GrWF@Q`K(HXJ-n4;{~HrGoY2QG5ITb9c9&z&lGkQC ztGSXs>LCEYeE%BjLHD1897MuilCihgjFoI&>SJD+X#`mGCd5JbhS*k+K)X`}7ZBvM zV;q}AeAgJ?g!e*#>(%6PtywRArv87IaPTmv5#ggl zpp&?;Q(r@VUJ1yg03_%}tZRjHa}dhX+#M%X0o-Na<-HTlns+Zf>QWg$%p(A-V=-hM z`#$a4Do*&e8$bNkuNwvZ36%Bpdp*sBUJYhKRXu2bK#Rb6742W3Hd}pm-FQm!B0`O3 zc&VlmI05i$Zmv{M-s|0BE7r8pN`(nDgt@>dioa7ZhfnP4MwE`Po?RY#5)sg$avS|O zWpc1e2A6;k6!OS`zQCzs{~PY?|FL59+)=>+cdwgjD&J4=pI)Hp_@|@q+eMv}k^@aj z01H;kL3f|iJ=_o$@PCbArCDx$Jpk|pfgG6QPqub$)4SgXbOC6KY6?IO9VPZNgn}x@ z$wLh)NXCDljsPq8J9Xp-WA@{sz<>lNzgmCA)e%z>fG`6HWCuB+g3mlPfOmC}Oul?t ztL$#fF+)oU!Fx}txB89=1MqXjt6^JpV*e+P=$m;3UeHt;d*GxyF{-V`(K^XUdmLx& z@9!_LQH$D@{UA}Z%PK=cE=DrYB*7>ijmF<%(GHBEn*D-x|blPe+E|-N9kA| zQ;$x&x=Ze&{#=%m>Tym`vmI&(x_k6bg)WPHFnne|b~tiymC4IyG~$?v8?}Eb!%P=; zC;L75*bihk`SFRl69;ihe&Lp%*yCTGhg$X!hvRGzi@`;AF+&4`r-$fK%fX0do7_GpRd_fU`fIQ0z_ zzepzywaLcp+dtd`apnF=D(Uo*M~P8i+nm?p1!R15cGQKh)f6Cc zSVJ$OJJx|`U;uP@H-$_;D65}dMCIb@o(otUZFlK-p(8LA{=$X=%CwDsp<`hl1gtPk zyXxSTv#$W4IjO|{!jEAdno6Y~H;hU(_xOLLeFapM-}bhI0-~gp(kUXKpfn7PG%6u2 z-QDdd5`r|+p_Ec14MPkPBHbMW(hOY#4Dr3=FYmp2@BQCzEthMUc;EA$v*X#%-us;V z3;XdI=>BnGobfvThKx6``z$p%nD}@`N#Cp6Aq90JSW8DJ!l|NULeR;p1MFz|4}$Th z9ov>9tIn^k`v_z6ZQfN3yKl8zPzaL)xLEXD0wpw_T3Z^efvKCq-tcEbuT_E;(MN88 z&(JC8fVh1I@#hds*br*4)k~(JvnRu6!w#qzQoix54^`wf=;*|2+PKjr>PR9J(Mc6xJ95G=WvS__`zE>lKNDk=2 zQ9baH zFYF(^O^)>FFf`;{!(a1B5G}5C&f8F|cbc{5Un)==BEXaeG%d8D=0nF4=YdlU(QI?z zgZsnrz}X2F*`K^lQo^dbg<&B_dU{$j+OkvHGnMPnB4>^j>Rl_v8A!RXj8rXHPs#mF z_F&qP1+6;vUPC&B@!p&_@yIW2RbA#~F|_w+hd8>}T9G-62|u|R+h(Zlng`7+{ZaiV zrthDlmo_-1-6Q(_^z_W!&ti0N0MAMty`>6pz5==t_2L4qcJ2ePE=2P&zO*gXBF@gq z=W%=2t}KWB^|*hcGN6_WT_~d_`PUXI+tgR}bbte=;)b|@2Bd?twf57~(StKP^fsWn zCN`soX%Gu-^%_GbO%HvdxsLCgd*)=sS~nov<_n$UO6$7m5ZERBc-Di$*K{@i&aTHBphPzUU=${oXmx=Dvi5F>thB&!1U=q0 zF8RuS5m!0(AoulLCG2nqwqZZ*bdv19b2ZKx3r1WM0dLYYQeq5eQ=U z`*5q3)iRzu&@Tc+N>e_HR6BHwS_#vJ?5TO_y~{s`v*XZQAo zr@oU$uQvPlmhW-K#u0{hK!bN4sl_9UeT})PB14F=+%!ru5NA0vVPPS~rynQbhv#ku z&w-s~CMrZDRaM!t@dWK7luJ0<+VbUUN0zH0htq47p5@_yE|9g|AZ}|7eGF^REO2jq zg$uOvlC$NeT_#%-zUy0b>g;7mwqtqls@M&u#31Y^VcKtIy_>9h=j%nir|cVFk7Zyh z4(i~x&-(DF2mBUEz;^uVVBL2Ya2AW)=_;&dAmURn4Hq}L{IxCd6co_%W>N87*WC## z0-$eIxHr*KmG`Io3|JIzsErahY3xr4PiNhBoT4k(D`$6d1=@vyLxN~h(nqWav!+|a zA3RjeARjdGjj+i-w|*L-YwV(>KL+IZ=|1A)g?B~H32uIi^j$NwMT1=MW}9&`Q_;toM+}|SagV=iCB=Ac}KMGOnv{5KJOyJl{V(59-*(I z*LC$*0qTkpn7Ee9lA4N12kv>zM*nauiM*7x?-OS46u~+inUS`};s6+9$|*w1@D93% zJNoZP|5aeY%}n>cZx@c}0Q=4}gSVDYVxu0=8Oju(EU(APO5tY8JaFoPy5S|D&7sd1 zJlP3sM&XjIYiy$duQ?xcb$x8O;wL%b^~GcFvgw#KxVB@mQ?4LHiwvZb8qH{agZobI zqCg#WgYC2Q22qfE3-4r-le-Wr@|LZKdX;8m+$$5HtH}=7xeR)ruVsX~ZHWZe4I^-V z0I#SCqaZ(6v)Ilf;A`K=*ucq!yW>~DhQ7T?Ef_KuuL>$u6-=g#-K(cq8?E6A$YtVE z;ARJ!UV-LzyVmztc}1RSXasCtaH9`blcVxl1v-89fW0LCgmpkQw0(Em<&otFx*pEm zJ1yT6N8s#j3o!0Amtg0u+KKX?{A9I zc+yoOdSvn_cy(VBI~%>!BVqVHvs=4pA}ChB*mPw$d73r-U5}Dn-ZZO-iQ_Vjn!)3` zT!DJa-ogwE)z=ggqK6KazDkrI@!78RMxI0liqIY$y>2yYm1qCHxfZb->~(6`5pW0b z@=69LX#7p&*L-XJbpIy`R?ZP1zAcNTG~ETT=5ZkUEcQRm(gXe3Wr}?+XhFDV=P6v< z(IO%PQTxfabXC4H@)8&@!+Jd>VqEu+j_JY;yV)KToBvdO(X#Ct*O>2F>Nc}5+ObtQ zr6)6`KGRUzuoLrFl@a1r0l|+dqmkuXKkCae?`X;R(R>9$`CT&P1fAviB$pIsurvVX zq?#;Q{v0I`cV_84F1j;0o<>zRus=jgM=g{iP@#cqq!eyPCR?3XSEjK-PrEOZxb3zVnP5*{d12QKmIOr})g=z=b&LBZF1~vV7X5tOq))~mJ zYGE}6*o?ce#c8$0RXrV4mN?8S3RGwQtDgVj9bm6D`TLx3XLbOay`DCC(!vpj50&Ew z*-?=I4L;x$t*HuUMY8*p$i7yfP44EMdszaX+(cV}*-|vmnAV4fpikEV+St}ohR`c2 za2pJJb}Ec-sJ(zsQ_x+6Pm`A&>Qnc8H#5DZ2^$vxDet(BU%iH;Pyl->j^uX<6(z=e zZOAk%p^yXi{Mh8!($?0ZoL0B(Lf#Eee7x`yi{1E{ps%);2F2a6nLE!MWmDrL+6Qqa zX`B#Gud-ZIp$kVQzzwzGJNunG>GgJq7xs-YNewx^)E&4lYp5+~+e|Nn%IkrO)=g*DKJi5dYkSuiD@Wk0x*jHAr z`(31oH^ZxHpwfX15V#J=bO$uVAnGF z*_b^G_eg~eK?(|9zksnNAbs2q#J&mS2M5xxO8VOs&^wI)I|YAXSS;tkOk;P{0jebP zpQ@%M!3yz+066NF*ZxrYgG8nm=A?_nD;mL~t#=pNBNUq%h5+Z7$OsJ^gyt=*9!p+m z&b{PyPI?I?Y6^Nrp}V^uUwifD!k79=vc-VAJ|EwpyTpA(+MW(lwf3_c(%)!n4Xj(p z_Y_!b!h&;e*>{7=1Zv0XKQ~Q0BTd;oePws6;Cj)^tFI8_1{+;Ij=qLFJ~icE=FI?} zZ~1G9OiP@r>&+A$Mb5B%vcETeXTHY-8YOOs*{=9-Z~`YVP?GBxaq;f$NL*G!=Aid8 z{8K6a`31O#=tmo_%0{@l+3!heYDS=_n1DEY_%Cy#I~%b!vKD=ZLL@{ni_6o|95@ow zWh%L{B|^kck4sezUbFpfH+T1oh*(r7^Rmx&HP>mjbbj5A;G z$*ElShfQeXGN_Jwy_WD9!MJ{)rMeJz4ia=#b8c=TqgCNiE>{ew9!`S>L zr$)&RkjW5sF7}9*KxCbDnQw7Ya)>|XsP#Bt2qiwOasX^xHVk!YF*{c2ou5P(?f)6~ z{q+JUB>>KFc-4aa*YJ98cvgEqUtANZ0i}n$6-mXzC0w!El3Lja0#l?afcTti5-G zk6AsYUW2CEN_!wXx_)|yI`5b?P3`x2DbI5g-|Ik-5NMi?15)?N+qCU_IE&(IiRl&@ z>+w;ZMw!Kf|+>p1kEZw*4# zxmEu7MB&0Vsgla{iUq2?pKsm2qb9b;C+qA*nypMnw$`E2_&`T@)I!~S7dG#+$VlGG zy0ua0h5^6YA4B+SFn_+vT)AxjDH&vui5JjYoy#*6yD`RG;@t0%O2GJ{u@{HS4WS5KgDFKXg_#-0kUBXlc zvp9Wp(jby2`N|$ON5|f~YSDBCCBAkz4zd zPjOt+UjAHmeh5`7_cn-U)%B=W@`;j*^6N{OEG*lwcc=c|aqOSC2DPz?EXh}L;BvTd zo1;B54~wQi;v0X;z@O9pLnJb@FquVGK2mNF|1KgJ*a|wCU$#_eo`5<1W8rxRw|Peb zlN1bgY^L}i_%Ww6AnlcJk&3oCG}$=R(ap|!z-i5$_Q4~Qre*6$#)7G`O`4*}_7e42 zdxwGt^0B5B{S1PcZ6T?B`*=oYAJ0c8cC_uNCeAXKGOV?PqY)dN8l-Q(-4z}U;=bKo zH9Fy>)8?#p^B|m&u$FA|A$RH5dbKKTo2$PN@n7f{Zd^no!`T(nqw_icvnAt?CRD{w z#b4va-~L@A)lM>VPYGk0z%U3(%t5He-uP#RmFOaDTA2mjP-Y4V}b*Q1~zu>k2>n*#E&`?3p~ z*TeaAo)X=b1qXaOZkwQ(k{87%B~Nub4(>9%>o@SaS@%2{R0z`*ay@4iOc#0|d~UJ? zc_+3Z9U$1pc}s<;3g$C{iO-fyN+*B}gYwshxWJUwoOuN%7Rmg( zaS>m=dRPBsBe}}=2r0|8GhwGOn#dr#U@hE9a9f|;J3?F@mwLGT?HoT)zU2fm0W9pGldJX?GSYpfdXdw&)5E zCT_Xmi$I)>st+ufxHpK7j@R1O>Nb76hP`2m6i?a%m_=?kwwhzVdGcIl8iE+{iLN^1 zqdPZxl1^jkZB>LvxKGCh6$ftaj(bDNwJ*X1pTC`tjmt8I^plHE;8g#0e~&w-5-BN`>1hH2_v*yUxs)bXZYjH}iG8lCayJd6 z>JV_e4|=aB{Lc$SLzHOrHKk$V{Mnw;mQ*+WTqGgQrEGRgijo&SopE|+U7cSIM<6nw zEAjzf!Q`}e8GofJXk)s?TV|JdZ^Pl;88~o@EI9NAU}JxLUrh(oBNxK!SKg^L_G#Em zHal|vJE?@#H0C}zxQu*OIM_nD4U9`qbotzTT#J`~tQt5E95d&(TG^?MqJ2fqn9E7{ zzgV%03#uzDU}+v_CdA3}ZyXWQ9l;fIC!gHN?ER(FMBhd><^6!ZR(a)nwEC@H z_4OG~NVs^SREysYGL14VH?>_nN4wQ^Wvb@ZUHsZUcqUJzukcogM_-ArN#euqb#67 zuLK2j=_hjai}!jIW~(ST_1Eja;cT7k4qR7Rfb&FFi(0s`5=dSGhiS|iC2!YZ-8WRrA`_5U z#crrrk1S}r8Eq?|WMd*XQTka4Fbf|jRyfUK1`PZy#sdmyE%v6OmB_60QxX>CPXrL>*t1gInQbeN-ib3mr33a7iZ zzdQ9z0qk^lgx(SL=dTV?+cnRlRx_9tPE|)@?o|k+8+(Jr6YyLSrMxc2fc{W{C%2#$ zJ6G9wj82RAee+}i*6Iw=6$@1X=5>JB6Mj8IdtWqx4yPen+hDJ*`02l_Smx2?rJf># z@`2ECM(tlmM!&O{!s4}dr!m`Dp+*Es+IE>GFWGsabC+{D0sqcw|%jPZ{ZXZEK( zNY4J%H=8JKMk+qtZT(7m!mIm%-1Qcq*L_an zDxP1#PyEhT`TtSo#jWrI;lMwfH3z&~lHCqCiYWg~WDYx#;YA5jn}+O2SYjyi*D{^? z0NY!>*YwKrmqo0OTB_*H0Zwi1w=;u^08(Rjym*6SbIZ@abJ|(XEr5v!uJX|AxEpXB z;>1_?qYc>nXepn~@OKt&$Q(%zvS35S0mrHTqJy3I_Cv7G=9%;XHB;&2R($isF}r!) zwGlS}ECKi@K>LZlXzv^9ZJfnKiX^+-N3VarRObsbYilKZ%tGICgc2?Ck}z7~cHV#~ zyVLj7o7qtPC_|BaTDWIP-aI8V*YJml{Szqu^UB}G01IzaR7M{1jknB9% zsaS1G6r$3HSu3M7MFTK;nVFaH2(J!&#=^j!;Mg|ud6o7&S+@;Zk26RBtfAzr$sxJ$ z_yZ4?5t)8oA@JXI=EoK7@O&B1{DljPWC2tU{%~XEy$f$nxdkk(VVHosgLZ)Z7hv~K zo3rwC48N0zKW%Ww z6uBa0KT+%F@DV2-$w3G+P1Jt)zI4mShh606KZ?yC7fQ7N2Yl3?b6dxi;&;(>bz@0X}N;`3^`wXw+BwZPY=!ebPq1+3@|NaJI{ z^t#;(zCEU@G8uk{GOZ*qRIEFKw_eBAg7_DnLqG$NmAp5f|9m2Ppq1{c5|7lrl1^Um zn2I0^+Yhf({Q~G_66ce>NM35#J)!r(RF$$uth0vQj}rd#dwndJqR@rH z)Ej`6RG1yzq^fEUd+^O)@PjBFcfvPuCZ181s%AxnmpzPXP)wL(r0|vuL5GoG@wKO| ziC<(*bJI+N-f`iJ%4KF_)4E1NuN$~t12Fl--ne-wm9;c$iUMzSHuK8e-;^YWZ5tn1 zKAANw#wZuti}5sPV1M|)s&ZhTU6jB(TwMODNH&aOtVk5}{=%#x-HtWcUq|&`LgEYy zyJQ~mZ5lA^nW(tu^hJwkbU0SYazct#C9F97VY6F=+`kJK<6btZ9-y#-E3yK7;BTO^ zMYXE|?}36>2 z=`fdB#hYHa?9E$Z6RCk6rjTh9%k|$n3r0{tQRy8&pJCU*)a}Nrfc7Ye&t7PI2W$+g zEZD)igALXEOHN{kU6f+B=|zXuuAtSszEO*uyLRh7+rXIP=efkg!vaMym?^kF5XVZ{ z^SK+=A3FF(bJj-D#v1O-DC{e>D>w_%3Rs`%&lQ{lj{qV5ZGSL?>l~%CB^|*>?SPBd zcWx?wP(Kf7-J{s;%%coH?`Lb6at{xT9(iuJg`ICUyyb%I94s2f?eNKaK9~25@-V{t zxw4~;pE0@RQ0QP293OrteCotKpifGh9S#sLnb?=P(oi)rx_%Aw9^7?VP#AHIu!~%b zfG8{&4axby^*1$!cK5^y2d6{WD-8zd09bw%4a;BOS(g6ODE~}*|HFHk(%8A}&jz2O zpq6tu`6w#9RRV?VWmnSQpW#EJuds55Yfg%50YNCil@tsp01g3{Lry;@F)3RPJQ5!^ zt>>)6JGhaIg_BTp*TRr!d+XR&iFE)ge;_$J$bxI1m$*{mH2K;yitdBXC1TXJvA{9J zo<@sEx}!AL6?=Q?m39F&o?cNJnI8`_8!dO?eQbLRbU849&~=#ue~KJ8F0rwU16Fp* zLxW>%L>)phgnI)fPPZC=O6xfMHNbn;Ic3Y?sQ!|nQJ2rJ04kv6;_SFxC8V)|I3--K z#RlboII^s98h`8Kro%3(`14a`+!w!b5_%5Y74_vQItc!&Xud-n1)$76e-0hS7vdP; znPiVoK43pv;Q0oKR*EjJ%}L2viHz=(fF&^*8o^GPQ3R8}fkwbG8JzfFkff6#U6i(n zEEVZb{iB>RIav;w)TS`Qv0Beg2ZaBF-4kMT^jIR8gfZdtk)xNSG_oK5$6f%yY$+JL z*rI=T%6aKO8>T;^3=8hh+r^N(Gb?Uib8j_NA1N2v*!XX{XPm7HkYHeQNrG?LA3fPU ziJWhY)JvQ6AwGPi2s~;8K6PBPvm{{{5Fr4YT&V`5*L+rEE+b*ohjLUn zTtRFRHqx1-*rnaeV>uaE5vWtV$Zz-ClTU>de{oZB20&kK#2Ebx5%7!e15;YgzFj*^ zrz0@5KuV)$lqV18i~N8An3~u|QT(m^;(H_mG|U)1W!=()d5J=g4AH1eJZV2FZu9JW zQ>41qm~R=odEsijq1mrY!tL9D{d@Uf{pU0JGdlvXvE(@*%i!|ikTZbB9l|vHHf0q| z?nbyu4GfHAWju9zHoZ%~@`D;v<+_s&R7Ouoi< z&=cqn@qJ?9ob&@=y)k^={{h0~Hx^25EigcIuC^nLoM~`OCO-aL;riM<`HHyoLq z!|DeJ#6Gcb0E4l`l-rM|1C+-n?A&ANddAlDmKNMfjw;$_Bgg%@Kku(Z5Iv1*Etru| zjm^)8TQ*@Z-P+zT*97|*9!3r=f0tw2_h=)9C$em?C)e9IcYIS{95ar$@iQKnk>tpr zJ8LuZFz+Aez|6BU7BZP3RVcvIrEvqY)Wg3RjvJTSXnmn`MzC@4!<8DCHkp}Rxz2<4 zO4)xGh!@@%%(iME)~dYFlpy?LeVVYvNvcuFC@Ys5zz5vN7b&ye$mcZ3E}47Ye1Bu* zy8oA^`z6gkKK&sF;`gr>>K%CdWl@aJ-HPeOz`tWLhVed2^Md~b1UOmX@--R|=K03{ zp!w?z+s8}!$L^omPwWRJ&`zFI9*PxhF%2C?`K2$I4D&PNMeXYTCu$I&NQsZuzdPKW z-q@?J_nD&^K6{J%YiYG3`rW?MS>H) z-TMlTY2aNE`IS)=XTLgSPBAt!v2&SFiPub)S>p}vKGhE!04AY$7FW}K`1Dm|HiUo9 zCr~t}c8*sf6n?{%4(yI*nbOoA0MNGy^MZ5FXZ5&p+y4-dB!FFCjRAerGYNxbpoxR4 z_@}Lu>P>kHz4BX?aKr4xt=JwUci9afg#)|WAi$zS{hE^&m-)P{Q|tX zFuZ`8b;TsS+@lk@$e$zmAHF;D3==B{;ySp5rEExQjSi!W8> z_o=}#B$SL;F}+w)U6;fNuW&S-67Llz)upklL^)C)5liOm<hQIUDu?F) zbI5}`;3V9+dL|1XG=k24=D9D^VHdE8D*c8*Lqqq-@JdFyQmskw51Qj2@A-$P&%<*S zw!^>mZrzxUl+enz%aymsqp_NClfvDx@ zzwo3w!~h`W5Lo{YIflPID|qB`Q0H^`hCovthcThXep(9)8ZtVrwFH0yn7nWramDW z`|j}#W5Y7`!D=ceBbE}(l$w$mixNj+?n-7P?#D)9|Jn!EX~Q)sr8SV~9K_ry=+ zkMw{9&2I+aI~j0+j>j7Yu`Aaibb^y6o49Fk)|M}sJKvpIPD^L#dooLNR^LcGow>)) zn$p?*!jyW2+m8}QN3tXwAi-Kj{itz_DS{Kh@-L(eSJS$-DXX6T3LXF}E5378WZuAO z4uwTHEV@W&MMKJTwi+X|D$zP==M5~|kHzQ2_TNl*3wApTg(mnOi9MEak6O(=pfeY< z#woXKV+6kBm@iJrfrikHf_T|mC$TaxSH{t)?N2fn228tebKvbj1?_KEG?MG2S%z?U zp$!b{^@W(fo94uWx^V;r<)an&Tku z=?YCmK*#Bn-Cj1k;v-h zsq_z|xz09r9=h{|4y5hzE$nomO?CM73v_rKm)>YW;m1^_TT6pL@e)Gs zmHaR*hR@UXoRw;+K!m5>2OZF;qZjBDS~&|5t8UhBLkGH}9ggIt@QVjk+CsTVz$xo} zyW4~@XV>dvyKJ(QUcqw_Q-l=lq~FXK`|vR7O0znf^@`gTo_T%C=Nq$i*|IE}e?jf? zBX{?K^y59`^|C=`+(ih;qyG>MAk&1+ znv$|15_b8IHvp?72);^{c8D0#}ADz1qKD6wLMYT2j~1iConMd zR_=Qf>W@4&%uhw`mHIwnDXXNo*i#`SUb%*jd4m|2#WPzjpRdpO6hKNC-#V*BcwKkp zX;uO~{eGKe>g?@#D73ciIfY9311;X#{lOab_NFTxH{1{Q0fRADWj=rUX9Mh}pjf)#Mc&^_|_;(o4AB>(Y`5&{74QPMM&NhtyJ9^)E? z{$GhL0e(PW7AvdL8Aq1g`67UehiN}QH+ve}!d5~Eq!@GW7Nb$zV|-s8zpU$c{U-WD zX*n(cd;bYtrJ$~&5+rVQwX2MGJ!H&{l;Y1D{w&n^&+h?wzJ~hK&LoDMA)}KwzpwrB zT{Ne|x`6$=B>dry{+mAmr6Lx*qrGvcMSkIDUe=4e7{qr_CcMv>fKV#-+fC8_m3>zs z1&R)=m~H=S`0#g6P>CJU845Vq=FOUuGcowd((ApmORlgA3vnaT zzlryM^MF50Ksi^RK2%;IMbB@%tHYlaUMYD6IEAq1m(<1U%SZagMz;V+_osUO*RRlw z#gli;B1a>;5Yw;8m~Y4aHJ|+3z{?qdb<=bl`%8!a>zn+2SVj1zEGZ8{+-#?np{+93 ze?(o*V6@FGsr98rvp4i=k6r{k{4E$S*PYF

>7`M8m!fjnrixFm19U-#H-X9{kV5 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 z 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 literal 0 HcmV?d00001 diff --git a/source/install/desktop-msi-installer-and-group-policy-install.rst b/source/install/desktop-msi-installer-and-group-policy-install.rst index 528933f7b34..e9cfa04f26e 100644 --- a/source/install/desktop-msi-installer-and-group-policy-install.rst +++ b/source/install/desktop-msi-installer-and-group-policy-install.rst @@ -1,4 +1,4 @@ -Desktop MSI installer and group policy installation guides (beta) +Desktop MSI installer and group policy installation guides (Beta) ================================================================== .. include:: ../_static/badges/allplans-selfhosted.rst diff --git a/source/install/download-latest-tarball.rst b/source/install/download-latest-tarball.rst index 0eb8b39ee55..e42d188d609 100644 --- a/source/install/download-latest-tarball.rst +++ b/source/install/download-latest-tarball.rst @@ -13,7 +13,7 @@ Using ``wget``, download the Mattermost Server release you want to install.

diff --git a/source/install/software-hardware-requirements.rst b/source/install/software-hardware-requirements.rst index 4d74960f329..13dc5328d44 100644 --- a/source/install/software-hardware-requirements.rst +++ b/source/install/software-hardware-requirements.rst @@ -45,10 +45,10 @@ PC web .. csv-table:: :header: "Browser", "Self-Hosted Technical Requirement", "Cloud Technical Requirement" - "Chrome", "v120+", "v120+" + "Chrome", "v122+", "v122+" "Firefox", "v115+", "v115+" "Safari", "v16.2+", "v16.2+" - "Edge", "v120+", "v120+" + "Edge", "v122+", "v122+" `*` Internet Explorer (IE11) is no longer supported. We recommend using the `Mattermost desktop app `_ or another supported browser. See `this forum post `__ to learn more. @@ -72,8 +72,8 @@ Mobile web .. csv-table:: :header: "Browser", "Technical Requirement" - "iOS", "iOS 12.4+ with Safari 16.2+ or Chrome 112+" - "Android", "Android 7+ with Chrome 112+" + "iOS", "iOS 12.4+ with Safari 16.2+ or Chrome 122+" + "Android", "Android 7+ with Chrome 122+" Email client ^^^^^^^^^^^^ diff --git a/source/integrate/zoom-interoperability.rst b/source/integrate/zoom-interoperability.rst index ee77c952673..cee429aa111 100644 --- a/source/integrate/zoom-interoperability.rst +++ b/source/integrate/zoom-interoperability.rst @@ -38,8 +38,8 @@ Zoom supports OAuth authentication, and there are 2 types of OAuth Zoom Apps you 7. Enter a valid **OAuth Redirect URL**, ``https://SITEURL/plugins/zoom/oauth2/complete``, and add the same URL under **Add Allow List**. ``SITEURL`` should be your Mattermost server URL (defined as ``Site URL``). 8. To add user scopes to the app, select **Scopes**, and add the following scopes: ``meeting:read:meeting:admin``, ``meeting:write:meeting:admin``,and ``user:read:user:admin``. 9. To set up a deauthorization URL to deauthorize users directly from Zoom, go to the **App Listing** tab, and then select **Link & Support**. Under **Deauthorization Notification**, enter a valid **Endpoint URL** ``https://YOUR-MATTERMOST-URL.COM/plugins/zoom/deauthorization?secret=WEBHOOKSECRET``, replacing ``https://YOUR-MATTERMOST-URL.COM`` with your Mattermost URL. ``WEBHOOKSECRET`` is generated during `Mattermost configuration <#mattermost-configuration>`__. - 6. Choose whether to publish this app on Zoom Marketplace. In most cases you'll want this disabled. See notes below for details on publishing the app on the Zoom Marketplace. - 7. Select **Create**. + 10. Choose whether to publish this app on Zoom Marketplace. In most cases you'll want this disabled. See notes below for details on publishing the app on the Zoom Marketplace. + 11. Select **Create**. .. note:: diff --git a/source/manage/bulk-export-data.rst b/source/manage/bulk-export-data.rst index 450a8c13a24..ceabc93d014 100644 --- a/source/manage/bulk-export-data.rst +++ b/source/manage/bulk-export-data.rst @@ -44,15 +44,17 @@ You can export the following data types: - Users' channel memberships - Users' notification preferences - Posts (regular, non-reply messages) -- Posts' replies and threads +- Posts' replies and threads in public or private channels - Posts' reactions - Custom emoji - Direct message channels - Direct message posts +- Roles +- Permissions schemes .. note:: - Configuration for data types such as exporting specific areas of the server, exporting additional types of posts, permissions schemes, file attachments, webhooks, and bot messages is not yet supported. Deleted objects are also not yet supported. + Configuration for data types such as exporting specific areas of the server, exporting additional types of posts, file attachments, webhooks, and bot messages is not yet supported. Deleted objects are also not yet supported. For requests to add additional attributes or objects to our exporter, please add a feature request on our `feature idea forum `__. diff --git a/source/manage/common-support-packet.rst b/source/manage/common-support-packet.rst index 7ddf6e1bb23..8a22cd390ac 100644 --- a/source/manage/common-support-packet.rst +++ b/source/manage/common-support-packet.rst @@ -45,7 +45,7 @@ Generate the support packet Santitize confidential data --------------------------- -When present, the following information is santized during packet generation: ``LdapSettings.BindPassword``, ``FileSettings.PublicLinkSalt``, ``FileSettings.AmazonS3SecretAccessKey``, ``EmailSettings.SMTPPassword``, ``GitLabSettings.Secret``, ``GoogleSettings.Secret``, ``Office365Settings.Secret``, ``OpenIdSettings.Secret``, ``SqlSettings.DataSource``, ``SqlSettings.AtRestEncryptKey``, ``ElasticsearchSettings.Password``, ``All SqlSettings.DataSourceReplicas``, ``All SqlSettings.DataSourceSearchReplicas``, ``MessageExportSettings.GlobalRelaySettings.SmtpPassword``, ``ServiceSettings.GfycatApiSecret``, and ``ServiceSettings.SplitKey``. Plugins are not sanitized during packet generation. +When present, the following information is santized during packet generation: ``LdapSettings.BindPassword``, ``FileSettings.PublicLinkSalt``, ``FileSettings.AmazonS3SecretAccessKey``, ``EmailSettings.SMTPPassword``, ``GitLabSettings.Secret``, ``GoogleSettings.Secret``, ``Office365Settings.Secret``, ``OpenIdSettings.Secret``, ``SqlSettings.DataSource``, ``SqlSettings.AtRestEncryptKey``, ``ElasticsearchSettings.Password``, ``All SqlSettings.DataSourceReplicas``, ``All SqlSettings.DataSourceSearchReplicas``, ``MessageExportSettings.GlobalRelaySettings.SmtpPassword``, and ``ServiceSettings.SplitKey``. Plugins are not sanitized during packet generation. Ensure you sanitize any additional confidential details in the ``plugin.json`` file before sharing it with Mattermost. Replace details with example strings that contain the same special characters if possible, as special characters are common causes of configuration errors. diff --git a/source/manage/error-codes.rst b/source/manage/error-codes.rst index 4a03e15c3da..19d068f4c7f 100644 --- a/source/manage/error-codes.rst +++ b/source/manage/error-codes.rst @@ -15,12 +15,11 @@ In advanced deployments, error codes can be overwritten by administrators to ref ERROR_SAFETY_LIMITS_EXCEEDED ---------------------------- -This error happens in the free version of Mattermost when more than 10,000 users are registered on the server. +A safety limits exceeded error (``ERROR_SAFETY_LIMITS_EXCEEDED``) displays in the :ref:`free version of Mattermost `, and certain functionality may be limited, when usage grossly exceeds the recommended limit for users in a safe deployment, including: -The free version of Mattermost is intended for approximately 50 users, and should a deployment materially exceed this recommended size, administrators should seek to either `purchase a commercial license `_ or apply for a :ref:`nonprofit license `. +- more than 10,000 users are registered on the server, and/or +- more than 5 million messages have been sent on the server. -When usage grossly exceeds the recommended limit for users in a safe deployment, an error message is displayed and certain functionality may be limited. +10,000 users and 5 million messages represents a “high upper limit” for deployments that are approximately 200 times the recommended size, which is far beyond the intended design of the product. -10,000 users represents a “high upper limit” for deployments that are approximately 200 times the recommended size, which is far beyond the intended design of the product. - -To remove the error message, deactivate users until your user count is below the high upper limit. \ No newline at end of file +The free version of Mattermost is intended for approximately 50 users. If your Mattermost materially exceeds this recommended size, system admins should seek to either `purchase a commercial license `_ or apply for a :ref:`nonprofit license `. Alternatively, admins can deactivate users until the user count falls below the high upper limit. \ No newline at end of file diff --git a/source/manage/logging.rst b/source/manage/logging.rst index b954347ceb0..ce659102b09 100644 --- a/source/manage/logging.rst +++ b/source/manage/logging.rst @@ -124,7 +124,7 @@ In addition, you can output audit log records to any combination of `console <#c .. warning:: - - From Mattermost v7.2, experimental audit logging beta is a breaking change from previous releases in cases where customers looking to parse previous audit logs with the new format. + - From Mattermost v7.2, experimental audit logging (Beta) is a breaking change from previous releases in cases where customers looking to parse previous audit logs with the new format. - The format and content of an audit log record has changed to become standardized for all events using a :doc:`standard JSON schema `. - Existing tools which ingest or parse audit log records may need to be modified. diff --git a/source/manage/mmctl-command-line-tool.rst b/source/manage/mmctl-command-line-tool.rst index 913fb7772de..b226c1d70ff 100644 --- a/source/manage/mmctl-command-line-tool.rst +++ b/source/manage/mmctl-command-line-tool.rst @@ -3464,7 +3464,11 @@ Start an import job. .. code-block:: sh - -h, --help help for status + -h, --help help for status + --bypass-upload File is read directly from the filesystem, instead of being processed from the server. Supported in --local mode only. + --extract-content Document attachments will be extracted and indexed during the import process. We recommend disabling this to improve performance. + + **Options inherited from parent commands** diff --git a/source/manage/telemetry.rst b/source/manage/telemetry.rst index 6b40a6c87b6..956d8e46d4c 100644 --- a/source/manage/telemetry.rst +++ b/source/manage/telemetry.rst @@ -89,7 +89,7 @@ Server Configuration Settings **Type values (enumerated integer and enumerated boolean)** - **ServiceSettings**: enum WebserverMode, bool EnableSecurityFixAlert, bool EnableInsecureOutgoingConnections, bool EnableIncomingWebhooks, bool EnableOutgoingWebhooks, bool EnableCommands, bool EnableDeveloper, bool EnableOnlyAdminIntegrations, bool EnablePostUsernameOverride, bool EnablePostIconOverride, bool EnableCustomEmoji, enum RestrictCustomEmojiCreation, bool EnableTesting, bool DeveloperFlags, bool EnableClientPerformanceDebugging, bool EnableMultifactorAuthentication, bool EnableOAuthServiceProvider, enum OutgoingIntegrationRequestsDefaultTimeout, enum ConnectionSecurity, bool UseLetsEncrypt, bool Forward80To443, enum ConnectionSecurity, bool TLSStrictTransport, bool EnforceMultifactorAuthentication, bool EnableUserTypingMessages, bool EnablePostSearch, bool EnableUserStatuses, bool EnableChannelViewMessages, bool EnableEmojiPicker, bool EnableGifPicker, bool EnableAuthenticationTransfer, enum TeammateNameDisplay, bool EnableUserAccessTokens, enum MaximumLoginAttempts, bool ExtendSessionLengthWithActivity, enum SessionLengthWebInHours, enum SessionLengthMobileInHours, enum SessionLengthSSOInHours, int SessionCacheInMinutes, enum SessionIdleTimeoutInMinutes, enum TimeBetweenUserTypingUpdatesMilliseconds, enum ClusterLogTimeoutMilliseconds, bool CloseUnusedDirectMessages, bool EnablePreviewFeatures, bool EnableTutorial, bool EnableOnboarding, bool ExperimentalEnableDefaultChannelLeaveJoinMessages, bool ExperimentalGroupUnreadChannels, bool AllowCookiesForSubdomains, bool EnableAPITeamDeletion, bool EnableAPITriggerAdminNotifications, bool EnableAPIUserDeletion, bool EnableAPIChannelDeletion, bool ExperimentalEnableHardenedMode, bool DisableLegacyMFA, bool ExperimentalStrictCSRFEnforcement, bool EnableEmailInvitations, bool ExperimentalChannelOrganization, bool EnableLegacySidebar, bool CorsAllowCredentials, bool CorsDebug, bool DisableBotsWhenOwnerIsDeactivated, bool EnableBotAccountCreation, bool RestrictLinkPreviews, bool EnablePermalinkPreviews, bool EnableSVGs, bool EnableLatex, bool EnableInlineLatex, bool EnableOpenTracing, bool Directory, bool RetentionDays, bool EnableLocalMode; **TeamSettings**: bool EnableUserCreation, bool EnableTeamCreation, bool RestrictTeamNames, bool EnableOpenServer, bool EnableUserDeactivation, bool EnableCustomBrand, bool RestrictDirectMessage, enum MaxNotificationsPerChannel, bool EnableConfirmNotificationsToChannel; enum MaxUsersPerTeam, enum MaxChannelsPerTeam, bool EnableJoinLeaveMessageByDefault, bool EnableCustomUserStatuses, bool EnableLastActiveTime, bool RefreshPostStatsRunTime, bool ExperimentalTownSquareIsReadOnly, bool ExperimentalHideTownSquareinLHS, bool EnableXToLeaveChannelsFromLHS, bool ExperimentalEnableAutomaticReplies, bool ExperimentalViewArchivedChannels, bool LockTeammateNameDisplay, bool MaxFieldSize; **ClientRequirementSettings**: enum AndroidLatestVersion; **GuestAccountsSettings**: bool Enable, bool AllowEmailAccounts, bool EnforceMultifactorAuthentication; **SqlSettings**: enum DriverName, bool Trace, enum ConnMaxIdleTimeMilliseconds, bool ConnMaxLifetimeMilliseconds; enum MaxOpenConns, enum QueryTimeout, bool DisableDatabaseSearch; **LogSettings**: bool EnableConsole, enum ConsoleLevel, bool ConsoleJson, bool EnableFile, enum FileLevel, bool FileJson, bool EnableWebhookDebugging; **NotificationLogSettings**: bool EnableConsole, bool ConsoleLevel, bool ConsoleJson, bool EnableFile, bool FileLevel, bool FileJson **PasswordSettings**: bool Lowercase, bool Number, bool Uppercase, bool Symbol, enum MinimumLength; **FileSettings**: bool EnablePublicLink, enum DriverName, enum MaxFileSize, enum FileSettings.MaxImageResolution, enum MaxImageDecoderConcurrency, bool FileSettings.ExtractContent, bool FileSettings.ArchiveRecursion, bool AmazonS3SSL, bool AmazonS3SignV2, bool AmazonS3SSE, bool AmazonS3Trace, bool EnableFileAttachments, bool EnableMobileUpload, bool EnableMobileDownload; **EmailSettings**: bool EnableSignUpWithEmail, bool EnableSignInWithEmail, bool EnableSignInWithUsername, bool RequireEmailVerification, bool SendEmailNotifications, bool UseChannelInEmailNotifications, bool EmailNotificationContentsType, bool EnableSMTPAuth, enum ConnectionSecurity, bool SendPushNotifications, enum PushNotificationContents, bool EnableEmailBatching, bool SkipServerCertificateVerification, enum EmailBatchingBufferSize, enum EmailBatchingInterval, bool EnablePreviewModeBanner, enum SMTPServerTimeout; **MessageExportSettings**: bool DownloadExportResults; **RateLimitSettings**: bool EnableRateLimiter, bool VaryByRemoteAddr, bool VaryByUser, enum PerSec, enum MaxBurst, enum MemoryStoreSize; **PrivacySettings**: bool ShowEmailAddress, bool ShowFullName; **ThemeSettings**: bool EnableThemeSelection, bool AllowCustomThemes; **GitLabSettings**: bool Enable; **GoogleSettings**: bool Enable; **Office365Settings**: bool Enable; **SupportSettings**: bool CustomTermsOfServiceEnabled; enum CustomTermsOfServiceReAcceptancePeriod; **LdapSettings**: bool Enable, bool EnableSync, enum ConnectionSecurity, bool SkipCertificateVerification, enum SyncIntervalMinutes, enum QueryTimeout, enum MaxPageSize, bool EnableAdminFilter; **ComplianceSettings**: bool Enable, bool EnableDaily; **LocalizationSettings**: enum DefaultServerLocale, enum DefaultClientLocale, enum AvailableLocales; **SamlSettings**: bool Enable, bool EnableSyncWithLdap, bool IgnoreGuestsLdapSync, bool EnableSyncWithLdapIncludeAuth, bool Verify, bool Encrypt, bool SignRequest, bool EnableAdminFilter; **ClusterSettings**: bool Enable, bool UseIpAddress, bool ReadOnlyConfig, bool EnableExperimentalGossipEncryption, bool EnableGossipCompression; **MetricsSettings**: bool Enable, enum BlockProfileRate; **WebrtcSettings** (only in v5.5 and earlier): bool Enable; **ExperimentalSettings** bool ClientSideCertEnable, bool EnablePostMetadata, bool LinkMetadataTimeoutMilliseconds, bool EnableClickToReply, bool RestrictSystemAdmin, bool CloudBilling, bool RemoteClusters, bool EnableSharedChannels, bool EnableRemoteClusterService, bool Disableappbar, bool AllowSyncedDrafts; **AnnouncementSettings**: bool EnableBanner, bool AllowBannerDismissal, bool AdminNoticesEnabled, bool UserNoticesEnabled; **ElasticsearchSettings**: bool EnableIndexing, bool EnableSearching, bool Sniff, enum PostIndexReplicas, enum PostIndexShards, enum LiveIndexingBatchSize, enum BatchSize, enum RequestTimeoutSeconds, bool SkipTLSVerification, bool Trace; **PluginSettings**: bool Enable, bool EnableUploads, bool EnableHealthCheck, bool EnableMarketplace, bool EnableRemoteMarketplace, bool AutomaticPrepackagedPlugins, bool RequirePluginSignature; **DataRetentionSettings**: bool EnableMessageDeletion, bool MessageRetentionDays, bool AllowInsecureDownloadUrl, bool EnableFileDeletion, bool FileRetentionDays, enum DeletionJobStartTime; **MessageExportSettings**: bool EnableExport, enum ExportFormat, enum DailyRunTime, enum ExportFromTimestamp, enum BatchSize, enum GlobalRelaySettings.CustomerType; **ExperimentalAuditSettings**: bool SysLogEnabled, bool SysLogInsecure, enum SysLogMaxQueueSize, bool FileEnabled, enum FileMaxSizeMB, enum FileMaxAgeDays, bool FileMaxBackups, bool FileCompress, enum FileMaxQueueSize; **BleveSettings**: bool EnableIndexing, bool EnableSearching, bool EnableAutocomplete, enum BatchSize; bool FeatureFlags + **ServiceSettings**: enum WebserverMode, bool EnableSecurityFixAlert, bool EnableInsecureOutgoingConnections, bool EnableIncomingWebhooks, bool EnableOutgoingWebhooks, bool EnableCommands, bool EnableDeveloper, bool EnableOnlyAdminIntegrations, bool EnablePostUsernameOverride, bool EnablePostIconOverride, bool EnableCustomEmoji, enum RestrictCustomEmojiCreation, bool EnableTesting, bool DeveloperFlags, bool EnableClientPerformanceDebugging, bool EnableMultifactorAuthentication, bool EnableOAuthServiceProvider, enum OutgoingIntegrationRequestsDefaultTimeout, enum ConnectionSecurity, bool UseLetsEncrypt, bool Forward80To443, enum ConnectionSecurity, bool TLSStrictTransport, bool EnforceMultifactorAuthentication, bool EnableUserTypingMessages, bool EnablePostSearch, bool EnableUserStatuses, bool EnableChannelViewMessages, bool EnableEmojiPicker, bool EnableGifPicker, bool EnableAuthenticationTransfer, enum TeammateNameDisplay, bool EnableUserAccessTokens, enum MaximumLoginAttempts, bool ExtendSessionLengthWithActivity, enum SessionLengthWebInHours, enum SessionLengthMobileInHours, enum SessionLengthSSOInHours, int SessionCacheInMinutes, enum SessionIdleTimeoutInMinutes, enum TimeBetweenUserTypingUpdatesMilliseconds, enum ClusterLogTimeoutMilliseconds, bool CloseUnusedDirectMessages, bool EnablePreviewFeatures, bool EnableTutorial, bool EnableOnboarding, bool ExperimentalEnableDefaultChannelLeaveJoinMessages, bool ExperimentalGroupUnreadChannels, bool AllowCookiesForSubdomains, bool EnableAPITeamDeletion, bool EnableAPITriggerAdminNotifications, bool EnableAPIUserDeletion, bool EnableAPIChannelDeletion, bool ExperimentalEnableHardenedMode, bool DisableLegacyMFA, bool ExperimentalStrictCSRFEnforcement, bool EnableEmailInvitations, bool ExperimentalChannelOrganization, bool EnableLegacySidebar, bool CorsAllowCredentials, bool CorsDebug, bool DisableBotsWhenOwnerIsDeactivated, bool EnableBotAccountCreation, bool RestrictLinkPreviews, bool EnablePermalinkPreviews, bool EnableSVGs, bool EnableLatex, bool EnableInlineLatex, bool EnableOpenTracing, bool Directory, bool RetentionDays, bool EnableLocalMode; **TeamSettings**: bool EnableUserCreation, bool EnableTeamCreation, bool RestrictTeamNames, bool EnableOpenServer, bool EnableUserDeactivation, bool EnableCustomBrand, bool RestrictDirectMessage, enum MaxNotificationsPerChannel, bool EnableConfirmNotificationsToChannel; enum MaxUsersPerTeam, enum MaxChannelsPerTeam, bool EnableJoinLeaveMessageByDefault, bool EnableCustomUserStatuses, bool EnableLastActiveTime, bool RefreshPostStatsRunTime, bool ExperimentalTownSquareIsReadOnly, bool ExperimentalHideTownSquareinLHS, bool EnableXToLeaveChannelsFromLHS, bool ExperimentalEnableAutomaticReplies, bool ExperimentalViewArchivedChannels, bool LockTeammateNameDisplay, bool MaxFieldSize; **ClientRequirementSettings**: enum AndroidLatestVersion; **GuestAccountsSettings**: bool Enable, bool AllowEmailAccounts, bool EnforceMultifactorAuthentication; **SqlSettings**: enum DriverName, bool Trace, enum ConnMaxIdleTimeMilliseconds, bool ConnMaxLifetimeMilliseconds; enum MaxOpenConns, enum QueryTimeout, bool DisableDatabaseSearch; **LogSettings**: bool EnableConsole, enum ConsoleLevel, bool ConsoleJson, bool EnableFile, enum FileLevel, bool FileJson, bool EnableWebhookDebugging; **NotificationLogSettings**: bool EnableConsole, bool ConsoleLevel, bool ConsoleJson, bool EnableFile, bool FileLevel, bool FileJson **PasswordSettings**: bool Lowercase, bool Number, bool Uppercase, bool Symbol, enum MinimumLength; **FileSettings**: bool EnablePublicLink, enum DriverName, enum MaxFileSize, enum FileSettings.MaxImageResolution, enum MaxImageDecoderConcurrency, bool FileSettings.ExtractContent, bool FileSettings.ArchiveRecursion, bool AmazonS3SSL, bool AmazonS3SignV2, bool AmazonS3SSE, bool AmazonS3Trace, bool MaximumPayloadSizeBytes, bool EnableFileAttachments, bool EnableMobileUpload, bool EnableMobileDownload; **EmailSettings**: bool EnableSignUpWithEmail, bool EnableSignInWithEmail, bool EnableSignInWithUsername, bool RequireEmailVerification, bool SendEmailNotifications, bool UseChannelInEmailNotifications, bool EmailNotificationContentsType, bool EnableSMTPAuth, enum ConnectionSecurity, bool SendPushNotifications, enum PushNotificationContents, bool EnableEmailBatching, bool SkipServerCertificateVerification, enum EmailBatchingBufferSize, enum EmailBatchingInterval, bool EnablePreviewModeBanner, enum SMTPServerTimeout; **MessageExportSettings**: bool DownloadExportResults; **RateLimitSettings**: bool EnableRateLimiter, bool VaryByRemoteAddr, bool VaryByUser, enum PerSec, enum MaxBurst, enum MemoryStoreSize; **PrivacySettings**: bool ShowEmailAddress, bool ShowFullName; **ThemeSettings**: bool EnableThemeSelection, bool AllowCustomThemes; **GitLabSettings**: bool Enable; **GoogleSettings**: bool Enable; **Office365Settings**: bool Enable; **SupportSettings**: bool CustomTermsOfServiceEnabled; enum CustomTermsOfServiceReAcceptancePeriod; **LdapSettings**: bool Enable, bool EnableSync, enum ConnectionSecurity, bool SkipCertificateVerification, enum SyncIntervalMinutes, enum QueryTimeout, enum MaxPageSize, bool EnableAdminFilter; **ComplianceSettings**: bool Enable, bool EnableDaily; **LocalizationSettings**: enum DefaultServerLocale, enum DefaultClientLocale, enum AvailableLocales; **SamlSettings**: bool Enable, bool EnableSyncWithLdap, bool IgnoreGuestsLdapSync, bool EnableSyncWithLdapIncludeAuth, bool Verify, bool Encrypt, bool SignRequest, bool EnableAdminFilter; **ClusterSettings**: bool Enable, bool UseIpAddress, bool ReadOnlyConfig, bool EnableExperimentalGossipEncryption, bool EnableGossipCompression; **MetricsSettings**: bool Enable, enum BlockProfileRate; **WebrtcSettings** (only in v5.5 and earlier): bool Enable; **ExperimentalSettings** bool ClientSideCertEnable, bool EnablePostMetadata, bool LinkMetadataTimeoutMilliseconds, bool EnableClickToReply, bool RestrictSystemAdmin, bool CloudBilling, bool RemoteClusters, bool EnableSharedChannels, bool EnableRemoteClusterService, bool Disableappbar, bool AllowSyncedDrafts; **AnnouncementSettings**: bool EnableBanner, bool AllowBannerDismissal, bool AdminNoticesEnabled, bool UserNoticesEnabled; **ElasticsearchSettings**: bool EnableIndexing, bool EnableSearching, bool Sniff, enum PostIndexReplicas, enum PostIndexShards, enum LiveIndexingBatchSize, enum BatchSize, enum RequestTimeoutSeconds, bool SkipTLSVerification, bool Trace; **PluginSettings**: bool Enable, bool EnableUploads, bool EnableHealthCheck, bool EnableMarketplace, bool EnableRemoteMarketplace, bool AutomaticPrepackagedPlugins, bool RequirePluginSignature; **DataRetentionSettings**: bool EnableMessageDeletion, bool MessageRetentionDays, bool AllowInsecureDownloadUrl, bool EnableFileDeletion, bool FileRetentionDays, enum DeletionJobStartTime; **MessageExportSettings**: bool EnableExport, enum ExportFormat, enum DailyRunTime, enum ExportFromTimestamp, enum BatchSize, enum GlobalRelaySettings.CustomerType; **ExperimentalAuditSettings**: bool SysLogEnabled, bool SysLogInsecure, enum SysLogMaxQueueSize, bool FileEnabled, enum FileMaxSizeMB, enum FileMaxAgeDays, bool FileMaxBackups, bool FileCompress, enum FileMaxQueueSize; **BleveSettings**: bool EnableIndexing, bool EnableSearching, bool EnableAutocomplete, enum BatchSize; bool FeatureFlags **Counts (integer)** @@ -97,7 +97,7 @@ Server Configuration Settings **True/false (boolean)** value whether setting remains default (true) or non-default (false). **NOTE: No input data is used**: - **ServiceSettings**: bool SiteURL, bool WebsocketURL, bool TLSCertFile, bool TLSKeyFile, bool ReadTimeout, bool WriteTimeout,bool IdleTimeout, bool GoogleDeveloperKey, bool AllowCorsFrom, bool CorsExposedHeaders, bool AllowedUntrustedInternalConnections, bool GfycatApiKey, bool GfycatApiSecret, bool ManagedResourcePaths, bool CollapsedThreads, bool PostPriority, bool AllowPersistentNotifications, bool PersistentNotificationMaxCount, bool PersistentNotificationIntervalMinutes, bool PersistentNotificationMaxRecipients; **TeamSettings**: bool SiteName, bool CustomBrandText, bool CustomDescriptionText, bool UserStatusAwayTimeout, bool ExperimentalPrimaryTeam; **DisplaySettings**: bool CustomUrlSchemes, bool MaxMarkdownNodes; **GuestAccountSettings**: bool RestrictCreationToDomains, bool EnforceMultifactorAuthentication, bool HideTags; **LogSettings**: bool FileLocation; **NotificationLogSettings**: bool FileLocation; **EmailSettings**: bool FeedbackName, bool FeedbackEmail, bool FeedbackOrganization, bool LoginButtonColor, bool LoginButtonBorderColor, bool LoginButtonTextColor, bool ImageProxyType, bool ImageProxyURL, bool ImageProxyOptions; **RateLimitSettings**: bool VaryByHeader; **SupportSettings**: bool TermsOfServiceLink, bool PrivacyPolicyLink, bool AboutLink, bool HelpLink, bool ReportAProblemLink, bool AppCustomURLSchemes, bool SupportEmail; **ThemeSettings**: bool DefaultTheme; **LdapSettings**: bool FirstNameAttribute, bool LastNameAttribute, bool EmailAttribute, bool UserNameAttribute, bool NicknameAttribute, bool IdAttribute, bool PositionAttribute, bool LoginFieldName, bool LoginButtonColor, bool LoginButtonBorderColor, bool LoginButtonTextColor, bool GroupFilter, bool GroupDisplayNameAttribute, bool GroupIdAttribute, bool GuestFilter, bool AdminFilter; **SamlSettings**: bool SignatureAlgorithm, bool CanonicalAlgorithm, bool ScopingIDPProviderId, bool ScopingIDPName, bool IdAttribute, bool GuestAttribute, bool FirstNameAttribute, bool LastNameAttribute, bool EmailAttribute, bool UserNameAttribute, bool NicknameAttribute, bool LocaleAttribute, bool PositionAttribute, bool LoginIdAttribute, bool LoginButtonText, bool LoginButtonColor, bool LoginButtonBorderColor, bool LoginButtonTextColor, bool AdminFilter; **NativeAppSettings**: bool AppDownloadLink, bool AndroidAppDownloadLink, bool IosAppDownloadLink; **WebrtcSettings** (only in v5.5 and earlier): bool StunURI, bool TurnURI; **ClusterSettings**: bool NetworkInterface, bool BindAddress, bool AdvertiseAddress; **MetricsSettings**: bool BlockProfileRate; **AnalyticsSettings**: bool MaxUsersForStatistics; **ExperimentalSettings** bool ClientSideCertCheck; **AnnouncementSettings**: bool BannerColor, bool BannerTextColor; **ElasticsearchSettings**: bool ConnectionUrl, bool Username, bool Password, bool IndexPrefix; **PluginSettings**: bool MarketplaceUrl, bool SignaturePublicKeyFiles, bool ChimeraOAuthProxyUrl; **MessageExportSettings**: bool GlobalRelaySettings.SmtpUsername, bool GlobalRelaySettings.SmtpPassword, bool GlobalRelaySettings.EmailAddress + **ServiceSettings**: bool SiteURL, bool WebsocketURL, bool TLSCertFile, bool TLSKeyFile, bool ReadTimeout, bool WriteTimeout,bool IdleTimeout, bool GoogleDeveloperKey, bool AllowCorsFrom, bool CorsExposedHeaders, bool AllowedUntrustedInternalConnections, bool ManagedResourcePaths, bool CollapsedThreads, bool PostPriority, bool AllowPersistentNotifications, bool PersistentNotificationMaxCount, bool PersistentNotificationIntervalMinutes, bool PersistentNotificationMaxRecipients; **TeamSettings**: bool SiteName, bool CustomBrandText, bool CustomDescriptionText, bool UserStatusAwayTimeout, bool ExperimentalPrimaryTeam; **DisplaySettings**: bool CustomUrlSchemes, bool MaxMarkdownNodes; **GuestAccountSettings**: bool RestrictCreationToDomains, bool EnforceMultifactorAuthentication, bool HideTags; **LogSettings**: bool FileLocation; **NotificationLogSettings**: bool FileLocation; **EmailSettings**: bool FeedbackName, bool FeedbackEmail, bool FeedbackOrganization, bool LoginButtonColor, bool LoginButtonBorderColor, bool LoginButtonTextColor, bool ImageProxyType, bool ImageProxyURL, bool ImageProxyOptions; **RateLimitSettings**: bool VaryByHeader; **SupportSettings**: bool TermsOfServiceLink, bool PrivacyPolicyLink, bool AboutLink, bool HelpLink, bool ReportAProblemLink, bool AppCustomURLSchemes, bool SupportEmail; **ThemeSettings**: bool DefaultTheme; **LdapSettings**: bool FirstNameAttribute, bool LastNameAttribute, bool EmailAttribute, bool UserNameAttribute, bool NicknameAttribute, bool IdAttribute, bool PositionAttribute, bool LoginFieldName, bool LoginButtonColor, bool LoginButtonBorderColor, bool LoginButtonTextColor, bool GroupFilter, bool GroupDisplayNameAttribute, bool GroupIdAttribute, bool GuestFilter, bool AdminFilter; **SamlSettings**: bool SignatureAlgorithm, bool CanonicalAlgorithm, bool ScopingIDPProviderId, bool ScopingIDPName, bool IdAttribute, bool GuestAttribute, bool FirstNameAttribute, bool LastNameAttribute, bool EmailAttribute, bool UserNameAttribute, bool NicknameAttribute, bool LocaleAttribute, bool PositionAttribute, bool LoginIdAttribute, bool LoginButtonText, bool LoginButtonColor, bool LoginButtonBorderColor, bool LoginButtonTextColor, bool AdminFilter; **NativeAppSettings**: bool AppDownloadLink, bool AndroidAppDownloadLink, bool IosAppDownloadLink; **WebrtcSettings** (only in v5.5 and earlier): bool StunURI, bool TurnURI; **ClusterSettings**: bool NetworkInterface, bool BindAddress, bool AdvertiseAddress; **MetricsSettings**: bool BlockProfileRate; **AnalyticsSettings**: bool MaxUsersForStatistics; **ExperimentalSettings** bool ClientSideCertCheck; **AnnouncementSettings**: bool BannerColor, bool BannerTextColor; **ElasticsearchSettings**: bool ConnectionUrl, bool Username, bool Password, bool IndexPrefix; **PluginSettings**: bool MarketplaceUrl, bool SignaturePublicKeyFiles, bool ChimeraOAuthProxyUrl; **MessageExportSettings**: bool GlobalRelaySettings.SmtpUsername, bool GlobalRelaySettings.SmtpPassword, bool GlobalRelaySettings.EmailAddress Commercial License Information (Enterprise Edition only) Information about commercial license key purchased or trial license key used for Enterprise Edition servers: Company ID, license ID, license issue date, license start date, license expiry date, number of licensed users, license name, list of unlocked subscription features. @@ -196,7 +196,7 @@ The following list details the types of Apps Framework metadata we collect: Android Mobile App performance monitoring ----------------------------------------- -To improve Android app performance, we are collecting trace events and device information, collectively known as metrics, to identify slow performing key areas. Those metrics will be sent only from users using Android app beta build starting in version v1.20, who are logged in to servers that allow sending :ref:`diagnostic information `. +To improve Android app performance, we are collecting trace events and device information, collectively known as metrics, to identify slow performing key areas. Those metrics will be sent only from users using the Android app Beta build starting in version v1.20, who are logged in to servers that allow sending :ref:`diagnostic information `. Trace events Includes duration on how long the action took place like startup, team/channel switch, posts loading/update and channel drawer open/close. The naming convention is interpreted as ``[start observation]:[end observation]``, e.g. ``start:overall`` as from app start until fully rendered or ``post_list:thread`` as on press of post at post list until thread is opened. diff --git a/source/onboard/bulk-loading-about.rst b/source/onboard/bulk-loading-about.rst index d04c9ef47e5..dfc2d7fd07f 100644 --- a/source/onboard/bulk-loading-about.rst +++ b/source/onboard/bulk-loading-about.rst @@ -1,21 +1,24 @@ :orphan: :nosearch: -.. _about-bulk-loading-command: About the bulk loading command ------------------------------ -The bulk loading command is interruptible and idempotent - If the import is interrupted for any reason, it continues from where it left off the next time you run it. You can run the command repeatedly with the same data file, and the data is imported only once. Posts with matching timestamps to incoming posts will have their attachments replaced by the incoming data. Prior to v5.20 any updates to posts with matching timestamps were appended to older posts. +**The bulk loading command is interruptible and idempotent** -You can run the bulk loading command on a live system - Although you don't need to shut down Mattermost to run the command, changes made by users of the system between runs can be overwritten if the corresponding fields exist in the data file. +If the import is interrupted for any reason, it continues from where it left off the next time you run it. You can run the command repeatedly with the same data file, and the data is imported only once. Posts with matching timestamps to incoming posts will have their attachments replaced by the incoming data. Prior to v5.20 any updates to posts with matching timestamps were appended to older posts. -Some data fields are optional - Not all fields are mandatory. If an optional field is missing from the object that is being imported, the field's current value in the database is not changed. +**You can run the bulk loading command on a live system** -The bulk loading command is not a synchronization tool - You cannot use the bulk loading command to remove any objects or their fields from the Mattermost database. The command only creates or overwrites fields. +Although you don't need to shut down Mattermost to run the command, changes made by users of the system between runs can be overwritten if the corresponding fields exist in the data file. + +**Some data fields are optional** + +Not all fields are mandatory. If an optional field is missing from the object that is being imported, the field's current value in the database is not changed. + +**The bulk loading command is not a synchronization tool** + +You cannot use the bulk loading command to remove any objects or their fields from the Mattermost database. The command only creates or overwrites fields. .. important:: The bulk loading command runs in the mmctl and operates in the security context of the mmctl. This means it has full permissions to access and alter everything in the Mattermost database. diff --git a/source/onboard/migrating-to-mattermost.rst b/source/onboard/migrating-to-mattermost.rst index c7a7c440ab4..d9c0c065315 100644 --- a/source/onboard/migrating-to-mattermost.rst +++ b/source/onboard/migrating-to-mattermost.rst @@ -63,8 +63,8 @@ Sometimes systems running in parallel turn into a hard switch migration when a b ---- -Migrate Mattermost server -------------------------- +Migrate Mattermost from one server to another +--------------------------------------------- The following instructions migrate Mattermost from one server to another by backing up and restoring the Mattermost database and ``config.json`` file. For these instructions SOURCE refers to the Mattermost server *from which* your system will be migrated and DESTINATION refers to the Mattermost server *to which* your system will be migrated. diff --git a/source/onboard/run-bulk-loading-command.rst b/source/onboard/run-bulk-loading-command.rst index 2466d11a6a7..0538e1e8d61 100644 --- a/source/onboard/run-bulk-loading-command.rst +++ b/source/onboard/run-bulk-loading-command.rst @@ -12,10 +12,11 @@ Using mmctl local mode From Mattermost v9.5, the mmctl bulk import process command in :ref:`local mode ` supports processing an import file without uploading it to the server. -Run ``mmctl import process --bypass-upload .zip`` to start your import and enable the Mattermost server to read from the file directly. +Run ``mmctl import process --bypass-upload .zip --local`` to start your import and enable the Mattermost server to read from the file directly. Not using mmctl local mode ~~~~~~~~~~~~~~~~~~~~~~~~~~ + If you're not running mmctl commands in local mode: 1. Upload the ZIP file to the database by running the :ref:`mmctl import upload ` command. For example: ``mmctl import upload data.zip``. diff --git a/source/onboard/ssl-client-certificate.rst b/source/onboard/ssl-client-certificate.rst index d9f2da81951..97ff0ee02f6 100644 --- a/source/onboard/ssl-client-certificate.rst +++ b/source/onboard/ssl-client-certificate.rst @@ -1,4 +1,4 @@ -SSL client certificate setup (beta) +SSL client certificate setup (Beta) =================================== .. include:: ../_static/badges/allplans-selfhosted.rst diff --git a/source/preferences/manage-your-notifications.rst b/source/preferences/manage-your-notifications.rst index 11aad8072a8..cb2f1a2c80a 100644 --- a/source/preferences/manage-your-notifications.rst +++ b/source/preferences/manage-your-notifications.rst @@ -48,26 +48,36 @@ You can configure Mattermost to receive increase or decrease the number of notif In a web browser or the desktop app, select the **Settings** |gear| icon located in the top right corner of the screen to manage your notification preferences. On mobile, select the **Settings** |gear| icon and tap **Notifications**. + +.. note:: + + From Mattermost v9.8, your desktop and mobile notification preferences have been combined together under **Settings > Notifications**. If you're using an older Mattermost release, you'll find these settings split out as desktop settings and mobile settings instead. -.. tab:: Web/Desktop +.. tab:: Web/Desktop/Mobile - By default, you're notified of all Mattermost activity in both a web browser and the desktop app with badges, banner alerts, and sounds. In supported web browsers, the tab's favicon also notifies you of unread messages with an asterisk (*) and a count. + By default, you're notified of all Mattermost activity in Mattermost with badges, banner alerts, and sounds, regardless of how you access Mattermost, and your current :ref:`Mattermost availability `. - **Too many notifications!** + In supported web browsers, the tab's favicon also notifies you of unread messages with an asterisk (*) and a message count. + + **Want different notifications on mobile?** + + To personalize your notification preferences for the mobile app, select **Desktop and mobile notifications**, and then select **Use different settings for my mobile devices** to define how mobile notifications are triggered, when they're triggered based on you being online, away, or offline, and whether they include replies to threads you're following. + + **Getting too many notifications?** - If that's too many notifications, you can configure Mattermost to notify you for only mentions and direct messages. Select **Desktop Notifications > Only for mentions and direct messages**. + If that's too many notifications, configure Mattermost to notify you for select messages only. Select **Desktop and mobile notifications > Mentions, direct messages, and group messages** to receive notifications for mentions, direct messages, and group messages only. This option also enables you to receive notifications about replies to threads you're following by selecting **Notify me about replies to threads I'm following**. - Disable web and desktop notifications altogether by selecting **Desktop Notifications > Never**. + Disable web, desktop, and mobile notifications altogether by selecting **Desktop and mobile notifications > Nothing**. - **Too loud** +.. tab:: Desktop notification sounds - You can change or disable the audible sound for notifications. Go to **Desktop notifications > Notification sound**, and choose a different sound or turn the sound off. + By default, desktop message notifications include audible sounds. You can change or disable these sounds if preferred. Go to **Desktop notification sounds > Message notification sound** to choose a different sound, or disable this option to turn off desktop notification sounds, if preferred. - **Incoming call sounds** + Want to hear a sound when a Mattermost call starts? If your Mattermost admin :ref:`enables this Beta feature `, you can choose the sound that plays when a call is started within a direct or group message you're participating in by going to **Desktop notifications > Notification sound for incoming calls**. - Want to hear a sound when a Mattermost call starts? If your Mattermost admin :ref:`enables this beta feature `, you can choose the sound that plays when a call is started within a direct or group message you're participating in by going to **Desktop notifications > Notification sound for incoming calls**. + **Do you want incoming call sounds?** - You can disable incoming call sounds altogether if preferred. + Want to hear a sound when a Mattermost call starts? When your Mattermost admin :ref:`enables this beta feature `, you'll hear a sound when a call is starting within a direct or group message you're a member of. Go to **Desktop notification sounds > Incoming call sound** to choose a different sound, or disable this option to turn off incoming call sounds, if preferred. .. tab:: Email @@ -81,24 +91,6 @@ On mobile, select the **Settings** |gear| icon and tap **Notifications**. Mattermost also supports the ability to group multiple email notifications together into a single email. If your Mattermost admin :ref:`enables this feature `, you'll receive batches of notifications by email every 15 minutes, or as configured by your admin. -.. tab:: Mobile - - By default, you're notified of all Mattermost activity in the mobile app when you're away or offline for more than 5 minutes. - - **Too many notifications!** - - If that's too many notifications, you can configure Mattermost to notify you for only mentions and direct messages. Select **Mobile Push Notifications > For mentions and direct messages**. - - **Only notify me when I'm offline** - - If you prefer to be notified of all activity, but only when you're offline, select **For all activity** and then select **Offline**. - - Turn off all mobile notifications by selecting **Mobile Push Notifications > Never**. - - **Not enough notifications** - - If you prefer to always be notified, regardless of your user status, select **Mobile Push Notifications > Trigger push notifications when > Online, away or offline**. - .. tab:: @mentions & keywords By default, you’re notified when you’re @mentioned in a message or a thread by your username or first name, or when a thread you’re following has a new response. For all other messages, the channel is highlighted to indicate unread messages. diff --git a/source/preferences/set-your-status-availability.rst b/source/preferences/set-your-status-availability.rst index 12615f9cedf..71cb1de5335 100644 --- a/source/preferences/set-your-status-availability.rst +++ b/source/preferences/set-your-status-availability.rst @@ -89,9 +89,9 @@ Other members can see your availability anywhere they can see your name, such as Set your availability as Do Not Disturb ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Set your availability to **Do Not Disturb** to disable all desktop, email, and push notifications when you are unavailable or need to concentrate. +Set your availability to **Do Not Disturb** to disable all desktop, email, and push notifications when you are unavailable or need to concentrate. -You can specify how long to disable notifications by selecting a preset expiration or setting a custom expiration. Your availability setting automatically reverts to its previous setting once the expiration is reached (this may take up to five minutes). +You can specify how long to disable notifications by selecting a preset expiration, by setting a custom expiration, or by setting your status as **Don't clear**. Your availability automatically reverts to its previous setting once the expiration is reached (this may take up to five minutes). -.. image:: ../images/set-your-availability.png +.. image:: ../images/set-your-availability-dnd.png :alt: Example of setting your Mattermost availability as Do Not Disturb. \ No newline at end of file diff --git a/source/scale/scale-to-1000-users.rst b/source/scale/scale-to-1000-users.rst index 4db4539dd89..38d4a8be385 100644 --- a/source/scale/scale-to-1000-users.rst +++ b/source/scale/scale-to-1000-users.rst @@ -4,7 +4,7 @@ Scale Mattermost up to 1000 users .. include:: ../_static/badges/ent-only.rst :start-after: :nosearch: -This page describes the Mattermost reference architecture designed for the load of up to 1000 concurrent users. Unsure which reference architecture to use? See the :doc:`scaling for enterprise ` documentation for details. +This page describes the Mattermost reference architecture designed for a minimum load of 100 concurrent users and up to 1000 concurrent users. Unsure which reference architecture to use? See the :doc:`scaling for enterprise ` documentation for details. - **High Availability**: Required - **Database Configuration**: writer, reader diff --git a/source/upgrade/extended-support-release.rst b/source/upgrade/extended-support-release.rst index de9f8963a67..205af0f54f0 100644 --- a/source/upgrade/extended-support-release.rst +++ b/source/upgrade/extended-support-release.rst @@ -10,7 +10,7 @@ What is an Extended Support Release? During each monthly release, Mattermost backports security fixes and high impact bug fixes to the previous three monthly releases. Extended Support Releases (ESRs) are releases that will receive backports for security fixes and major bug fixes for the length of their life cycle. .. important:: - Support for Mattermost Server v8.1 Extended Support Release is coming to the end of its life cycle on May 15, 2024. Upgrading to Mattermost Server v9.5 Extended Support Release or later is recommended. + Support for Mattermost Server v8.1 Extended Support Release has come to the end of its life cycle on May 15, 2024. Upgrading to Mattermost Server v9.5 Extended Support Release or later is required. What is the life cycle of an Extended Support Release? ------------------------------------------------------ @@ -21,7 +21,7 @@ When an ESR is at the end of its life cycle, there will be announcements ahead o To receive updates about Extended Support Releases, sign up for our mailing list `here `_. -.. image:: ../images/ESR2_update.png +.. image:: ../images/ESR_graphic2.png :alt: Timeline-based chart showing the lifecycle of Mattermost Extended Support Releases and feature releases from last year and this year. What is included in an Extended Support Release dot release? diff --git a/source/upgrade/important-upgrade-notes.rst b/source/upgrade/important-upgrade-notes.rst index 13ff9811595..bd04b1d07db 100644 --- a/source/upgrade/important-upgrade-notes.rst +++ b/source/upgrade/important-upgrade-notes.rst @@ -5,7 +5,7 @@ Important Upgrade Notes :start-after: :nosearch: .. important:: - - Support for Mattermost Server v8.1 :doc:`Extended Support Release ` is coming to the end of its life cycle in May 15, 2024. Upgrading to Mattermost Server v9.5 :doc:`Extended Support Release ` or later is recommended. + - Support for Mattermost Server v8.1 :doc:`Extended Support Release ` has come to the end of its life cycle in May 15, 2024. Upgrading to Mattermost Server v9.5 :doc:`Extended Support Release ` or later is required. - MySQL 8.0.22 contains an `issue with JSON column types `__ changing string values to integers which is preventing Mattermost from working properly. Users are advised to avoid this database version. - Upgrading the Microsoft Teams Calling plugin to v2.0.0 requires users to reconnect their accounts. - When upgrading to 7.x from a 5.x release please make sure to upgrade to 5.37.10 first for the upgrade to complete successfully. @@ -660,7 +660,7 @@ Important Upgrade Notes | v5.37.0 | The ``platform`` binary and “--platform” flag have been removed. If you are using the “--platform” flag or are using the ``platform`` binary directly to run | | | the Mattermost server application via a systemd file or custom script, you will be required to use only the mattermost binary. | | +------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| | `Collapsed Reply Threads `__ are available as beta in Mattermost Server | +| | `Collapsed Reply Threads `__ are available as Beta in Mattermost Server | | | v5.37 and later. It’s expected that you may experience bugs as we stabilize the feature. In particular, please be aware of | | | :ref:`the known issues documented here `. | | +------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/source/upgrade/open-source-components.rst b/source/upgrade/open-source-components.rst index 17b0564f511..c0cb7455e60 100644 --- a/source/upgrade/open-source-components.rst +++ b/source/upgrade/open-source-components.rst @@ -9,257 +9,260 @@ The following open source components are used to provide the full benefits of Ma Desktop -------- - - Mattermost Desktop v5.7.0 - `View Open Source Components `_. - - Mattermost Desktop v5.6.0 - `View Open Source Components `_. - - Mattermost Desktop v5.5.0 - `View Open Source Components `_. - - Mattermost Desktop v5.4.0 - `View Open Source Components `_. - - Mattermost Desktop v5.3.0 - `View Open Source Components `_. - - Mattermost Desktop v5.2.0 - `View Open Source Components `_. - - Mattermost Desktop v5.1.0 - `View Open Source Components `_. - - Mattermost Desktop v5.0.0 - `View Open Source Components `_. - - Mattermost Desktop v4.7.0 - `View Open Source Components `_. - - Mattermost Desktop v4.6.0 - `View Open Source Components `_. - - Mattermost Desktop v4.5.0 - `View Open Source Components `_. - - Mattermost Desktop v4.4.0 - `View Open Source Components `_. - - Mattermost Desktop v4.3.0 - `View Open Source Components `_. - - Mattermost Desktop v4.2.0 - `View Open Source Components `_. - - Mattermost Desktop v4.1.0 - `View Open Source Components `_. - - Mattermost Desktop v4.0.0 - `View Open Source Components `_. - - Mattermost Desktop v3.7.0 - `View Open Source Components `_. + - Mattermost Desktop v5.8.0 - `View Open Source Components `_. + - Mattermost Desktop v5.7.0 - `View Open Source Components `__. + - Mattermost Desktop v5.6.0 - `View Open Source Components `__. + - Mattermost Desktop v5.5.0 - `View Open Source Components `__. + - Mattermost Desktop v5.4.0 - `View Open Source Components `__. + - Mattermost Desktop v5.3.0 - `View Open Source Components `__. + - Mattermost Desktop v5.2.0 - `View Open Source Components `__. + - Mattermost Desktop v5.1.0 - `View Open Source Components `__. + - Mattermost Desktop v5.0.0 - `View Open Source Components `__. + - Mattermost Desktop v4.7.0 - `View Open Source Components `__. + - Mattermost Desktop v4.6.0 - `View Open Source Components `__. + - Mattermost Desktop v4.5.0 - `View Open Source Components `__. + - Mattermost Desktop v4.4.0 - `View Open Source Components `__. + - Mattermost Desktop v4.3.0 - `View Open Source Components `__. + - Mattermost Desktop v4.2.0 - `View Open Source Components `__. + - Mattermost Desktop v4.1.0 - `View Open Source Components `__. + - Mattermost Desktop v4.0.0 - `View Open Source Components `__. + - Mattermost Desktop v3.7.0 - `View Open Source Components `__. Mobile ------- - - Mattermost Mobile v2.15.0 - `View Open Source Components `_. - - Mattermost Mobile v2.14.0 - `View Open Source Components `_. - - Mattermost Mobile v2.13.0 - `View Open Source Components `_. - - Mattermost Mobile v2.12.0 - `View Open Source Components `_. - - Mattermost Mobile v2.11.0 - `View Open Source Components `_. - - Mattermost Mobile v2.10.0 - `View Open Source Components `_. - - Mattermost Mobile v2.9.0 - `View Open Source Components `_. - - Mattermost Mobile v2.8.0 - `View Open Source Components `_. - - Mattermost Mobile v2.7.0 - `View Open Source Components `_. - - Mattermost Mobile v2.6.0 - `View Open Source Components `_. - - Mattermost Mobile v2.5.0 - `View Open Source Components `_. - - Mattermost Mobile v2.4.0 - `View Open Source Components `_. - - Mattermost Mobile v2.3.0 - `View Open Source Components `_. - - Mattermost Mobile v2.2.0 - `View Open Source Components `_. - - Mattermost Mobile v2.1.0 - `View Open Source Components `_. - - Mattermost Mobile v2.0.0 - `View Open Source Components `_. - - Mattermost Mobile v1.55.0 - `View Open Source Components `_. - - Mattermost Mobile v1.54.0 - `View Open Source Components `_. - - Mattermost Mobile v1.53.0 - `View Open Source Components `_. - - Mattermost Mobile v1.52.0 - `View Open Source Components `_. - - Mattermost Mobile v1.51.0 - `View Open Source Components `_. - - Mattermost Mobile v1.50.0 - `View Open Source Components `_. - - Mattermost Mobile v1.49.0 - `View Open Source Components `_. - - Mattermost Mobile v1.48.0 - `View Open Source Components `_. - - Mattermost Mobile v1.47.0 - `View Open Source Components `_. - - Mattermost Mobile v1.46.0 - `View Open Source Components `_. - - Mattermost Mobile v1.45.0 - `View Open Source Components `_. - - Mattermost Mobile v1.44.0 - `View Open Source Components `_. - - Mattermost Mobile v1.43.0 - `View Open Source Components `_. - - Mattermost Mobile v1.42.0 - `View Open Source Components `_. - - Mattermost Mobile v1.41.0 - `View Open Source Components `_. - - Mattermost Mobile v1.40.0 - `View Open Source Components `_. - - Mattermost Mobile v1.39.0 - `View Open Source Components `_. - - Mattermost Mobile v1.38.0 - `View Open Source Components `_. - - Mattermost Mobile v1.37.0 - `View Open Source Components `_. - - Mattermost Mobile v1.36.0 - `View Open Source Components `_. - - Mattermost Mobile v1.35.0 - `View Open Source Components `_. - - Mattermost Mobile v1.34.0 - `View Open Source Components `_. - - Mattermost Mobile v1.33.0 - `View Open Source Components `_. - - Mattermost Mobile v1.32.0 - `View Open Source Components `_. - - Mattermost Mobile v1.31.0 - `View Open Source Components `_. - - Mattermost Mobile v1.30.0 - `View Open Source Components `_. - - Mattermost Mobile v1.29.0 - `View Open Source Components `_. - - Mattermost Mobile v1.28.0 - `View Open Source Components `_. - - Mattermost Mobile v1.27.0 - `View Open Source Components `_. - - Mattermost Mobile v1.26.0 - `View Open Source Components `_. - - Mattermost Mobile v1.25.0 - `View Open Source Components `_. - - Mattermost Mobile v1.24.0 - `View Open Source Components `_. - - Mattermost Mobile v1.23.0 - `View Open Source Components `_. - - Mattermost Mobile v1.22.0 - `View Open Source Components `_. - - Mattermost Mobile v1.21.0 - `View Open Source Components `_. - - Mattermost Mobile v1.20.0 - `View Open Source Components `_. - - Mattermost Mobile v1.19.0 - `View Open Source Components `_. - - Mattermost Mobile v1.18.0 - `View Open Source Components `_. - - Mattermost Mobile v1.17.0 - `View Open Source Components `_. - - Mattermost Mobile v1.16.0 - `View Open Source Components `_. - - Mattermost Mobile v1.15.0 - `View Open Source Components `_. - - Mattermost Mobile v1.14.0 - `View Open Source Components `_. - - Mattermost Mobile v1.13.0 - `View Open Source Components `_. - - Mattermost Mobile v1.12.0 - `View Open Source Components `_. - - Mattermost Mobile v1.11.0 - `View Open Source Components `_. - - Mattermost Mobile v1.10.0 - `View Open Source Components `_. - - Mattermost Mobile v1.9.0 - `View Open Source Components `_. - - Mattermost Mobile v1.8.0 - `View Open Source Components `_. - - Mattermost Mobile v1.7.0 - `View Open Source Components `_. - - Mattermost Mobile v1.6.0 - `View Open Source Components `_. - - Mattermost Mobile v1.5.0 - `View Open Source Components `_. - - Mattermost Mobile v1.4.0 - `View Open Source Components `_. - - Mattermost Mobile v1.3.0 - `View Open Source Components `_. - - Mattermost Mobile v1.2.0 - `View Open Source Components `_. - - Mattermost Mobile v1.1.0 - `View Open Source Components `_. - - Mattermost Mobile v1.0.1 - `View Open Source Components `_. + - Mattermost Mobile v2.16.0 - `View Open Source Components `_. + - Mattermost Mobile v2.15.0 - `View Open Source Components `__. + - Mattermost Mobile v2.14.0 - `View Open Source Components `__. + - Mattermost Mobile v2.13.0 - `View Open Source Components `__. + - Mattermost Mobile v2.12.0 - `View Open Source Components `__. + - Mattermost Mobile v2.11.0 - `View Open Source Components `__. + - Mattermost Mobile v2.10.0 - `View Open Source Components `__. + - Mattermost Mobile v2.9.0 - `View Open Source Components `__. + - Mattermost Mobile v2.8.0 - `View Open Source Components `__. + - Mattermost Mobile v2.7.0 - `View Open Source Components `__. + - Mattermost Mobile v2.6.0 - `View Open Source Components `__. + - Mattermost Mobile v2.5.0 - `View Open Source Components `__. + - Mattermost Mobile v2.4.0 - `View Open Source Components `__. + - Mattermost Mobile v2.3.0 - `View Open Source Components `__. + - Mattermost Mobile v2.2.0 - `View Open Source Components `__. + - Mattermost Mobile v2.1.0 - `View Open Source Components `__. + - Mattermost Mobile v2.0.0 - `View Open Source Components `__. + - Mattermost Mobile v1.55.0 - `View Open Source Components `__. + - Mattermost Mobile v1.54.0 - `View Open Source Components `__. + - Mattermost Mobile v1.53.0 - `View Open Source Components `__. + - Mattermost Mobile v1.52.0 - `View Open Source Components `__. + - Mattermost Mobile v1.51.0 - `View Open Source Components `__. + - Mattermost Mobile v1.50.0 - `View Open Source Components `__. + - Mattermost Mobile v1.49.0 - `View Open Source Components `__. + - Mattermost Mobile v1.48.0 - `View Open Source Components `__. + - Mattermost Mobile v1.47.0 - `View Open Source Components `__. + - Mattermost Mobile v1.46.0 - `View Open Source Components `__. + - Mattermost Mobile v1.45.0 - `View Open Source Components `__. + - Mattermost Mobile v1.44.0 - `View Open Source Components `__. + - Mattermost Mobile v1.43.0 - `View Open Source Components `__. + - Mattermost Mobile v1.42.0 - `View Open Source Components `__. + - Mattermost Mobile v1.41.0 - `View Open Source Components `__. + - Mattermost Mobile v1.40.0 - `View Open Source Components `__. + - Mattermost Mobile v1.39.0 - `View Open Source Components `__. + - Mattermost Mobile v1.38.0 - `View Open Source Components `__. + - Mattermost Mobile v1.37.0 - `View Open Source Components `__. + - Mattermost Mobile v1.36.0 - `View Open Source Components `__. + - Mattermost Mobile v1.35.0 - `View Open Source Components `__. + - Mattermost Mobile v1.34.0 - `View Open Source Components `__. + - Mattermost Mobile v1.33.0 - `View Open Source Components `__. + - Mattermost Mobile v1.32.0 - `View Open Source Components `__. + - Mattermost Mobile v1.31.0 - `View Open Source Components `__. + - Mattermost Mobile v1.30.0 - `View Open Source Components `__. + - Mattermost Mobile v1.29.0 - `View Open Source Components `__. + - Mattermost Mobile v1.28.0 - `View Open Source Components `__. + - Mattermost Mobile v1.27.0 - `View Open Source Components `__. + - Mattermost Mobile v1.26.0 - `View Open Source Components `__. + - Mattermost Mobile v1.25.0 - `View Open Source Components `__. + - Mattermost Mobile v1.24.0 - `View Open Source Components `__. + - Mattermost Mobile v1.23.0 - `View Open Source Components `__. + - Mattermost Mobile v1.22.0 - `View Open Source Components `__. + - Mattermost Mobile v1.21.0 - `View Open Source Components `__. + - Mattermost Mobile v1.20.0 - `View Open Source Components `__. + - Mattermost Mobile v1.19.0 - `View Open Source Components `__. + - Mattermost Mobile v1.18.0 - `View Open Source Components `__. + - Mattermost Mobile v1.17.0 - `View Open Source Components `__. + - Mattermost Mobile v1.16.0 - `View Open Source Components `__. + - Mattermost Mobile v1.15.0 - `View Open Source Components `__. + - Mattermost Mobile v1.14.0 - `View Open Source Components `__. + - Mattermost Mobile v1.13.0 - `View Open Source Components `__. + - Mattermost Mobile v1.12.0 - `View Open Source Components `__. + - Mattermost Mobile v1.11.0 - `View Open Source Components `__. + - Mattermost Mobile v1.10.0 - `View Open Source Components `__. + - Mattermost Mobile v1.9.0 - `View Open Source Components `__. + - Mattermost Mobile v1.8.0 - `View Open Source Components `__. + - Mattermost Mobile v1.7.0 - `View Open Source Components `__. + - Mattermost Mobile v1.6.0 - `View Open Source Components `__. + - Mattermost Mobile v1.5.0 - `View Open Source Components `__. + - Mattermost Mobile v1.4.0 - `View Open Source Components `__. + - Mattermost Mobile v1.3.0 - `View Open Source Components `__. + - Mattermost Mobile v1.2.0 - `View Open Source Components `__. + - Mattermost Mobile v1.1.0 - `View Open Source Components `__. + - Mattermost Mobile v1.0.1 - `View Open Source Components `__. Server ------------------------------ - - Mattermost Enterprise Edition v9.7.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v9.6.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v9.5.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v9.4.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v9.3.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v9.2.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v9.1.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v9.0.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v8.1.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v8.0.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.10.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.9.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.8.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.7.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.5.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.4.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.3.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.2.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.1.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.0.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.7.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.6.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.5.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.4.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.3.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.2.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.1.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.0.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.39.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.38.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.37.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.36.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.35.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.34.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.33.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.32.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.31.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.30.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.29.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.28.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.27.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.26.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.25.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.24.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.23.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.22.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.21.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.20.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.19.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.18.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.17.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.16.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.15.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.14.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.13.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.12.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.11.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.10.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.9.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.8.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.7.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.6.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.5.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.4.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.3.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.2.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.1.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.0.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.10.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.9.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.8.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.7.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.6.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.5.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.4.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.3.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.2.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.1.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.0.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v3.10.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v3.9.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v3.8.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v3.7.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v3.6.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v3.5.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v3.4.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v3.3.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v3.2.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v3.1.0 - `View Open Source Components `_. + - Mattermost Enterprise Edition v9.8.0 - `View Open Source Components `_. + - Mattermost Enterprise Edition v9.7.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v9.6.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v9.5.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v9.4.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v9.3.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v9.2.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v9.1.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v9.0.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v8.1.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v8.0.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.10.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.9.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.8.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.7.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.5.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.4.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.3.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.2.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.1.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.0.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.7.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.6.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.5.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.4.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.3.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.2.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.1.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.0.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.39.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.38.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.37.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.36.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.35.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.34.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.33.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.32.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.31.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.30.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.29.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.28.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.27.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.26.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.25.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.24.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.23.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.22.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.21.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.20.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.19.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.18.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.17.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.16.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.15.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.14.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.13.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.12.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.11.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.10.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.9.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.8.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.7.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.6.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.5.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.4.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.3.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.2.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.1.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.0.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.10.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.9.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.8.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.7.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.6.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.5.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.4.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.3.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.2.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.1.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.0.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v3.10.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v3.9.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v3.8.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v3.7.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v3.6.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v3.5.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v3.4.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v3.3.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v3.2.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v3.1.0 - `View Open Source Components `__. Webapp ------------------------------ - - Mattermost Enterprise Edition v7.10.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.9.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.8.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.7.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.5.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.4.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.3.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.2.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.1.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v7.0.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.7.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.6.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.5.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.4.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.3.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.2.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.1.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v6.0.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.39.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.38.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.37.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.36.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.35.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.34.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.33.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.32.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.31.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.30.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.29.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.28.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.27.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.26.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.25.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.24.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.23.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.22.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.21.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.20.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.19.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.18.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.17.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.16.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.15.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.14.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.13.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.12.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.11.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.10.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.9.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.8.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.7.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.6.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.5.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.4.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.3.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.2.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.1.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v5.0.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.10.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.9.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.8.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.7.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.6.0 - `View Open Source Components `_. - - Mattermost Enterprise Edition v4.5.0 - `View Open Source Components `_. + - Mattermost Enterprise Edition v7.10.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.9.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.8.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.7.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.5.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.4.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.3.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.2.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.1.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v7.0.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.7.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.6.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.5.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.4.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.3.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.2.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.1.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v6.0.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.39.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.38.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.37.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.36.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.35.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.34.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.33.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.32.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.31.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.30.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.29.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.28.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.27.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.26.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.25.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.24.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.23.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.22.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.21.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.20.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.19.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.18.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.17.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.16.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.15.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.14.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.13.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.12.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.11.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.10.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.9.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.8.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.7.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.6.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.5.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.4.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.3.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.2.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.1.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v5.0.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.10.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.9.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.8.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.7.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.6.0 - `View Open Source Components `__. + - Mattermost Enterprise Edition v4.5.0 - `View Open Source Components `__. diff --git a/source/upgrade/prepare-to-upgrade-mattermost.rst b/source/upgrade/prepare-to-upgrade-mattermost.rst index 2d74500522b..a82daa6aa15 100644 --- a/source/upgrade/prepare-to-upgrade-mattermost.rst +++ b/source/upgrade/prepare-to-upgrade-mattermost.rst @@ -59,7 +59,7 @@ We strongly recommend that you: .. important:: - Support for Mattermost Server v8.1 :doc:`Extended Support Release ` is coming to the end of its life cycle on May 15, 2024. Upgrading to Mattermost Server v9.5 Extended Support Release or later is recommended. Upgrading from a previous Extended Support Release to the latest Extended Support Release is supported. Upgrading from v5.31 to v5.37 should take roughly the same amount of time as upgrading from v5.31 to v5.35, then upgrading v5.35 to 5.37. However, an upgrade directly from v5.31 to v5.37 could potentially take hours due to the database schema migrations required for v5.35. Review the :doc:`important-upgrade-notes` for all intermediate versions in between to ensure you’re aware of the possible migrations that could affect your upgrade. + Support for Mattermost Server v8.1 :doc:`Extended Support Release ` has come to the end of its life cycle on May 15, 2024. Upgrading to Mattermost Server v9.5 Extended Support Release or later is required. Upgrading from a previous Extended Support Release to the latest Extended Support Release is supported. Upgrading from v5.31 to v5.37 should take roughly the same amount of time as upgrading from v5.31 to v5.35, then upgrading v5.35 to 5.37. However, an upgrade directly from v5.31 to v5.37 could potentially take hours due to the database schema migrations required for v5.35. Review the :doc:`important-upgrade-notes` for all intermediate versions in between to ensure you’re aware of the possible migrations that could affect your upgrade. v6.0 database schema migrations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/source/upgrade/release-lifecycle.rst b/source/upgrade/release-lifecycle.rst index e9c6ab95f58..9e6b6e53888 100644 --- a/source/upgrade/release-lifecycle.rst +++ b/source/upgrade/release-lifecycle.rst @@ -11,11 +11,13 @@ During each monthly release, Mattermost backports high severity or high impact s .. important:: - Support for Mattermost Server v8.1 :doc:`Extended Support Release ` is coming to the end of its life cycle on May 15, 2024. Upgrading to Mattermost Server v9.5 or later is recommended. + Support for Mattermost Server v8.1 :doc:`Extended Support Release ` has come to the end of its life cycle on May 15, 2024. Upgrading to Mattermost Server v9.5 or later is required. +-------------+--------------------------+--------------------------+--------------------------+ | Version | Release Type | Lifecyle Start Date | Lifecycle End Date | +=============+==========================+==========================+==========================+ +| 9.9 | Feature | 2024-06-16 | 2024-09-15 | ++-------------+--------------------------+--------------------------+--------------------------+ | 9.8 | Feature | 2024-05-16 | 2024-08-15 | +-------------+--------------------------+--------------------------+--------------------------+ | 9.7 | Feature | 2024-04-16 | 2024-07-15 | diff --git a/source/upgrade/version-archive.rst b/source/upgrade/version-archive.rst index ae34fca7696..5c8ad1a599d 100644 --- a/source/upgrade/version-archive.rst +++ b/source/upgrade/version-archive.rst @@ -11,7 +11,7 @@ If you want to check that the version of Mattermost you are installing is the of .. important:: - Support for Mattermost Server v8.1 :doc:`Extended Support Release ` is coming to the end of its life cycle on May 15, 2024. Upgrading to Mattermost Server v9.5 :doc:`Extended Support Release ` or later is recommended. + Support for Mattermost Server v8.1 :doc:`Extended Support Release ` has come to the end of its life cycle on May 15, 2024. Upgrading to Mattermost Server v9.5 :doc:`Extended Support Release ` or later is required. Mattermost Enterprise Edition ------------------------------