From c23d97904fd31ef745bece57133aa1b9275ec20c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Thu, 21 May 2026 12:22:48 +0200 Subject: [PATCH] Squashed 'docs/' changes from 0755fb534d..1f8ddb8a52 1f8ddb8a52 content: clarify resources front matter key descriptions e064ab8528 content: Add deprecation badges to module config page 727ca5563a github: Add push trigger to lint workflow 64dd5c9886 content: Fix typo c5bc6b6515 github: Fix lint workflow faec0c3a0a github: Combine linting actions into a single workflow 06112aeaf2 theme: Miscellaneous template edits 75d4902270 theme: Format templates with gotmplfmt fec2e2a67e content: Document that the language code in a file name must be lowercase 9dbd841ba6 content: Document the src attribute in the Page Resources metadata reference fd3ffef985 content: Fix "build from source" instructions for Windows af4c9cd4d7 content: Miscellaneous edits 408d8b2f0a content: Miscellaneous edits e8804afe6e content: Fix typo d98276be30 content: Updates for v0.161.0 01b1f8fa12 content: Note merge limitation for slice configuration values d2b18f0c8d content: Document page matcher usage for cascading values 45e5bd9ab3 content: Update Cloudflare Worker host/deploy guide b83726b89a content: Document fallback rendering for fenced code blocks 8f1eeb42bc content: Update reference for source code shortcode e8da56303b content: Add gotmplfmt to list of VS Code extensions 950fabbfd6 content: Update FAQ on feature availability error 6411146d24 content: Update quick start guide 38cc39fd51 content: Add Hugo Shortcodes to list of VS Code extensions 72d98b107b content: Misc updates to get validators to pass 9fb0e1ca35 Add a paragraph about sec boundaries e6abf5644f content: Improve syntax highlighting documentation c06193bd1a content: Update go-i18n package reference ce58fef945 Hugo 0.161.1 c7e0f63385 content: Fix package references 7f15fb3bf9 data: Regen docshelper 7483d53b55 Update HUGO_VERSION to 0.161.0 c4abcdb45f security: Add a bullet point about "pragmatic defaults" 3cd7492862 content: Improve explanation of mount removal in module configurations 4099f07bb9 content: Update GitHub Pages workflow example a6c9853a58 content: Fix typo e6f79a938b Update netlify.toml abda3d6659 content: Update Action versions in GitHub Pages workflow example 55dd288fa9 content: Add GitCMS to front-ends tools list 21081f6d49 content: Remove outdated new-in badges b2ec263884 content: Update version references 825e0b8ea9 One more CSS var adjustment 85f95a899b Adjust css.Build var docs a little df48288002 content: Updates for v0.160.0 a82a9b9797 Update HUGO_VERSION to 0.160.0 1155747dc4 content: Improve CSS processing feature description f6ce893974 content: Add css.Build to features 67b8ed1198 content: Fix typos 0f62a67863 content: Fix typo dbb42aed4a content: Document the deploy edition 549f30f933 content: De-emphasize references to the extended edition 8f5c9782d4 content: Add Pages CMS to front-ends documentation b2bfc3af48 Update HUGO_VERSION to 0.159.2 3793156fc5 content: Fix typos bacd4824ef content: Specify function namespace in example 7f2dc0d40a Regen docs.yml 65a851f731 Update HUGO_VERSION to 0.159.1 ce05fe3fc0 content: Adjust variable references in build script examples 8a04f9fe64 content: Improve hosting build script examples 67962ce05c content: Link to Codeberg Pages 404 handling fd248f57ed content: Identify esbuild as the foundation for build functions 62f02879fd content: Remove outdated content 553c407f9e content: Miscellaneous corrections 77e2cad088 content: Add new-in badge for usePackageJSON 0746e1e621 Add a page on using npm dependencies in Hugo Modules 8824850f5c Update HUGO_VERSION to 0.159.0 git-subtree-dir: docs git-subtree-split: 1f8ddb8a5230518f07c50b4b03cba3cae21081c4 --- .cspell.json | 11 +- .github/workflows/lint.yml | 61 ++ .github/workflows/markdownlint.yml | 15 - .github/workflows/spellcheck.yml | 25 - .prettierignore | 15 - .prettierrc | 12 - content/en/_common/configuration/locale.md | 22 + .../en/_common/configuration/page-matcher.md | 22 + .../en/_common/functions/fmt/format-string.md | 4 +- content/en/_common/functions/js/options.md | 2 +- content/en/_common/functions/locales.md | 5 +- .../en/_common/installation/01-editions.md | 17 +- .../installation/04-build-from-source.md | 33 +- content/en/_common/permalink-tokens.md | 4 +- .../en/_common/syntax-highlighting-options.md | 4 +- content/en/about/features.md | 6 +- content/en/about/security.md | 50 +- content/en/commands/hugo.md | 2 +- content/en/commands/hugo_build.md | 2 +- content/en/commands/hugo_mod_npm.md | 2 +- content/en/commands/hugo_mod_npm_pack.md | 14 +- content/en/commands/hugo_server.md | 4 +- content/en/configuration/all.md | 22 +- content/en/configuration/cascade.md | 39 +- content/en/configuration/introduction.md | 3 + content/en/configuration/languages.md | 21 +- content/en/configuration/module.md | 22 +- content/en/configuration/permalinks.md | 191 +++---- content/en/configuration/security.md | 43 +- .../en/content-management/build-options.md | 2 +- content/en/content-management/front-matter.md | 139 ++--- .../content-management/markdown-attributes.md | 16 +- content/en/content-management/multilingual.md | 3 + content/en/content-management/page-bundles.md | 4 +- .../en/content-management/page-resources.md | 63 +-- .../content-management/syntax-highlighting.md | 24 +- content/en/content-management/taxonomies.md | 8 +- content/en/content-management/urls.md | 4 +- content/en/contribute/development.md | 70 +-- content/en/functions/collections/Where.md | 6 +- content/en/functions/crypto/FNV32a.md | 18 - content/en/functions/css/Build.md | 149 ++++- content/en/functions/css/Quoted.md | 56 +- content/en/functions/css/Sass.md | 195 ++++++- content/en/functions/css/TailwindCSS.md | 31 +- content/en/functions/css/Unquoted.md | 66 +-- content/en/functions/hash/FNV32a.md | 2 +- content/en/functions/hugo/Generator.md | 2 +- content/en/functions/hugo/Version.md | 2 +- content/en/functions/js/Batch.md | 14 +- content/en/functions/js/Build.md | 9 +- content/en/functions/lang/Translate.md | 30 +- content/en/functions/math/Acos.md | 2 - content/en/functions/math/Asin.md | 2 - content/en/functions/math/Atan.md | 2 - content/en/functions/math/Atan2.md | 2 - content/en/functions/math/Cos.md | 2 - content/en/functions/math/Pi.md | 2 - content/en/functions/math/Sin.md | 2 - content/en/functions/math/Tan.md | 2 - content/en/functions/math/ToDegrees.md | 2 - content/en/functions/math/ToRadians.md | 2 - content/en/functions/resources/FromString.md | 6 +- .../en/functions/transform/CanHighlight.md | 2 +- .../en/functions/transform/HTMLUnescape.md | 2 +- content/en/functions/transform/Highlight.md | 19 +- .../en/functions/transform/PortableText.md | 31 +- content/en/functions/transform/ToMath.md | 18 +- content/en/functions/transform/Unmarshal.md | 2 +- content/en/functions/transform/XMLEscape.md | 2 +- content/en/getting-started/quick-start.md | 17 +- content/en/getting-started/usage.md | 6 - .../deploy-with-hugo-deploy.md | 2 +- .../host-on-aws-amplify/index.md | 6 +- .../host-on-cloudflare/cloudflare-01.png | Bin 16057 -> 49820 bytes .../host-on-cloudflare/cloudflare-02.png | Bin 17647 -> 95146 bytes .../host-on-cloudflare/cloudflare-03.png | Bin 7262 -> 30347 bytes .../host-on-cloudflare/cloudflare-06.png | Bin 7310 -> 25167 bytes .../host-on-cloudflare/cloudflare-07.png | Bin 18600 -> 33790 bytes .../host-on-cloudflare/cloudflare-08.png | Bin 7730 -> 4901 bytes .../host-on-cloudflare/index.md | 69 ++- .../host-on-github-pages/index.md | 14 +- .../host-and-deploy/host-on-gitlab-pages.md | 8 +- .../host-and-deploy/host-on-netlify/index.md | 16 +- .../host-and-deploy/host-on-render/index.md | 43 +- .../host-on-sourcehut-pages.md | 2 +- .../host-and-deploy/host-on-vercel/index.md | 50 +- .../en/hugo-modules/nodejs-dependencies.md | 52 ++ content/en/installation/windows.md | 84 ++- content/en/methods/menu-entry/PageRef.md | 2 +- content/en/methods/output-format/MediaType.md | 2 +- content/en/methods/page/AllTranslations.md | 4 +- content/en/methods/page/InSection.md | 4 +- content/en/methods/page/IsAncestor.md | 4 +- content/en/methods/page/IsDescendant.md | 4 +- content/en/methods/page/Language.md | 15 +- content/en/methods/page/Translations.md | 4 +- content/en/methods/site/Language.md | 3 +- content/en/methods/site/MainSections.md | 2 +- content/en/methods/site/Menus.md | 2 +- content/en/methods/site/Role.md | 4 +- content/en/methods/site/Version.md | 4 +- content/en/methods/taxonomy/Count.md | 2 +- content/en/methods/taxonomy/Get.md | 2 +- .../glossary/default-language.md | 2 +- .../quick-reference/glossary/page-matcher.md | 8 + .../quick-reference/glossary/regular-page.md | 2 +- .../quick-reference/glossary/section-page.md | 2 +- .../quick-reference/glossary/taxonomy-page.md | 2 +- .../en/quick-reference/glossary/taxonomy.md | 2 +- .../en/quick-reference/glossary/term-page.md | 2 +- content/en/quick-reference/glossary/token.md | 12 +- .../glossary/translation-table.md | 4 +- content/en/render-hooks/code-blocks.md | 7 +- content/en/render-hooks/headings.md | 8 + content/en/render-hooks/images.md | 5 + content/en/render-hooks/links.md | 8 + content/en/shortcodes/highlight.md | 19 +- content/en/shortcodes/ref.md | 2 +- content/en/templates/404.md | 1 + content/en/templates/types.md | 2 +- content/en/tools/editors.md | 41 +- content/en/tools/front-ends.md | 6 + content/en/troubleshooting/faq.md | 7 +- data/docs.yaml | 60 +- go.mod | 2 +- go.sum | 2 - hugo.work | 3 +- layouts/404.html | 38 +- layouts/_markup/render-blockquote.html | 56 +- layouts/_markup/render-codeblock.html | 114 ++-- layouts/_markup/render-link.html | 399 +++++++------ layouts/_markup/render-passthrough.html | 12 +- layouts/_markup/render-table.html | 58 +- layouts/_partials/docs/functions-aliases.html | 20 +- .../_partials/docs/functions-return-type.html | 8 +- .../_partials/docs/functions-signatures.html | 20 +- .../helpers/debug/list-item-metadata.html | 40 +- .../helpers/funcs/color-from-string.html | 16 +- .../helpers/funcs/get-github-info.html | 34 +- .../helpers/funcs/get-remote-data.html | 17 +- layouts/_partials/helpers/gtag.html | 42 +- layouts/_partials/helpers/linkcss.html | 38 +- layouts/_partials/helpers/linkjs.html | 22 +- layouts/_partials/helpers/picture.html | 34 +- .../helpers/validation/validate-keywords.html | 15 +- layouts/_partials/layouts/blocks/alert.html | 36 +- .../layouts/blocks/feature-state.html | 82 ++- layouts/_partials/layouts/blocks/modal.html | 56 +- layouts/_partials/layouts/breadcrumbs.html | 72 +-- layouts/_partials/layouts/date.html | 2 +- layouts/_partials/layouts/docsheader.html | 14 +- layouts/_partials/layouts/explorer.html | 78 +-- layouts/_partials/layouts/footer.html | 135 +++-- layouts/_partials/layouts/head/head-js.html | 6 +- layouts/_partials/layouts/head/head.html | 22 +- .../_partials/layouts/header/githubstars.html | 28 +- layouts/_partials/layouts/header/header.html | 142 ++--- .../_partials/layouts/header/mastodon.html | 54 +- .../_partials/layouts/header/mobilemenu.html | 184 +++--- layouts/_partials/layouts/header/qr.html | 29 +- layouts/_partials/layouts/header/theme.html | 66 +-- layouts/_partials/layouts/home/features.html | 42 +- .../_partials/layouts/home/opensource.html | 215 ++++--- layouts/_partials/layouts/home/sponsors.html | 74 +-- layouts/_partials/layouts/hooks/body-end.html | 2 +- .../layouts/hooks/body-main-start.html | 14 +- layouts/_partials/layouts/icons.html | 92 +-- .../_partials/layouts/in-this-section.html | 62 +- layouts/_partials/layouts/page-edit.html | 45 +- layouts/_partials/layouts/related.html | 33 +- .../_partials/layouts/search/algolialogo.html | 86 +-- layouts/_partials/layouts/search/button.html | 28 +- layouts/_partials/layouts/search/input.html | 4 +- layouts/_partials/layouts/search/results.html | 174 +++--- layouts/_partials/layouts/templates.html | 10 +- layouts/_partials/layouts/toc.html | 82 +-- .../opengraph/get-featured-image.html | 32 +- layouts/_partials/opengraph/opengraph.html | 106 ++-- layouts/_shortcodes/chroma-lexers.html | 45 +- layouts/_shortcodes/code-toggle.html | 145 +++-- layouts/_shortcodes/datatable.html | 63 +-- layouts/_shortcodes/deprecated-in.html | 35 +- layouts/_shortcodes/eturl.html | 27 +- layouts/_shortcodes/get-page-desc.html | 15 +- layouts/_shortcodes/glossary-term.html | 19 +- layouts/_shortcodes/glossary.html | 75 +-- layouts/_shortcodes/hl.html | 7 +- layouts/_shortcodes/img.html | 531 +++++++++--------- layouts/_shortcodes/imgproc.html | 57 +- layouts/_shortcodes/include.html | 19 +- layouts/_shortcodes/new-in.html | 35 +- layouts/_shortcodes/newtemplatesystem.html | 14 +- layouts/_shortcodes/per-lang-config-keys.html | 117 ++-- layouts/_shortcodes/quick-reference.html | 29 +- .../render-list-of-pages-in-section.html | 70 +-- .../render-table-of-pages-in-section.html | 80 +-- .../_shortcodes/root-configuration-keys.html | 35 +- .../syntax-highlighting-styles.html | 27 +- layouts/baseof.html | 136 ++--- layouts/home.html | 82 +-- layouts/list.html | 122 ++-- layouts/list.rss.xml | 60 +- layouts/single.html | 142 ++--- netlify.toml | 2 +- package.hugo.json | 25 - package.json | 2 - 207 files changed, 3936 insertions(+), 3494 deletions(-) create mode 100644 .github/workflows/lint.yml delete mode 100644 .github/workflows/markdownlint.yml delete mode 100644 .github/workflows/spellcheck.yml create mode 100644 content/en/_common/configuration/locale.md create mode 100644 content/en/_common/configuration/page-matcher.md delete mode 100644 content/en/functions/crypto/FNV32a.md create mode 100644 content/en/hugo-modules/nodejs-dependencies.md create mode 100644 content/en/quick-reference/glossary/page-matcher.md delete mode 100644 go.sum delete mode 100644 package.hugo.json diff --git a/.cspell.json b/.cspell.json index f1b2b9b55..a69f88c82 100644 --- a/.cspell.json +++ b/.cspell.json @@ -77,7 +77,7 @@ "unmarshaling", "unmarshals", // ------------------------------------------------------------------------ - // cspell: ignore hugo terminology", + // cspell: ignore hugo terminology // ------------------------------------------------------------------------ "alignx", "aligny", @@ -102,7 +102,7 @@ "unpublishdate", "zgotmplz", // ------------------------------------------------------------------------ - // cspell: ignore foreign language words", + // cspell: ignore foreign language words // ------------------------------------------------------------------------ "bezpieczeństwo", "blatt", @@ -130,7 +130,7 @@ "referenz", "régime", // ------------------------------------------------------------------------ - // cspell: ignore names", + // cspell: ignore names // ------------------------------------------------------------------------ "Atishay", "Cosette", @@ -149,8 +149,9 @@ "Vitter", "WASI", // ------------------------------------------------------------------------ - // cspell: ignore operating systems and software packages", + // cspell: ignore operating systems and software packages // ------------------------------------------------------------------------ + "ananke", "asciidoctor", "brotli", "cifs", @@ -173,7 +174,7 @@ "rclone", "xubuntu", // ------------------------------------------------------------------------ - // cspell: ignore miscellaneous", + // cspell: ignore miscellaneous // ------------------------------------------------------------------------ "achristie", "ccpa", diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 000000000..00800ab9f --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,61 @@ +name: Lint +on: + workflow_dispatch: + push: + branches: + - master + pull_request: + +permissions: + contents: read + +jobs: + markdownlint: + name: Lint Markdown + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - name: Run Markdown linter + uses: DavidAnson/markdownlint-cli2-action@ded1f9488f68a970bc66ea5619e13e9b52e601cd # v23.2.0 + with: + globs: # set to null to override default of *.{md,markdown} + + spellcheck: + name: Check spelling + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - name: Check spelling with cspell + uses: streetsidesoftware/cspell-action@de2a73e963e7443969755b648a1008f77033c5b2 # v8.4.0 + with: + incremental_files_only: true + strict: true + # cspell uses the .cspell.json configuration file + - name: Check spelling with codespell + uses: codespell-project/actions-codespell@8f01853be192eb0f849a5c7d721450e7a467c579 # v2.2 + with: + check_filenames: true + check_hidden: true + # codespell uses the .codespellrc file + + template-formatting: + name: Check template formatting + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - name: Install Go + uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0 + with: + go-version: "1.26" + check-latest: true + cache: true + cache-dependency-path: | + **/go.sum + **/go.mod + - name: Install gotmplfmt + run: go install github.com/gohugoio/gotmplfmt@623175f49b3d07a11da381ff85228d0d03101880 # v0.4.1 + - name: Check template formatting + run: "diff <(gotmplfmt -d layouts) <(printf '')" diff --git a/.github/workflows/markdownlint.yml b/.github/workflows/markdownlint.yml deleted file mode 100644 index ee8bfd4e7..000000000 --- a/.github/workflows/markdownlint.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: Lint markdown -on: - workflow_dispatch: - pull_request: -jobs: - lint: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - - name: Run Markdown linter - uses: DavidAnson/markdownlint-cli2-action@30a0e04f1870d58f8d717450cc6134995f993c63 # v21.0.0 - with: - globs: # set to null to override default of *.{md,markdown} - continue-on-error: false diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml deleted file mode 100644 index 3f402fe78..000000000 --- a/.github/workflows/spellcheck.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: "Check spelling" -on: - push: - pull_request: - branches-ignore: - - "dependabot/**" - -permissions: - contents: read - -jobs: - spellcheck: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1 - - uses: streetsidesoftware/cspell-action@3294df585d3d639e30f3bc019cb11940b9866e95 # v8.0.0 - with: - incremental_files_only: true - strict: true - # cspell uses the .cspell.json configuration file - - uses: codespell-project/actions-codespell@8f01853be192eb0f849a5c7d721450e7a467c579 # v2.2 - with: - check_filenames: true - check_hidden: true - # codespell uses the .codespellrc file diff --git a/.prettierignore b/.prettierignore index 56e7b90fb..bd712bea1 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,18 +1,3 @@ -# Ignore all SVG icons. -**/icons.html - -# These are whitespace sensitive. -layouts/_markup/render-code* -layouts/_markup/render-table* -layouts/_shortcodes/glossary-term.html -layouts/_shortcodes/glossary.html -layouts/_shortcodes/highlighting-styles.html -layouts/_shortcodes/list-pages-in-section.html -layouts/_shortcodes/quick-reference.html - -# No root node. -layouts/_partials/layouts/head/head.html - # Auto generated. assets/css/components/chroma*.css assets/jsconfig.json diff --git a/.prettierrc b/.prettierrc index 395ae39af..11c748a86 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,17 +1,5 @@ { - "plugins": [ - "prettier-plugin-go-template", - "@awmottaz/prettier-plugin-void-html" - ], "overrides": [ - { - "files": ["*.html"], - "options": { - "parser": "go-template", - "goTemplateBracketSpacing": true, - "bracketSameLine": true - } - }, { "files": ["*.js", "*.ts"], "options": { diff --git a/content/en/_common/configuration/locale.md b/content/en/_common/configuration/locale.md new file mode 100644 index 000000000..54db1a263 --- /dev/null +++ b/content/en/_common/configuration/locale.md @@ -0,0 +1,22 @@ +--- +_comment: Do not remove front matter. +--- + +locale +: (`string`) The language tag as described in [RFC 5646][]. This is the primary value used by the [`language.Translate`][] function to select a translation table, and for localization of dates, currencies, numbers, and percentages, falling back to the [language key][] in both cases. + + Hugo also uses this value to populate: + + - The `lang` attribute of the `html` element in the [embedded alias template][] + - The `language` element in the [embedded RSS template][] + - The `locale` property in the [embedded Open Graph template][] + + Access this value from a template using the [`Language.Locale`][] method on a `Site` or `Page` object. + + [RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.1 + [`Language.Locale`]: /methods/site/language/#locale + [`language.Translate`]: /functions/lang/translate/ + [embedded Open Graph template]: <{{% eturl opengraph %}}> + [embedded RSS template]: <{{% eturl rss %}}> + [embedded alias template]: <{{% eturl alias %}}> + [language key]: /configuration/languages/#language-keys diff --git a/content/en/_common/configuration/page-matcher.md b/content/en/_common/configuration/page-matcher.md new file mode 100644 index 000000000..5aa44db8c --- /dev/null +++ b/content/en/_common/configuration/page-matcher.md @@ -0,0 +1,22 @@ +--- +_comment: Do not remove front matter. +--- + +A _page matcher_ filters pages by logical path, page kind, environment, or site. Specify filtering criteria using any combination of the following keywords. + +environment +: (`string`) A [glob pattern](g) matching the build [environment](g). For example: `{staging,production}`. + +kind +: (`string`) A [glob pattern](g) matching the [page kind](g). For example: `{taxonomy,term}`. + +lang +: {{< deprecated-in 0.153.0 />}} +: Use [`sites`](#sites) instead. + +path +: (`string`) A [glob pattern](g) matching the page's [logical path](g). For example: `{/books,/books/**}`. + +sites +: {{< new-in 0.153.0 />}} +: (`map`) A [sites matrix](g) matching any combination of [content dimensions](g) including language, version, and role. diff --git a/content/en/_common/functions/fmt/format-string.md b/content/en/_common/functions/fmt/format-string.md index 09a9ee867..556f378a5 100644 --- a/content/en/_common/functions/fmt/format-string.md +++ b/content/en/_common/functions/fmt/format-string.md @@ -2,6 +2,6 @@ _comment: Do not remove front matter. --- -The documentation for Go's [fmt] package describes the structure and content of the format string. +The documentation for Go's [`fmt`][] package describes the structure and content of the format string. -[fmt]: https://pkg.go.dev/fmt +[`fmt`]: https://pkg.go.dev/fmt diff --git a/content/en/_common/functions/js/options.md b/content/en/_common/functions/js/options.md index 837855da3..c0223ef51 100644 --- a/content/en/_common/functions/js/options.md +++ b/content/en/_common/functions/js/options.md @@ -18,7 +18,7 @@ params Note that this is meant for small data sets, e.g., configuration settings. For larger data sets, please put/mount the files into `assets` and import them directly. minify -: (`bool`) Whether to minify the generated CSS code. Default is `false`. +: (`bool`) Whether to minify the generated JS code. Default is `false`. loaders : {{< new-in 0.140.0 />}} diff --git a/content/en/_common/functions/locales.md b/content/en/_common/functions/locales.md index 1cfd7a1e6..5f7317250 100644 --- a/content/en/_common/functions/locales.md +++ b/content/en/_common/functions/locales.md @@ -3,6 +3,7 @@ _comment: Do not remove front matter. --- > [!note] -> Localization of dates, currencies, numbers, and percentages is performed by the [gohugoio/locales] package. The language tag of the current site must match one of the listed locales. +> Localization of dates, currencies, numbers, and percentages is performed by the [`bep/golocales`][] package. Hugo determines the locale using the [`locale`][] configuration setting, falling back to the language key itself. The resolved value must be a locale supported by the package. -[gohugoio/locales]: https://github.com/gohugoio/locales +[`bep/golocales`]: https://github.com/bep/golocales +[`locale`]: /configuration/all/#locale diff --git a/content/en/_common/installation/01-editions.md b/content/en/_common/installation/01-editions.md index b68c89975..7bb3db367 100644 --- a/content/en/_common/installation/01-editions.md +++ b/content/en/_common/installation/01-editions.md @@ -4,14 +4,19 @@ _comment: Do not remove front matter. ## Editions -Hugo offers a standard edition with core features, plus extended and extended/deploy editions with more. Use the standard edition unless you need the features below. +Hugo is available in several editions. Use the standard edition unless you need additional features. - +Feature|standard|deploy (1)|extended|extended/deploy +:--|:-:|:-:|:-:|:-: +Core features|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark: +Direct cloud deployment (2)|:x:|:heavy_check_mark:|:x:|:heavy_check_mark: +LibSass support (3)|:x:|:x:|:heavy_check_mark:|:heavy_check_mark: -Feature|extended edition|extended/deploy edition -:--|:-:|:-: -[Transpile Sass to CSS] via embedded LibSass. Note that embedded LibSass was deprecated in v0.153.0 and will be removed in a future release. Use the [Dart Sass] transpiler instead, which is compatible with any edition.|:heavy_check_mark:|:heavy_check_mark: -Deploy your site directly to a Google Cloud Storage bucket, an AWS S3 bucket, or an Azure Storage container. See [details].|:x:|:heavy_check_mark: +(1) {{< new-in v0.159.2 />}} + +(2) Deploy your site directly to a Google Cloud Storage bucket, an AWS S3 bucket, or an Azure Storage container. See [details]. + +(3) [Transpile Sass to CSS] via embedded LibSass. Note that embedded LibSass was deprecated in v0.153.0 and will be removed in a future release. Use the [Dart Sass] transpiler instead, which is compatible with any edition. [dart sass]: /functions/css/sass/#dart-sass [transpile sass to css]: /functions/css/sass/ diff --git a/content/en/_common/installation/04-build-from-source.md b/content/en/_common/installation/04-build-from-source.md index 47dcd9028..93f1d3a2c 100644 --- a/content/en/_common/installation/04-build-from-source.md +++ b/content/en/_common/installation/04-build-from-source.md @@ -4,28 +4,40 @@ _comment: Do not remove front matter. ## Build from source -To build the extended or extended/deploy edition from source you must: +To build Hugo from source you must install: -1. Install [Git] -1. Install [Go] version 1.25.0 or later -1. Install a C compiler, either [GCC] or [Clang] -1. Update your `PATH` environment variable as described in the [Go documentation] +1. [Git] +1. [Go] version 1.25.0 or later -> The install directory is controlled by the `GOPATH` and `GOBIN` environment variables. If `GOBIN` is set, binaries are installed to that directory. If `GOPATH` is set, binaries are installed to the bin subdirectory of the first directory in the `GOPATH` list. Otherwise, binaries are installed to the bin subdirectory of the default `GOPATH` (`$HOME/go` or `%USERPROFILE%\go`). +### Standard edition -To build the standard edition: +To build and install the standard edition: ```sh -go install github.com/gohugoio/hugo@latest +CGO_ENABLED=0 go install github.com/gohugoio/hugo@latest ``` -To build the extended edition: +### Deploy edition + +{{< new-in v0.159.2 />}} + +To build and install the deploy edition: + +```sh +CGO_ENABLED=0 go install -tags withdeploy github.com/gohugoio/hugo@latest +``` + +### Extended edition + +To build and install the extended edition, first install a C compiler such as [GCC] or [Clang] and then run the following command: ```sh CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@latest ``` -To build the extended/deploy edition: +### Extended/deploy edition + +To build and install the extended/deploy edition, first install a C compiler such as [GCC] or [Clang] and then run the following command: ```sh CGO_ENABLED=1 go install -tags extended,withdeploy github.com/gohugoio/hugo@latest @@ -34,5 +46,4 @@ CGO_ENABLED=1 go install -tags extended,withdeploy github.com/gohugoio/hugo@late [Clang]: https://clang.llvm.org/ [GCC]: https://gcc.gnu.org/ [Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git -[Go documentation]: https://go.dev/doc/code#Command [Go]: https://go.dev/doc/install diff --git a/content/en/_common/permalink-tokens.md b/content/en/_common/permalink-tokens.md index fa8308a70..70dee0bca 100644 --- a/content/en/_common/permalink-tokens.md +++ b/content/en/_common/permalink-tokens.md @@ -45,11 +45,11 @@ _comment: Do not remove front matter. `:filename` : {{< deprecated-in v0.144.0 />}} -: Use `:contentbasename` instead. +: Use `:contentbasename` instead. `:slugorfilename` : {{< deprecated-in v0.144.0 />}} -: Use `:slugorcontentbasename` instead. +: Use `:slugorcontentbasename` instead. `:contentbasename` : {{< new-in 0.144.0 />}} diff --git a/content/en/_common/syntax-highlighting-options.md b/content/en/_common/syntax-highlighting-options.md index 11348f661..8c390f271 100644 --- a/content/en/_common/syntax-highlighting-options.md +++ b/content/en/_common/syntax-highlighting-options.md @@ -12,7 +12,7 @@ guessSyntax : (`bool`) Whether to automatically detect the language if the `LANG` argument is blank or set to a language for which there is no corresponding [lexer](g). Falls back to a plain text lexer if unable to automatically detect the language. Default is `false`. > [!note] - > The Chroma syntax highlighter includes lexers for approximately 250 languages, but only 5 of these have implemented automatic language detection. + > The syntax highlighter includes lexers for approximately 300 languages, but only 5 of these have implemented automatic language detection. hl_Lines : (`string`) A space-delimited list of lines to emphasize within the highlighted code. To emphasize lines 2, 3, 4, and 7, set this value to `2-4 7`. This option is independent of the `lineNoStart` option. @@ -45,7 +45,7 @@ noClasses ``` style -: (`string`) The CSS styles to apply to the highlighted code. Case-sensitive. Default is `monokai`. See [syntax highlighting styles]. +: (`string`) The CSS styles to apply to the highlighted code. This value is case-insensitive. Default is `monokai`. See [syntax highlighting styles][]. tabWidth : (`int`) Substitute this number of spaces for each tab character in your highlighted code. Irrelevant if `noClasses` is `false`. Default is `4`. diff --git a/content/en/about/features.md b/content/en/about/features.md index 4c190eee2..2c75eddf1 100644 --- a/content/en/about/features.md +++ b/content/en/about/features.md @@ -80,6 +80,9 @@ weight: 20 ## Asset pipelines +[CSS Processing] +: Bundle, transform, minify, create source maps, perform SRI hashing, and integrate with PostCSS. + [Image processing] : Convert, resize, crop, rotate, adjust colors, apply filters, overlay text and images, and extract metadata. @@ -130,9 +133,10 @@ weight: 20 [Menus]: /content-management/menus/ [URL management]: /content-management/urls/ +[CSS processing]: /functions/css/build/ [Image processing]: /content-management/image-processing/ [JavaScript bundling]: /functions/js/build/ -[Sass processing]: /functions/css/Sass/ +[Sass processing]: /functions/css/sass/ [Tailwind CSS processing]: /functions/css/tailwindcss/ [Caching]: /functions/partials/includecached/ diff --git a/content/en/about/security.md b/content/en/about/security.md index 509ca6a75..b242bce50 100644 --- a/content/en/about/security.md +++ b/content/en/about/security.md @@ -8,6 +8,13 @@ weight: 30 aliases: [/about/security-model/] --- +## Security Boundaries + +- The templates inside `layouts` are trusted. +- The assets inside `archetypes`, `assets`, `resources`, `data`, `i18n` and `static` are trusted. +- The content and the content produced by [content adapters][] inside `content` is not trusted. The one exception here is if [inline shortcodes][] is enabled. Note that for content adapters, this is scoped to the result of the adapter. +- The development server, `hugo server`, and its livereload script is trusted and meant for _local_ development only. + ## Runtime security Hugo generates static websites, meaning the final output runs directly in the browser and interacts with any integrated APIs. However, during development and site building, the `hugo` executable itself is the runtime environment. @@ -16,43 +23,40 @@ Securing a runtime is a complex task. Hugo addresses this through a robust sandb - Virtual file system: Hugo employs a virtual file system, limiting file access. Only the main project, not external components, can access files or directories outside the project root. - Read-Only access: User-defined components have read-only access to the file system, preventing unintended modifications. -- Controlled external binaries: While Hugo utilizes external binaries for features like Asciidoctor support, these are strictly predefined with specific flags and are disabled by default. The [security policy] details these limitations. +- Controlled external binaries: While Hugo utilizes external binaries for features like Asciidoctor support, these are strictly predefined with specific flags and are disabled by default. The [security policy][] details these limitations. - No arbitrary commands: To mitigate risks, Hugo intentionally avoids implementing general functions that would allow users to execute arbitrary operating system commands. +- Pragmatic defaults: The default [security policy][] aims to balance security and usability, enabling common workflows out of the box while keeping more sensitive capabilities opt-in. These defaults may be tightened in future releases, but each project is ultimately responsible for reviewing the policy and adjusting it to match its own trust model and requirements. This combination of sandboxing and strict defaults effectively minimizes potential security vulnerabilities during the Hugo build process. -[security policy]: /configuration/security/ - ## Dependency security -Hugo utilizes [Go Modules] to manage its dependencies, compiling as a static binary. Go Modules create a `go.sum` file, a critical security feature. This file acts as a database, storing the expected cryptographic checksums of all dependencies, including those required indirectly (transitive dependencies). +Hugo utilizes [Go Modules][] to manage its dependencies, compiling as a static binary. Go Modules create a `go.sum` file, a critical security feature. This file acts as a database, storing the expected cryptographic checksums of all dependencies, including those required indirectly (transitive dependencies). -[Hugo Modules], which extend Go Modules' functionality, also produce a `go.sum` file. To ensure dependency integrity, commit this `go.sum` file to your version control. If Hugo detects a checksum mismatch during the build process, it will fail, indicating a possible attempt to [tamper with your project's dependencies]. - -[Go Modules]: https://go.dev/wiki/Modules#modules -[Hugo Modules]: /hugo-modules/ -[tamper with your project's dependencies]: https://julienrenaux.fr/2019/12/20/github-actions-security-risk/ +[Hugo Modules][], which extend Go Modules' functionality, also produce a `go.sum` file. To ensure dependency integrity, commit this `go.sum` file to your version control. If Hugo detects a checksum mismatch during the build process, it will fail, indicating a possible attempt to [tamper with your project's dependencies][]. ## Web application security -Hugo's security philosophy is rooted in established security standards, primarily aligning with the threats defined by [OWASP]. For HTML output, Hugo operates under a clear trust model. This model assumes that template and configuration authors, the developers, are trustworthy. However, the data supplied to these templates is inherently considered untrusted. This distinction is crucial for understanding how Hugo handles potential security risks. +Hugo's security philosophy is rooted in established security standards, primarily aligning with the threats defined by [OWASP][]. For HTML output, Hugo operates under a clear trust model. This model assumes that template and configuration authors, the developers, are trustworthy. However, the data supplied to these templates is inherently considered untrusted. This distinction is crucial for understanding how Hugo handles potential security risks. -[OWASP]: https://en.wikipedia.org/wiki/OWASP +To prevent unintended escaping of data that developers know is safe, Hugo provides [`safe`][] functions, such as [`safeHTML`][]. These functions allow developers to explicitly mark data as trusted, bypassing the default escaping mechanisms. This is essential for scenarios where data is generated or sourced from reliable sources. However, an exception exists: enabling [inline shortcodes][]. By activating this feature, you are implicitly trusting the logic within the shortcodes and the data contained within your content files. -To prevent unintended escaping of data that developers know is safe, Hugo provides [`safe`] functions, such as [`safeHTML`]. These functions allow developers to explicitly mark data as trusted, bypassing the default escaping mechanisms. This is essential for scenarios where data is generated or sourced from reliable sources. However, an exception exists: enabling [inline shortcodes]. By activating this feature, you are implicitly trusting the logic within the shortcodes and the data contained within your content files. +It's vital to remember that Hugo is a static site generator. This architectural choice significantly reduces the attack surface by eliminating the complexities and vulnerabilities associated with dynamic user input. Unlike dynamic websites, Hugo generates static HTML files, minimizing the risk of real-time attacks. Regarding content, Hugo's default Markdown renderer is [configured to sanitize][] potentially unsafe content. This default behavior ensures that potentially malicious code or scripts are removed or escaped. However, this setting can be reconfigured if you have a high degree of confidence in the safety of your content sources. -[`safeHTML`]: /functions/safe/html/ -[inline shortcodes]: /content-management/shortcodes/#inline - -It's vital to remember that Hugo is a static site generator. This architectural choice significantly reduces the attack surface by eliminating the complexities and vulnerabilities associated with dynamic user input. Unlike dynamic websites, Hugo generates static HTML files, minimizing the risk of real-time attacks. Regarding content, Hugo's default Markdown renderer is [configured to sanitize] potentially unsafe content. This default behavior ensures that potentially malicious code or scripts are removed or escaped. However, this setting can be reconfigured if you have a high degree of confidence in the safety of your content sources. - -[configured to sanitize]: /configuration/markup/#rendererunsafe - -In essence, Hugo prioritizes secure output by establishing a clear trust boundary between developers and data. By default, it errs on the side of caution, sanitizing potentially unsafe content and escaping data. Developers have the flexibility to adjust these defaults through [`safe`] functions and [configuration options], but they must do so with a clear understanding of the security implications. Hugo's static site generation model further strengthens its security posture by minimizing dynamic vulnerabilities. - -[`safe`]: /functions/safe -[configuration options]: /configuration/security +In essence, Hugo prioritizes secure output by establishing a clear trust boundary between developers and data. By default, it errs on the side of caution, sanitizing potentially unsafe content and escaping data. Developers have the flexibility to adjust these defaults through [`safe`][] functions and [configuration options][], but they must do so with a clear understanding of the security implications. Hugo's static site generation model further strengthens its security posture by minimizing dynamic vulnerabilities. ## Configuration See [configure security](/configuration/security/). + +[`safe`]: /functions/safe +[`safeHTML`]: /functions/safe/html/ +[content adapters]: /content-management/content-adapters/ +[configuration options]: /configuration/security +[configured to sanitize]: /configuration/markup/#rendererunsafe +[Go Modules]: https://go.dev/wiki/Modules#modules +[Hugo Modules]: /hugo-modules/ +[inline shortcodes]: /content-management/shortcodes/#inline +[OWASP]: https://en.wikipedia.org/wiki/OWASP +[security policy]: /configuration/security/ +[tamper with your project's dependencies]: https://julienrenaux.fr/2019/12/20/github-actions-security-risk/ diff --git a/content/en/commands/hugo.md b/content/en/commands/hugo.md index ad06ecab3..5d3a3499b 100644 --- a/content/en/commands/hugo.md +++ b/content/en/commands/hugo.md @@ -40,7 +40,7 @@ hugo [flags] --forceSyncStatic copy all files when static is changed. --gc enable to run some cleanup tasks (remove unused cache files) after the build -h, --help help for hugo - --ignoreCache ignores the cache directory + --ignoreCache ignore the configured file caches --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern -l, --layoutDir string filesystem path to layout directory --logLevel string log level (debug|info|warn|error) diff --git a/content/en/commands/hugo_build.md b/content/en/commands/hugo_build.md index 173cb095e..b9311aa69 100644 --- a/content/en/commands/hugo_build.md +++ b/content/en/commands/hugo_build.md @@ -40,7 +40,7 @@ hugo build [flags] --forceSyncStatic copy all files when static is changed. --gc enable to run some cleanup tasks (remove unused cache files) after the build -h, --help help for build - --ignoreCache ignores the cache directory + --ignoreCache ignore the configured file caches --ignoreVendorPaths string ignores any _vendor for module paths matching the given Glob pattern -l, --layoutDir string filesystem path to layout directory --logLevel string log level (debug|info|warn|error) diff --git a/content/en/commands/hugo_mod_npm.md b/content/en/commands/hugo_mod_npm.md index eafda1768..e9bd9d9b1 100644 --- a/content/en/commands/hugo_mod_npm.md +++ b/content/en/commands/hugo_mod_npm.md @@ -41,4 +41,4 @@ hugo mod npm [command] [flags] ### SEE ALSO * [hugo mod](/commands/hugo_mod/) - Manage modules -* [hugo mod npm pack](/commands/hugo_mod_npm_pack/) - Experimental: Prepares and writes a composite package.json file for your project +* [hugo mod npm pack](/commands/hugo_mod_npm_pack/) - Merges module Node.js dependencies into an npm workspace diff --git a/content/en/commands/hugo_mod_npm_pack.md b/content/en/commands/hugo_mod_npm_pack.md index 8637d7486..4482a4d1e 100644 --- a/content/en/commands/hugo_mod_npm_pack.md +++ b/content/en/commands/hugo_mod_npm_pack.md @@ -5,20 +5,18 @@ url: /commands/hugo_mod_npm_pack/ --- ## hugo mod npm pack -Experimental: Prepares and writes a composite package.json file for your project +Merges module Node.js dependencies into an npm workspace ### Synopsis -Prepares and writes a composite package.json file for your project. +Merges Node.js dependencies from all Hugo modules into a "packages/hugoautogen" npm workspace. -On first run it creates a "package.hugo.json" in the project root if not already there. This file will be used as a template file -with the base dependency set. +The merged dependencies are written to packages/hugoautogen/package.json, and the root package.json +is updated with a "workspaces" entry pointing to "packages/hugoautogen". -This set will be merged with all "package.hugo.json" files found in the dependency tree, picking the version closest to the project. +The source entries are read from either package.hugo.json or package.json in the module root, with package.hugo.json taking precedence if both exist. -This command is marked as 'Experimental'. We think it's a great idea, so it's not likely to be -removed from Hugo, but we need to test this out in "real life" to get a feel of it, -so this may/will change in future versions of Hugo. +See [Node.js dependencies](/hugo-modules/nodejs-dependencies/) for more information. ``` diff --git a/content/en/commands/hugo_server.md b/content/en/commands/hugo_server.md index 4345fbd7a..ec99b1ac0 100644 --- a/content/en/commands/hugo_server.md +++ b/content/en/commands/hugo_server.md @@ -45,13 +45,13 @@ hugo server [command] [flags] --forceSyncStatic copy all files when static is changed. --gc enable to run some cleanup tasks (remove unused cache files) after the build -h, --help help for server - --ignoreCache ignores the cache directory + --ignoreCache ignore the configured file caches -l, --layoutDir string filesystem path to layout directory --liveReloadPort int port for live reloading (i.e. 443 in HTTPS proxy situations) (default -1) --minify minify any supported output format (HTML, XML etc.) -N, --navigateToChanged navigate to changed content file on live browser reload --noChmod don't sync permission mode of files - --noHTTPCache prevent HTTP caching + --noHTTPCache disable browser caching of pages served by the embedded web server --noTimes don't sync modification time of files -O, --openBrowser open the project in a browser after server startup --panicOnWarning panic on first WARNING log diff --git a/content/en/configuration/all.md b/content/en/configuration/all.md index 5cd79a467..36fc4c091 100644 --- a/content/en/configuration/all.md +++ b/content/en/configuration/all.md @@ -94,7 +94,7 @@ disableDefaultLanguageRedirect disableDefaultSiteRedirect : {{< new-in 0.154.5 />}} -: (bool) Whether to disable generation of the alias redirect to the [default site](g). When [`defaultContentLanguageInSubdir`][], [`defaultContentRoleInSubdir`][], or [`defaultContentVersionInSubdir`][] is `true`, this prevents the root directory from redirecting to the default site's subdirectory. Conversely, when these are `false`, it prevents the subdirectories from redirecting back to the root. Default is `false`. +: (`bool`) Whether to disable generation of the alias redirect to the [default site](g). When [`defaultContentLanguageInSubdir`][], [`defaultContentRoleInSubdir`][], or [`defaultContentVersionInSubdir`][] is `true`, this prevents the root directory from redirecting to the default site's subdirectory. Conversely, when these are `false`, it prevents the subdirectories from redirecting back to the root. Default is `false`. disableHugoGeneratorInject : (`bool`) Whether to disable injection of a `` tag into the home page. Default is `false`. @@ -139,7 +139,7 @@ i18nDir : (`string`) The designated directory for translation tables. Default is `i18n`. {{% module-mounts-note %}} ignoreCache -: (`bool`) Whether to ignore the cache directory. Default is `false`. +: (`bool`) Whether to ignore the configured file caches. Default is `false`. ignoreFiles : (`[]string`) A slice of [regular expressions](g) used to exclude specific files from a build. These expressions are matched against the absolute file path and apply to files within the `content`, `data`, and `i18n` directories. For more advanced file exclusion options, see the section on [module mounts][]. @@ -153,14 +153,9 @@ ignoreVendorPaths imaging : See [configure imaging][]. -locale -: (`string`) The site's language tag, conforming to the syntax described in [RFC 5646][]. This value does not affect translations or localization. Hugo uses this value to populate: - - - The `language` element in the [embedded RSS template][] - - The `lang` attribute of the `html` element in the [embedded alias template][] - - The `og:locale` `meta` element in the [embedded Open Graph template][] - - When present in the root of the configuration, this value is ignored if one or more language keys exists. Please specify this value independently for each language key. +languageCode +: {{}} +: Use [`locale`](#locale) instead. languages : See [configure languages][]. @@ -168,6 +163,10 @@ languages layoutDir : (`string`) The designated directory for templates. Default is `layouts`. {{% module-mounts-note %}} +{{% include "/_common/configuration/locale.md" %}} + + For a multilingual project, specify this value independently for each language key. See [configure languages][]. + mainSections : (`string` or `[]string`) The main sections of a site. If set, the [`MainSections`][] method on the `Site` object returns the given sections, otherwise it returns the section with the most pages. @@ -420,9 +419,6 @@ Some configuration settings, such as menus and custom parameters, can be defined [configure ugly URLs]: /configuration/ugly-urls/ [configure versions]: /configuration/versions/ [duration]: https://pkg.go.dev/time#Duration -[embedded Open Graph template]: <{{% eturl opengraph %}}> -[embedded RSS template]: <{{% eturl rss %}}> -[embedded alias template]: <{{% eturl alias %}}> [module mounts]: /configuration/module/#mounts [non-spacing marks]: https://www.compart.com/en/unicode/category/Mn [os.UserCacheDir]: https://pkg.go.dev/os#UserCacheDir diff --git a/content/en/configuration/cascade.md b/content/en/configuration/cascade.md index 5616314a8..98320edbe 100644 --- a/content/en/configuration/cascade.md +++ b/content/en/configuration/cascade.md @@ -9,9 +9,9 @@ keywords: [] You can configure your site to cascade front matter values to the home page and any of its descendants. However, this cascading will be prevented if the descendant already defines the field, or if a closer ancestor [node](g) has already cascaded a value for the same field through its front matter's `cascade` key. > [!note] -> You can also configure cascading behavior within a page's front matter. See [details]. +> You can also configure cascading behavior within a page's front matter. See [details][]. -For example, to cascade a "color" parameter to the home page and all its descendants: +For example, to cascade the `color` page parameter to all pages: {{< code-toggle file=hugo >}} [cascade.params] @@ -24,51 +24,38 @@ color = 'red' We deprecated the `_target` front matter key in favor of `target` in v0.156.0 on 2026-02-17. Remove footnote #1 on or after 2027-05-17 (15 months after deprecation). --> -The `target`[^1] keyword allows you to target specific pages or [environments](g). For example, to cascade a "color" parameter to pages within the "articles" section, including the "articles" section page itself: +The `target` key accepts a [page matcher](g) to limit cascaded values to a subset of pages.[^1] If a target is omitted, values cascade to all pages. -[^1]: The `_target` alias for `target` is deprecated and will be removed in a future release. +{{% include "/_common/configuration/page-matcher.md" %}} + +For example, to cascade the `color` page parameter to the `articles` section and its descendants, but only for the English (`en`) and German (`de`) language sites: {{< code-toggle file=hugo >}} [cascade.params] color = 'red' [cascade.target] path = '{/articles,/articles/**}' +[cascade.target.sites.matrix] +languages = '{en,de}' {{< /code-toggle >}} -Use any combination of these keywords to target pages and/or environments: - -environment -: (`string`) A [glob pattern](g) matching the build [environment](g). For example: `{staging,production}`. - -kind -: (`string`) A [glob pattern](g) matching the [page kind](g). For example: `{taxonomy,term}`. - -lang -: (`string`) A [glob pattern](g) matching the [page language]. For example: `{en,de}`. - -path -: (`string`) A [glob pattern](g) matching the page's [logical path](g). For example: `{/books,/books/**}`. - ## Array -Define an array of cascade parameters to apply different values to different targets. For example: +Define an array of cascade maps to apply different values to different targets. For example: {{< code-toggle file=hugo >}} [[cascade]] [cascade.params] color = 'red' [cascade.target] -path = '/books/**' -kind = 'page' -lang = '{en,de}' +path = '{/articles,/articles/**}' [[cascade]] [cascade.params] color = 'blue' [cascade.target] -path = '/films/**' -kind = 'page' -environment = 'production' +path = '{/tutorials,/tutorials/**}' {{< /code-toggle >}} +[^1]: The `_target` alias for `target` is deprecated and will be removed in a future release. + [details]: /content-management/front-matter/#cascade-1 -[page language]: /methods/page/language/ diff --git a/content/en/configuration/introduction.md b/content/en/configuration/introduction.md index 7a117ba00..d4cf0dbe2 100644 --- a/content/en/configuration/introduction.md +++ b/content/en/configuration/introduction.md @@ -219,6 +219,9 @@ Note that you don't need to be so verbose as in the default setup below; a `_mer {{< code-toggle file=hugo dataKey="config_helpers.mergeStrategy" skipHeader=true />}} +> [!note] +> Hugo can merge map configuration values from modules and themes into the project configuration, but cannot merge slice values. This applies to top-level slice keys such as `menus`, as well as to map keys whose values are slices, such as the per-kind format lists in `outputs`. + ## Environment variables You can also configure settings using operating system environment variables: diff --git a/content/en/configuration/languages.md b/content/en/configuration/languages.md index b289d8ae5..dff133fa6 100644 --- a/content/en/configuration/languages.md +++ b/content/en/configuration/languages.md @@ -59,19 +59,7 @@ languageName : {{}} : Use [`label`](#label) instead. -locale -: (`string`) The language tag as described in [RFC 5646][]. This is the primary value used by the [`language.Translate`][] function to select a translation table, falling back to the language key if a matching translation table does not exist. - - Hugo also uses this value to populate: - - - The `lang` attribute of the `html` element in the [embedded alias template][] - - The `language` element in the [embedded RSS template][] - - The `locale` property in the [embedded OpenGraph template][] - - > [!note] - > This value does not affect localization of dates, numbers, and currencies, nor does it affect the site's URL structure. These are controlled by the [language key](#language-keys). - - Access this value from a template using the [`Language.Locale`][] method on a `Site` or `Page` object. +{{% include "/_common/configuration/locale.md" %}} title : (`string`) The site title for this language. Access this value from a template using the [`Title`][] method on a `Site` object. @@ -203,15 +191,10 @@ public [RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.1 [`Language.Direction`]: /methods/site/language/#direction [`Language.Label`]: /methods/site/language/#label -[`Language.Locale`]: /methods/site/language/#locale [`Title`]: /methods/site/title/ [`defaultContentLanguageInSubdir`]: #defaultcontentlanguageinsubdir [`defaultContentLanguage`]: #defaultcontentlanguage [`dir`]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir [`disableDefaultSiteRedirect`]: /configuration/all/#disabledefaultsiteredirect -[`language.Translate`]: /functions/lang/translate/ -[embedded OpenGraph template]: <{{% eturl opengraph %}}> -[embedded RSS template]: <{{% eturl rss %}}> -[embedded alias template]: <{{% eturl alias %}}> -[language keys]: #language-keys +[language keys]: /configuration/languages/#language-keys [translating by file name]: /content-management/multilingual/#translation-by-file-name diff --git a/content/en/configuration/module.md b/content/en/configuration/module.md index 4f7c98e4e..60b1b979f 100644 --- a/content/en/configuration/module.md +++ b/content/en/configuration/module.md @@ -119,6 +119,10 @@ noMounts noVendor : (`bool`) Whether to disable vendoring for this import. This setting is restricted to the main project. Default is `false`. +usePackageJSON +: {{< new-in 0.159.0 />}} +: (`string`) Whether to use the import's npm dependencies in [hugo mod npm pack](commands/hugo_mod_npm_pack/). One of `auto` (default), `always` or `never`. When set to `auto`, Hugo will enable this if either there is a Hugo config file (e.g. `hugo.toml`) or a `package.hugo.json` file in the module root. + path : (`string`) The module path, either a valid Go module path (e.g., `github.com/gohugoio/myShortcodes`) or the directory name if stored in the [`themesDir`][]. @@ -135,11 +139,11 @@ version ### Default mounts -Within a project, if you define a mount to map a file system path to a component path, the corresponding default mount for that component will be removed. This action essentially overwrites the standard, automatic mapping for that specific component with your custom one. +Defining a mount for a component within a project configuration removes the default mount for that component. -Within a module, if you define a mount to map a file system path to a component path, all of the default mounts will be removed. Defining a mount at the module level is a more sweeping change, causing all default mappings within that module to be discarded. +Defining a mount for a component within a module configuration removes all default mounts for that module. -In either case, if you still need one of the default mounts, you must explicitly add it along with the new mount. Because custom mounts override defaults, any necessary default mappings must be re-added manually after you introduce your custom configuration. +If you still need any of the default mounts, you must explicitly add them along with the new mount. These are the default mounts: @@ -154,10 +158,22 @@ target disableWatch : (`bool`) Whether to disable watching in watch mode for this mount. Default is `false`. +excludeFiles +: {{< deprecated-in 0.153.0 />}} +: Use [`files`](#files) instead. + files : {{< new-in 0.153.0 />}} : (`[]string`) A [glob slice](g) defining the files to include or exclude. +includeFiles +: {{< deprecated-in 0.153.0 />}} +: Use [`files`](#files) instead. + +lang +: {{< deprecated-in 0.153.0 />}} +: Use [`sites`](#sites) instead. + sites : {{< new-in 0.153.0 />}} : (`map`) A map to define [sites matrix](g) and [sites complements](g) for the mount. Relevant for `content` and `layouts` mounts, and `static` mounts when in multihost mode. For `static` and `layouts`, only the `matrix` keyword is supported. diff --git a/content/en/configuration/permalinks.md b/content/en/configuration/permalinks.md index 49ad35b36..2c9d19223 100644 --- a/content/en/configuration/permalinks.md +++ b/content/en/configuration/permalinks.md @@ -6,153 +6,96 @@ categories: [] keywords: [] --- -This is the default configuration: - -{{< code-toggle config=permalinks />}} - -Define a URL pattern for each top-level section. Each URL pattern can target a given language and/or page kind. +Use the `permalinks` configuration to define custom URL patterns for your pages. Hugo supports two forms: a map form for simple section-based patterns, and an array form that supports [page matchers](g) for more precise targeting. > [!note] > The [`url`] front matter field overrides any matching permalink pattern. -## Monolingual example +## Map form -With this content structure: - -```text -content/ -├── posts/ -│ ├── bash-in-slow-motion.md -│ └── tls-in-a-nutshell.md -├── tutorials/ -│ ├── git-for-beginners.md -│ └── javascript-bundling-with-hugo.md -└── _index.md -``` - -Render tutorials under "training", and render the posts under "articles" with a date-base hierarchy: +Define URL patterns for each top-level [section](g), keyed by [page kind](g). For example, to configure URL patterns for the `articles` section: {{< code-toggle file=hugo >}} [permalinks.page] -posts = '/articles/:year/:month/:slug/' -tutorials = '/training/:slug/' +articles = '/blog/:year/:month/:slug/' [permalinks.section] -posts = '/articles/' -tutorials = '/training/' +articles = '/blog/' {{< /code-toggle >}} -The structure of the published site will be: - -```text -public/ -├── articles/ -│ ├── 2023/ -│ │ ├── 04/ -│ │ │ └── bash-in-slow-motion/ -│ │ │ └── index.html -│ │ └── 06/ -│ │ └── tls-in-a-nutshell/ -│ │ └── index.html -│ └── index.html -├── training/ -│ ├── git-for-beginners/ -│ │ └── index.html -│ ├── javascript-bundling-with-hugo/ -│ │ └── index.html -│ └── index.html -└── index.html -``` - -To create a date-based hierarchy for regular pages in the content root: +To configure permalinks per language, nest the `permalinks` key under the language key: {{< code-toggle file=hugo >}} -[permalinks.page] -'/' = '/:year/:month/:slug/' +[languages] + [languages.de] + label = 'Deutsch' + locale = 'de-DE' + weight = 1 + [languages.de.permalinks] + [languages.de.permalinks.page] + articles = '/artikel/:year/:month/:slug/' + [languages.de.permalinks.section] + articles = '/artikel/' + [languages.en] + label = 'English' + locale = 'en-US' + weight = 2 + [languages.en.permalinks] + [languages.en.permalinks.page] + articles = '/blog/:year/:month/:slug/' + [languages.en.permalinks.section] + articles = '/blog/' {{< /code-toggle >}} -Use the same approach with taxonomy terms. For example, to omit the taxonomy segment of the URL: +## Array form + +{{< new-in 0.161.0 />}} + +Define an array of permalink entries to apply different URL patterns to different subsets of pages. Each entry requires a `pattern` key. Hugo applies the first matching pattern. + +The optional `target` key accepts a [page matcher](g). If `target` is omitted, the pattern applies to all pages. + +{{% include "/_common/configuration/page-matcher.md" %}} + +For example, to apply language-specific URL patterns to the `articles` section page and its leaf pages separately: {{< code-toggle file=hugo >}} -[permalinks.term] -'tags' = '/:slug/' +[[permalinks]] + pattern = '/artikel/' + [permalinks.target] + path = '{/articles}' + [permalinks.target.sites] + [permalinks.target.sites.matrix] + languages = ['de'] +[[permalinks]] + pattern = '/artikel/:year/:month/:slug/' + [permalinks.target] + path = '{/articles/**}' + [permalinks.target.sites] + [permalinks.target.sites.matrix] + languages = ['de'] +[[permalinks]] + pattern = '/blog/' + [permalinks.target] + path = '{/articles}' + [permalinks.target.sites] + [permalinks.target.sites.matrix] + languages = ['en'] +[[permalinks]] + pattern = '/blog/:year/:month/:slug/' + [permalinks.target] + path = '{/articles/**}' + [permalinks.target.sites] + [permalinks.target.sites.matrix] + languages = ['en'] {{< /code-toggle >}} -## Multilingual example - -Use the `permalinks` configuration as a component of your localization strategy. - -With this content structure: - -```text -content/ -├── en/ -│ ├── books/ -│ │ ├── les-miserables.md -│ │ └── the-hunchback-of-notre-dame.md -│ └── _index.md -└── es/ - ├── books/ - │ ├── les-miserables.md - │ └── the-hunchback-of-notre-dame.md - └── _index.md -``` - -And this project configuration: +To define a fallback that matches any page not already matched by a preceding entry, place a pattern without a `target` key at the end: {{< code-toggle file=hugo >}} -defaultContentLanguage = 'en' -defaultContentLanguageInSubdir = true - -[languages.en] -contentDir = 'content/en' -direction = 'ltr' -label = 'English' -locale = 'en-US' -weight = 1 - -[languages.en.permalinks.page] -books = '/books/:slug/' - -[languages.en.permalinks.section] -books = '/books/' - -[languages.es] -contentDir = 'content/es' -direction = 'ltr' -label = 'Español' -locale = 'es-ES' -weight = 2 - -[languages.es.permalinks.page] -books = '/libros/:slug/' - -[languages.es.permalinks.section] -books = '/libros/' +[[permalinks]] +pattern = '/:section/:slug/' {{< /code-toggle >}} -The structure of the published site will be: - -```text -public/ -├── en/ -│ ├── books/ -│ │ ├── les-miserables/ -│ │ │ └── index.html -│ │ ├── the-hunchback-of-notre-dame/ -│ │ │ └── index.html -│ │ └── index.html -│ └── index.html -├── es/ -│ ├── libros/ -│ │ ├── les-miserables/ -│ │ │ └── index.html -│ │ ├── the-hunchback-of-notre-dame/ -│ │ │ └── index.html -│ │ └── index.html -│ └── index.html -└── index.html -``` - ## Tokens Use these tokens when defining a URL pattern. diff --git a/content/en/configuration/security.md b/content/en/configuration/security.md index 54342ad51..24da90e7b 100644 --- a/content/en/configuration/security.md +++ b/content/en/configuration/security.md @@ -33,8 +33,46 @@ http.mediaTypes http.urls : (`[]string`) A slice of [regular expressions](g) matching the URLs that the `resources.GetRemote` function is allowed to access. -> [!note] -> Setting an allowlist to the string `none` will completely disable the associated feature. +node.permissions.disable +: {{< new-in 0.161.0 />}} +: (`bool`) Whether to disable the Node.js [permission model]. When `false`, Hugo runs Node.js tools with the `--permission` flag, restricting their file system and resource access to what is explicitly allowed below. Default is `false`. + +node.permissions.allowAddons +: {{< new-in 0.161.0 />}} +: (`[]string`) A slice of Node.js tool names permitted to load native addons (`--allow-addons`). + +node.permissions.allowChildProcess +: {{< new-in 0.161.0 />}} +: (`[]string`) A slice of Node.js tool names permitted to spawn child processes (`--allow-child-process`). + +node.permissions.allowRead +: {{< new-in 0.161.0 />}} +: (`[]string`) A slice of file system paths that Node.js tools are allowed to read (`--allow-fs-read`). Paths are relative to the working directory; `"."` means the working directory itself. Use `"*"` to allow all paths. + +node.permissions.allowWorker +: {{< new-in 0.161.0 />}} +: (`[]string`) A slice of Node.js tool names permitted to spawn worker threads (`--allow-worker`). + +node.permissions.allowWrite +: {{< new-in 0.161.0 />}} +: (`[]string`) A slice of file system paths that Node.js tools are allowed to write (`--allow-fs-write`). Paths are relative to the working directory; `"."` means the working directory itself. Use `"*"` to allow all paths. + +## Negation rules + +{{< new-in 0.161.0 />}} + +Any pattern in an allowlist can be negated by prefixing it with an exclamation mark (`!`) and one space to turn it into a deny rule. Deny rules take precedence over allow rules. An allowlist composed entirely of deny rules implicitly allows everything it does not deny. An empty allowlist rejects everything. + +For example, to allow all URLs except those pointing to `evil.example.com`: + +```toml +[security.http] +urls = ['.*', '! ^https?://evil\.example\.com'] +``` + +Setting an allowlist to the string `none` will completely disable the associated feature. + +## Environment variables You can also override your project configuration with environment variables. For example, to block `resources.GetRemote` from accessing any URL: @@ -47,4 +85,5 @@ Learn more about [using environment variables] to configure your site. [`os.Getenv`]: /functions/os/getenv [`resources.GetRemote`]: /functions/resources/getremote [inline shortcodes]: /content-management/shortcodes/#inline +[permission model]: https://nodejs.org/api/permissions.html#permission-model [using environment variables]: /configuration/introduction/#environment-variables diff --git a/content/en/content-management/build-options.md b/content/en/content-management/build-options.md index 0e4d4020b..ea614d304 100644 --- a/content/en/content-management/build-options.md +++ b/content/en/content-management/build-options.md @@ -242,7 +242,7 @@ public/ Consider this example. A documentation site has a team of contributors with access to 20 custom shortcodes. Each shortcode takes several arguments, and requires documentation for the contributors to reference when using them. -Instead of external documentation for the shortcodes, include an "internal" section that is hidden when building the production site. +Instead of external documentation for the shortcodes, include an `internal` section that is hidden when building the production site. ```text content/ diff --git a/content/en/content-management/front-matter.md b/content/en/content-management/front-matter.md index bcb40b077..738cc0ad7 100644 --- a/content/en/content-management/front-matter.md +++ b/content/en/content-management/front-matter.md @@ -16,7 +16,7 @@ The front matter at the top of each content file is metadata that: - Controls the published structure of your site - Determines template selection -Provide front matter using a serialization format, one of [JSON], [TOML], or [YAML]. Hugo determines the front matter format by examining the delimiters that separate the front matter from the page content. +Provide front matter using a serialization format, one of [JSON][], [TOML][], or [YAML][]. Hugo determines the front matter format by examining the delimiters that separate the front matter from the page content. See examples of front matter delimiters by toggling between the serialization formats below. @@ -36,78 +36,76 @@ Front matter fields may be [boolean](g), [integer](g), [float](g), [string](g), The most common front matter fields are `date`, `draft`, `title`, and `weight`, but you can specify metadata using any of fields below. > [!note] -> The field names below are reserved. For example, you cannot create a custom field named `type`. Create custom fields under the `params` key. See the [parameters] section for details. - -[parameters]: #parameters +> The field names below are reserved. For example, you cannot create a custom field named `type`. Create custom fields under the `params` key. See the [parameters](#parameters) section for details. aliases -: (`[]string`) An array of one or more [page-relative](g) or [site-relative](g) paths that should redirect to the current page. Hugo resolves these to [server-relative](g) URLs during the build process. Access these values from a template using the [`Aliases`] method on a `Page` object. See the [aliases] section for details. +: (`[]string`) An array of one or more [page-relative](g) or [site-relative](g) paths that should redirect to the current page. Hugo resolves these to [server-relative](g) URLs during the build process. Access these values from a template using the [`Aliases`][] method on a `Page` object. See the [aliases][] section for details. build -: (`map`) A map of [build options]. +: (`map`) A map of [build options][]. cascade -: (`map`) A map (or a slice of maps) of front matter keys whose values are passed down to the page's descendants unless overwritten by self or a closer ancestor's cascade. See the [cascade] section for details. +: (`map`) A map (or array of maps) of front matter keys whose values are passed down to the page's descendants unless overwritten by self or a closer ancestor's cascade. See the [cascade][] section for details. date -: (`string`) The date associated with the page, typically the creation date. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`Date`] method on a `Page` object. +: (`string`) The date associated with the page, typically the creation date. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`Date`][] method on a `Page` object. description -: (`string`) Conceptually different than the page `summary`, the description is typically rendered within a `meta` element within the `head` element of the published HTML file. Access this value from a template using the [`Description`] method on a `Page` object. +: (`string`) Conceptually different than the page `summary`, the description is typically rendered within a `meta` element within the `head` element of the published HTML file. Access this value from a template using the [`Description`][] method on a `Page` object. draft -: (`bool`) Whether to disable rendering unless you pass the `--buildDrafts` flag to the `hugo` command. Access this value from a template using the [`Draft`] method on a `Page` object. +: (`bool`) Whether to disable rendering unless you pass the `--buildDrafts` flag to the `hugo` command. Access this value from a template using the [`Draft`][] method on a `Page` object. expiryDate -: (`string`) The page expiration date. On or after the expiration date, the page will not be rendered unless you pass the `--buildExpired` flag to the `hugo` command. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`ExpiryDate`] method on a `Page` object. +: (`string`) The page expiration date. On or after the expiration date, the page will not be rendered unless you pass the `--buildExpired` flag to the `hugo` command. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`ExpiryDate`][] method on a `Page` object. headless -: (`bool`) Applicable to [leaf bundles], whether to set the `render` and `list` [build options] to `never`, creating a headless bundle of [page resources]. +: (`bool`) Applicable to [leaf bundles][], whether to set the `render` and `list` [build options][] to `never`, creating a headless bundle of [page resources][]. isCJKLanguage -: (`bool`) Whether the content language is in the [CJK](g) family. This value determines how Hugo calculates word count, and affects the values returned by the [`WordCount`], [`FuzzyWordCount`], [`ReadingTime`], and [`Summary`] methods on a `Page` object. +: (`bool`) Whether the content language is in the [CJK](g) family. This value determines how Hugo calculates word count, and affects the values returned by the [`WordCount`][], [`FuzzyWordCount`][], [`ReadingTime`][], and [`Summary`][] methods on a `Page` object. keywords -: (`[]string`) An array of keywords, typically rendered within a `meta` element within the `head` element of the published HTML file, or used as a [taxonomy](g) to classify content. Access these values from a template using the [`Keywords`] method on a `Page` object. +: (`[]string`) An array of keywords, typically rendered within a `meta` element within the `head` element of the published HTML file, or used as a [taxonomy](g) to classify content. Access these values from a template using the [`Keywords`][] method on a `Page` object. lastmod -: (`string`) The date that the page was last modified. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`Lastmod`] method on a `Page` object. +: (`string`) The date that the page was last modified. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`Lastmod`][] method on a `Page` object. layout -: (`string`) Provide a template name to [target a specific template], overriding the default [template lookup order]. Set the value to the base file name of the template, excluding its extension. Access this value from a template using the [`Layout`] method on a `Page` object. +: (`string`) Provide a template name to [target a specific template][], overriding the default [template lookup order][]. Set the value to the base file name of the template, excluding its extension. Access this value from a template using the [`Layout`][] method on a `Page` object. linkTitle -: (`string`) Typically a shorter version of the `title`. Access this value from a template using the [`LinkTitle`] method on a `Page` object. +: (`string`) Typically a shorter version of the `title`. Access this value from a template using the [`LinkTitle`][] method on a `Page` object. markup -: (`string`) An identifier corresponding to one of the supported [content formats]. If not provided, Hugo determines the content renderer based on the file extension. +: (`string`) An identifier corresponding to one of the supported [content formats][]. If not provided, Hugo determines the content renderer based on the file extension. menus -: (`string`, `[]string`, or `map`) If set, Hugo adds the page to the given menu or menus. See the [menus] page for details. +: (`string`, `[]string`, or `map`) If set, Hugo adds the page to the given menu or menus. See the [menus][] page for details. modified : Alias to [lastmod](#lastmod). outputs -: (`[]string`) The [output formats] to render. See [configure outputs] for more information. +: (`[]string`) The [output formats][] to render. See [configure outputs][] for more information. params -: (`map`) A map of custom [page parameters]. +: (`map`) A map of custom [page parameters][]. pubdate : Alias to [publishDate](#publishdate). publishDate -: (`string`) The page publication date. Before the publication date, the page will not be rendered unless you pass the `--buildFuture` flag to the `hugo` command. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`PublishDate`] method on a `Page` object. +: (`string`) The page publication date. Before the publication date, the page will not be rendered unless you pass the `--buildFuture` flag to the `hugo` command. Note that the TOML format also supports unquoted date/time values. See the [dates](#dates) section for examples. Access this value from a template using the [`PublishDate`][] method on a `Page` object. published : Alias to [publishDate](#publishdate). resources -: (`map array`) An array of maps to provide metadata for [page resources]. +: (`map array`) An array of maps to provide metadata for [page resources]. Each element supports the `src`, `name`, `title`, and `params` keys. sitemap -: (`map`) A map of sitemap options. See the [sitemap templates] page for details. Access these values from a template using the [`Sitemap`] method on a `Page` object. +: (`map`) A map of sitemap options. See the [sitemap templates][] page for details. Access these values from a template using the [`Sitemap`][] method on a `Page` object. sites : {{< new-in 0.153.0 />}} @@ -128,28 +126,28 @@ sites slug -: (`string`) Overrides the last segment of the URL path. Not applicable to `home`, `section`, `taxonomy`, or `term` pages. See the [URL management] page for details. Access this value from a template using the [`Slug`] method on a `Page` object. +: (`string`) Overrides the last segment of the URL path. Not applicable to `home`, `section`, `taxonomy`, or `term` pages. See the [URL management][] page for details. Access this value from a template using the [`Slug`][] method on a `Page` object. summary -: (`string`) Conceptually different than the page `description`, the summary either summarizes the content or serves as a teaser to encourage readers to visit the page. Access this value from a template using the [`Summary`] method on a `Page` object. +: (`string`) Conceptually different than the page `description`, the summary either summarizes the content or serves as a teaser to encourage readers to visit the page. Access this value from a template using the [`Summary`][] method on a `Page` object. title -: (`string`) The page title. Access this value from a template using the [`Title`] method on a `Page` object. +: (`string`) The page title. Access this value from a template using the [`Title`][] method on a `Page` object. translationKey -: (`string`) An arbitrary value used to relate two or more translations of the same page, useful when the translated pages do not share a common path. Access this value from a template using the [`TranslationKey`] method on a `Page` object. +: (`string`) An arbitrary value used to relate two or more translations of the same page, useful when the translated pages do not share a common path. Access this value from a template using the [`TranslationKey`][] method on a `Page` object. type -: (`string`) The [content type](g), overriding the value derived from the top-level section in which the page resides. Access this value from a template using the [`Type`] method on a `Page` object. +: (`string`) The [content type](g), overriding the value derived from the top-level section in which the page resides. Access this value from a template using the [`Type`][] method on a `Page` object. unpublishdate : Alias to [expirydate](#expirydate). url -: (`string`) Overrides the entire URL path. Applicable to regular pages and section pages. See the [URL management] page for details. +: (`string`) Overrides the entire URL path. Applicable to regular pages and section pages. See the [URL management][] page for details. weight -: (`int`) The page [weight](g), used to order the page within a [page collection](g). Access this value from a template using the [`Weight`] method on a `Page` object. +: (`int`) The page [weight](g), used to order the page within a [page collection](g). Access this value from a template using the [`Weight`][] method on a `Page` object. ## Parameters @@ -164,15 +162,15 @@ weight = 10 author = 'John Smith' {{< /code-toggle >}} -Access these values from a template using the [`Params`] or [`Param`] method on a `Page` object. +Access these values from a template using the [`Params`][] or [`Param`][] method on a `Page` object. -Hugo provides [embedded templates] to optionally insert meta data within the `head` element of your rendered pages. These embedded templates expect the following front matter parameters: +Hugo provides [embedded templates][] to optionally insert meta data within the `head` element of your rendered pages. These embedded templates expect the following front matter parameters: Parameter|Data type|Used by these embedded templates :--|:--|:-- -`audio`|`[]string`|[`opengraph.html`] -`images`|`[]string`|[`opengraph.html`], [`schema.html`], [`twitter_cards.html`] -`videos`|`[]string`|[`opengraph.html`] +`audio`|`[]string`|[`opengraph.html`][] +`images`|`[]string`|[`opengraph.html`][], [`schema.html`][], [`twitter_cards.html`][] +`videos`|`[]string`|[`opengraph.html`][] The embedded templates will skip a parameter if not provided in front matter, but will throw an error if the data type is unexpected. @@ -207,7 +205,7 @@ You can add taxonomy terms to the front matter of any these [page kinds](g): - `taxonomy` - `term` -Access taxonomy terms from a template using the [`Params`] or [`GetTerms`] method on a `Page` object. For example: +Access taxonomy terms from a template using the [`Params`][] or [`GetTerms`][] method on a `Page` object. For example: ```go-html-template {file="layouts/page.html"} {{ with .GetTerms "tags" }} @@ -220,13 +218,14 @@ Access taxonomy terms from a template using the [`Params`] or [`GetTerms`] metho {{ end }} ``` -[`GetTerms`]: /methods/page/getterms/ - ## Cascade +> [!note] +> For multilingual projects, defining cascade values in your project configuration is often more efficient. This avoids repeating the same cascade values for each language. See [details](/configuration/cascade/). + A [node](g) can cascade front matter values to its descendants. However, this cascading will be prevented if the descendant already defines the field, or if a closer ancestor node has already cascaded a value for that same field. -For example, to cascade a "color" parameter from the home page to all its descendants: +For example, to cascade the `color` page parameter from the home page to all its descendants: {{< code-toggle file=content/_index.md fm=true >}} title = 'Home' @@ -234,47 +233,28 @@ title = 'Home' color = 'red' {{< /code-toggle >}} -{{< new-in 0.153.0 />}} -From Hugo 0.153.0, you can also set the [sites](#sites) front matter as cascade front matter values, which means that you can e.g. apply one or more languages to the `target` pages. - ### Target -The `target`[^1] keyword allows you to target specific pages or [environments](g). For example, to cascade a "color" parameter from the home page only to pages within the "articles" section, including the "articles" section page itself: +The `target` key accepts a [page matcher](g) to limit cascaded values to a subset of pages.[^1] If a target is not specified, values cascade to all descendant pages. -[^1]: The `_target` alias for `target` is deprecated and will be removed in a future release. +{{% include "/_common/configuration/page-matcher.md" %}} -{{< code-toggle file=content/_index.md fm=true >}} -title = 'Home' +For example, to cascade the `color` page parameter from the home page to the `articles` section and its descendants: + +{{< code-toggle file=hugo >}} [cascade.params] color = 'red' [cascade.target] path = '{/articles,/articles/**}' -[cascade.target.sites.matrix] -languages = ['en','fr'] {{< /code-toggle >}} -Use any combination of these keywords to target pages and/or environments: - -environment -: (`string`) A [glob pattern](g) matching the build [environment](g). For example: `{staging,production}`. - -kind -: (`string`) A [glob pattern](g) matching the [page kind](g). For example: `{taxonomy,term}`. - -path -: (`string`) A [glob pattern](g) matching the page's [logical path](g). For example: `{/books,/books/**}`. - -sites -: {{< new-in 0.153.0 />}} -: (`map`) A map to define [sites matrix](g) for the target, as in: Which sites should receive the cascaded values. - ### Array -Define an array of cascade parameters to apply different values to different targets. For example: +Define an array of cascade maps to apply different values to different targets. For example: {{< code-toggle file=content/_index.md fm=true >}} title = 'Home' @@ -282,24 +262,17 @@ title = 'Home' [cascade.params] color = 'red' [cascade.target] -path = '{/books/**}' -kind = 'page' +path = '{/articles,/articles/**}' [[cascade]] [cascade.params] color = 'blue' [cascade.target] -path = '{/films/**}' -kind = 'page' +path = '{/tutorials,/tutorials/**}' {{< /code-toggle >}} -> [!note] -> For multilingual projects, defining cascade values in your project configuration is often more efficient. This avoids repeating the same cascade values on the home, section, taxonomy, or term page for each language. See [details](/configuration/cascade/). -> -> If you choose to define cascade values in front matter for a multilingual project, you must create a corresponding home, section, taxonomy, or term page for every language. - ## Emacs Org Mode -If your [content format] is [Emacs Org Mode], you may provide front matter using Org Mode keywords. For example: +If your [content format][] is [Emacs Org Mode][], you may provide front matter using Org Mode keywords. For example: ```text {file="content/example.org"} #+TITLE: Example @@ -319,9 +292,6 @@ Note that you can also specify array elements on a single line: #+TAGS[]: red blue ``` -[content format]: /content-management/formats/ -[emacs org mode]: https://orgmode.org/ - ## Dates When populating a date field, whether a [custom page parameter](#parameters) or one of the four predefined fields ([`date`](#date), [`expiryDate`](#expirydate), [`lastmod`](#lastmod), [`publishDate`](#publishdate)), use one of these parsable formats: @@ -334,6 +304,13 @@ To override the default time zone, set the [`timeZone`](/configuration/all/#time 1. The time zone specified in your project configuration 1. The `Etc/UTC` time zone +[^1]: The `_target` alias for `target` is deprecated and will be removed in a future release. + +[URL management]: /content-management/urls/#slug +[`GetTerms`]: /methods/page/getterms/ +[`Param`]: /methods/page/param/ +[`Params`]: /methods/page/params/ +[`Summary`]: /methods/page/summary/ [`aliases`]: /methods/page/aliases/ [`date`]: /methods/page/date/ [`description`]: /methods/page/description/ @@ -345,14 +322,11 @@ To override the default time zone, set the [`timeZone`](/configuration/all/#time [`layout`]: /methods/page/layout/ [`linktitle`]: /methods/page/linktitle/ [`opengraph.html`]: <{{% eturl opengraph %}}> -[`Param`]: /methods/page/param/ -[`Params`]: /methods/page/params/ [`publishdate`]: /methods/page/publishdate/ [`readingtime`]: /methods/page/readingtime/ [`schema.html`]: <{{% eturl schema %}}> [`sitemap`]: /methods/page/sitemap/ [`slug`]: /methods/page/slug/ -[`Summary`]: /methods/page/summary/ [`title`]: /methods/page/title/ [`translationkey`]: /methods/page/translationkey/ [`twitter_cards.html`]: <{{% eturl twitter_cards %}}> @@ -363,7 +337,9 @@ To override the default time zone, set the [`timeZone`](/configuration/all/#time [build options]: /content-management/build-options/ [cascade]: #cascade-1 [configure outputs]: /configuration/outputs/#outputs-per-page +[content format]: /content-management/formats/ [content formats]: /content-management/formats/#classification +[emacs org mode]: https://orgmode.org/ [embedded templates]: /templates/embedded/ [json]: https://www.json.org/ [leaf bundles]: /content-management/page-bundles/#leaf-bundles @@ -375,5 +351,4 @@ To override the default time zone, set the [`timeZone`](/configuration/all/#time [target a specific template]: /templates/lookup-order/#target-a-template [template lookup order]: /templates/lookup-order/ [toml]: https://toml.io/ -[URL management]: /content-management/urls/#slug [yaml]: https://yaml.org/ diff --git a/content/en/content-management/markdown-attributes.md b/content/en/content-management/markdown-attributes.md index 42e7bcf94..17533ebfa 100644 --- a/content/en/content-management/markdown-attributes.md +++ b/content/en/content-management/markdown-attributes.md @@ -48,10 +48,7 @@ block = true # default is false ## Standalone images -By default, when the [Goldmark] Markdown renderer encounters a standalone image element (no other elements or text on the same line), it wraps the image element within a paragraph element per the [CommonMark specification]. - -[CommonMark specification]: https://spec.commonmark.org/current/ -[Goldmark]: https://github.com/yuin/goldmark +By default, when the [Goldmark][] Markdown renderer encounters a standalone image element (no other elements or text on the same line), it wraps the image element within a paragraph element per the [CommonMark specification][]. If you were to place an attribute list beneath an image element, Hugo would apply the attributes to the surrounding paragraph, not the image. @@ -64,9 +61,10 @@ wrapStandAloneImageWithinParagraph = false # default is true ## Usage -You may add [global HTML attributes], or HTML attributes specific to the current element type. Consistent with its content security model, Hugo removes HTML event attributes such as `onclick` and `onmouseover`. +You may add [global HTML attributes][], or HTML attributes specific to the current element type. Consistent with its content security model, Hugo removes HTML event attributes such as `onclick` and `onmouseover`. -[global HTML attributes]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes +> [!note] +> Within fenced code blocks, Hugo interprets the `style` attribute as a syntax highlighting [option][option] rather than a global HTML attribute. The attribute list consists of one or more key-value pairs, separated by spaces or commas, wrapped by braces. You must quote string values that contain spaces. Unlike HTML, boolean attributes must have both key and value. @@ -112,6 +110,10 @@ This is a paragraph. {class=foo} ```` -As shown above, the attribute list for fenced code blocks is not limited to HTML attributes. You can also configure syntax highlighting by passing one or more of [these options](/functions/transform/highlight/#options). +As shown above, the attribute list for fenced code blocks is not limited to HTML attributes. You can also configure syntax highlighting by passing one or more of [these options][option]. +[CommonMark specification]: https://spec.commonmark.org/current/ +[global HTML attributes]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes +[Goldmark]: https://github.com/yuin/goldmark [render hook templates]: /render-hooks/introduction/ +[option]: /functions/transform/highlight/#options diff --git a/content/en/content-management/multilingual.md b/content/en/content-management/multilingual.md index d3904db71..f8a8fbffe 100644 --- a/content/en/content-management/multilingual.md +++ b/content/en/content-management/multilingual.md @@ -29,6 +29,9 @@ Their language is assigned according to the language code added as a suffix to t By having the same path and base file name, the content pieces are linked together as translated pages. +> [!note] +> The language code in a file name must be lowercase. For example, use `about.en-us.md` instead of `about.en-US.md`. + > [!note] > If a file has no language code, it will be assigned the default language. diff --git a/content/en/content-management/page-bundles.md b/content/en/content-management/page-bundles.md index a5bf9a3af..4af1ceb61 100644 --- a/content/en/content-management/page-bundles.md +++ b/content/en/content-management/page-bundles.md @@ -9,7 +9,7 @@ keywords: [] A page bundle is a directory that encapsulates both content and associated resources. -By way of example, this site has an "about" page and a "privacy" page: +By way of example, this site has an `about` page and a `privacy` page: ```text content/ @@ -19,7 +19,7 @@ content/ └── privacy.md ``` -The "about" page is a page bundle. It logically associates a resource with content by bundling them together. Resources within a page bundle are [page resources], accessible with the [`Resources`] method on the `Page` object. +The `about` page is a page bundle. It logically associates a resource with content by bundling them together. Resources within a page bundle are [page resources], accessible with the [`Resources`] method on the `Page` object. Page bundles are either _leaf bundles_ or _branch bundles_. diff --git a/content/en/content-management/page-resources.md b/content/en/content-management/page-resources.md index db92734c1..c2a7827aa 100644 --- a/content/en/content-management/page-resources.md +++ b/content/en/content-management/page-resources.md @@ -5,9 +5,7 @@ categories: [] keywords: [] --- -Page resources are only accessible from [page bundles](/content-management/page-bundles), those directories with `index.md` or -`_index.md` files at their root. Page resources are only available to the -page with which they are bundled. +Page resources are only accessible from [page bundles][], those directories with `index.md` or`_index.md` files at their root. Page resources are only available to the page with which they are bundled. In this example, `first-post` is a page bundle with access to 10 page resources including audio, data, documents, images, and video. Although `second-post` is also a page bundle, it has no page resources and is unable to directly access the page resources associated with `first-post`. @@ -40,7 +38,7 @@ Use any of these methods on a `Page` object to capture page resources: - [`Resources.GetMatch`] - [`Resources.Match`] - Once you have captured a resource, use any of the applicable [`Resource`] methods to return a value or perform an action. + Once you have captured a resource, use any of the applicable [`Resource`][] methods to return a value or perform an action. The following examples assume this content structure: @@ -106,22 +104,22 @@ List the titles in the data file, and throw an error if the file does not exist. ## Metadata -The page resources' metadata is managed from the corresponding page's front matter with an array/table parameter named `resources`. You can batch assign values using [wildcards](https://tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm). +The page resources' metadata is managed from the corresponding page's front matter with an array parameter named `resources`. > [!note] > Resources of type `page` get `Title` etc. from their own front matter. -name -: (`string`) Sets the value returned in `Name`. +src +: (`string`) Required. A [glob pattern](g) matching one or more page resources by file path, relative to the page bundle. Matching is case-insensitive. When the pattern matches multiple resources, the same metadata is applied to each. -> [!note] -> The methods `Match`, `Get` and `GetMatch` use `Name` to match the resources. +name +: (`string`) Sets the value returned by [`Name`]. Supports the [`:counter`][] placeholder. After assignment, use `name`, not the original file path, with [`Resources.Get`][], [`Resources.Match`][], and [`Resources.GetMatch`][]. title -: (`string`) Sets the value returned in `Title` +: (`string`) Sets the value returned by [`Title`][]. Supports the [`:counter`][] placeholder. params -: (`map`) A map of custom key-value pairs. +: (`map`) A map of custom key-value pairs. When multiple array entries match the same resource, their `params` maps are merged; later entries take precedence for duplicate keys. ### Resources metadata example @@ -134,8 +132,6 @@ resources: name: header - src: documents/photo_specs.pdf title: Photo Specifications - params: - icon: photo - src: documents/guide.pdf title: Instruction Guide - src: documents/checklist.pdf @@ -155,20 +151,18 @@ resources: From the example above: - `sunset.jpg` will receive a new `Name` and can now be found with `.GetMatch "header"`. -- `documents/photo_specs.pdf` will get the `photo` icon. -- `documents/checklist.pdf`, `documents/guide.pdf` and `documents/payment.docx` will get `Title` as set by `title`. -- Every `PDF` in the bundle except `documents/photo_specs.pdf` will get the `pdf` icon. -- All `PDF` files will get a new `Name`. The `name` parameter contains a special placeholder [`:counter`](#the-counter-placeholder-in-name-and-title), so the `Name` will be `pdf-file-1`, `pdf-file-2`, `pdf-file-3`. -- Every docx in the bundle will receive the `word` icon. +- `documents/photo_specs.pdf`, `documents/guide.pdf`, `documents/checklist.pdf`, and `documents/payment.docx` will get `Title` as set by `title`. +- All `PDF` files will get the `pdf` icon and a new `Name`. The `name` parameter contains a special placeholder [`:counter`](#the-counter-placeholder-in-name-and-title), so the `Name` will be `pdf-file-1`, `pdf-file-2`, `pdf-file-3`. +- All `.docx` files will get the `word` icon. > [!note] -> The order matters; only the first set values of the `title`, `name` and `params` keys will be used. Consecutive parameters will be set only for the ones not already set. In the above example, `.Params.icon` is first set to `"photo"` in `src = "documents/photo_specs.pdf"`. So that would not get overridden to `"pdf"` by the later set `src = "**.pdf"` rule. +> For `name` and `title`, the first matching array entry wins; later matches are ignored. For `params`, all matching entries contribute; later entries take precedence for duplicate keys. Place more specific `src` patterns before broader wildcards to control which `name` and `title` values are applied. ### The `:counter` placeholder in `name` and `title` The `:counter` is a special placeholder recognized in `name` and `title` parameters `resources`. -The counter starts at 1 the first time they are used in either `name` or `title`. +Each unique `src` pattern maintains independent counters for `name` and `title`, each starting at 1 with the first matching resource. For example, if a bundle has the resources `photo_specs.pdf`, `other_specs.pdf`, `guide.pdf` and `checklist.pdf`, and the front matter has specified the `resources` as: @@ -179,24 +173,24 @@ title = 'Engine inspections' title = 'Specification #:counter' [[resources]] src = '**.pdf' - name = 'pdf-file-:counter' + name = 'pdf-file-:counter.pdf' {{}} the `Name` and `Title` will be assigned to the resource files as follows: -| Resource file | `Name` | `Title` | -|-------------------|-------------------|-----------------------| -| checklist.pdf | `"pdf-file-1.pdf` | `"checklist.pdf"` | -| guide.pdf | `"pdf-file-2.pdf` | `"guide.pdf"` | -| other\_specs.pdf | `"pdf-file-3.pdf` | `"Specification #1"` | -| photo\_specs.pdf | `"pdf-file-4.pdf` | `"Specification #2"` | +| Resource file | `Name` | `Title` | +|------------------|--------------------|----------------------| +| checklist.pdf | `"pdf-file-1.pdf"` | `"checklist.pdf"` | +| guide.pdf | `"pdf-file-2.pdf"` | `"guide.pdf"` | +| other\_specs.pdf | `"pdf-file-3.pdf"` | `"Specification #1"` | +| photo\_specs.pdf | `"pdf-file-4.pdf"` | `"Specification #2"` | ## Multilingual By default, with a multilingual single-host project, Hugo does not duplicate shared page during the build. > [!note] -> This behavior is limited to Markdown content. Shared page resources for other [content formats] are copied into each language bundle. +> This behavior is limited to Markdown content. Shared page resources for other [content formats][] are copied into each language bundle. Consider this project configuration: @@ -272,11 +266,11 @@ public/ This approach reduces build times, storage requirements, bandwidth consumption, and deployment times, ultimately reducing cost. > [!important] -> To resolve Markdown link and image destinations to the correct location, you must use link and image render hooks that capture the page resource with the [`Resources.Get`] method, and then invoke its [`RelPermalink`] method. +> To resolve Markdown link and image destinations to the correct location, you must use link and image render hooks that capture the page resource with the [`Resources.Get`][] method, and then invoke its [`RelPermalink`][] method. > -> In its default configuration, Hugo automatically uses the [embedded link render hook] and the [embedded image render hook] for multilingual single-host projects, specifically when the [duplication of shared page resources] feature is disabled. This is the default behavior for such projects. If custom link or image render hooks are defined by your project, modules, or themes, these will be used instead. +> In its default configuration, Hugo automatically uses the [embedded link render hook][] and the [embedded image render hook][] for multilingual single-host projects, specifically when the [duplication of shared page resources][] feature is disabled. This is the default behavior for such projects. If custom link or image render hooks are defined by your project, modules, or themes, these will be used instead. > -> You can also configure Hugo to `always` use the embedded link or image render hook, use it only as a `fallback`, or `never` use it. See [details](/configuration/markup/#renderhookslinkuseembedded). +> You can also configure Hugo to `always` use the embedded link or image render hook, use it only as a `fallback`, or `never` use it. See [details][]. Although duplicating shared page resources is inefficient, you can enable this feature in your project configuration if desired: @@ -285,13 +279,18 @@ Although duplicating shared page resources is inefficient, you can enable this f duplicateResourceFiles = true {{< /code-toggle >}} +[`:counter`]: #the-counter-placeholder-in-name-and-title +[`Name`]: /methods/resource/name/ [`RelPermalink`]: /methods/resource/relpermalink/ [`Resource`]: /methods/resource [`Resources.ByType`]: /methods/page/resources#bytype -[`Resources.Get`]: /methods/page/resources/#get [`Resources.GetMatch`]: /methods/page/resources#getmatch +[`Resources.Get`]: /methods/page/resources/#get [`Resources.Match`]: /methods/page/resources#match +[`Title`]: /methods/resource/title/ [content formats]: /content-management/formats/ +[details]: /configuration/markup/#renderhookslinkuseembedded [duplication of shared page resources]: /configuration/markup/#duplicateresourcefiles [embedded image render hook]: /render-hooks/images/#embedded [embedded link render hook]: /render-hooks/links/#embedded +[page bundles]: /content-management/page-bundles diff --git a/content/en/content-management/syntax-highlighting.md b/content/en/content-management/syntax-highlighting.md index 57735b0ab..05c51d559 100644 --- a/content/en/content-management/syntax-highlighting.md +++ b/content/en/content-management/syntax-highlighting.md @@ -8,13 +8,10 @@ aliases: [/extras/highlighting/,/extras/highlight/,/tools/syntax-highlighting/] Hugo provides several methods to add syntax highlighting to code examples: -- Use the [`transform.Highlight`] function within your templates -- Use the [`highlight`] shortcode with any [content format](g) +- Use the [`transform.Highlight`][] function within your templates +- Use the [`highlight`][] shortcode with any [content format](g) - Use fenced code blocks with the Markdown content format -[`transform.Highlight`]: /functions/transform/highlight/ -[`highlight`]: /shortcodes/highlight/ - ## Fenced code blocks In its default configuration, Hugo highlights code examples within fenced code blocks, following this form: @@ -29,13 +26,10 @@ CODE : The code to highlight. LANG -: The language of the code to highlight. Choose from one of the [supported languages]. This value is case-insensitive. +: The language of the code to highlight. Choose from one of the [supported languages][]. This value is case-insensitive. If omitted or unsupported, Hugo renders the text as a plain text block without syntax highlighting. Consistent with the [CommonMark specification][], fenced code blocks require a known language identifier to trigger semantic syntax highlighting. OPTIONS -: One or more space-separated or comma-separated key-value pairs wrapped in braces. Set default values for each option in your [project configuration]. The key names are case-insensitive. - -[supported languages]: #languages -[project configuration]: /configuration/markup/#highlight +: One or more space-separated or comma-separated key-value pairs wrapped in braces. Set default values for each option in your [project configuration][]. The key names are case-insensitive. For example, with this Markdown: @@ -95,8 +89,14 @@ Hugo renders this to: These are the supported languages. Use one of the identifiers, not the language name, when specifying a language for: -- The [`transform.Highlight`] function -- The [`highlight`] shortcode +- The [`transform.Highlight`][] function +- The [`highlight`][] shortcode - Fenced code blocks {{< chroma-lexers >}} + +[`highlight`]: /shortcodes/highlight/ +[`transform.Highlight`]: /functions/transform/highlight/ +[CommonMark specification]: https://spec.commonmark.org/0.31.2/#indented-code-blocks +[project configuration]: /configuration/markup/#highlight +[supported languages]: #languages diff --git a/content/en/content-management/taxonomies.md b/content/en/content-management/taxonomies.md index c8fcf78c1..826f73192 100644 --- a/content/en/content-management/taxonomies.md +++ b/content/en/content-management/taxonomies.md @@ -103,13 +103,13 @@ tags_weight = 1000 tags = ['chemistry','science'] {{}} -With the front matter above, the "Organic Chemistry" page will float towards the top of the list on section and home pages, and it will sink towards the bottom of the list on the "chemistry" and "science" term pages. +With the front matter above, the `organic-chemistry` page will float towards the top of the list on section and home pages, and it will sink towards the bottom of the list on the `chemistry` and `science` term pages. ## Metadata Display metadata about each term by creating a corresponding branch bundle in the `content` directory. -For example, create an "authors" taxonomy: +For example, create an `authors` taxonomy: {{< code-toggle file=hugo >}} [taxonomies] @@ -136,7 +136,7 @@ title = 'John Smith' affiliation = 'University of Chicago' {{< /code-toggle >}} -Then create a _taxonomy_ template specific to the "authors" taxonomy: +Then create a _taxonomy_ template specific to the `authors` taxonomy: ```go-html-template {file="layouts/authors/taxonomy.html"} {{ define "main" }} @@ -156,7 +156,7 @@ Then create a _taxonomy_ template specific to the "authors" taxonomy: In the example above we list each author including their affiliation and portrait. -Or create a _term_ template specific to the "authors" taxonomy: +Or create a _term_ template specific to the `authors` taxonomy: ```go-html-template {file="layouts/authors/term.html"} {{ define "main" }} diff --git a/content/en/content-management/urls.md b/content/en/content-management/urls.md index e82ac0c1a..d107b0f87 100644 --- a/content/en/content-management/urls.md +++ b/content/en/content-management/urls.md @@ -105,9 +105,7 @@ monolingual|`about`|`https://example.org/about/` multilingual|`/about`|`https://example.org/about/` multilingual|`about`|`https://example.org/de/about/` -#### Permalinks tokens in front matter - -{{< new-in 0.131.0 />}} +#### Tokens You can also use tokens when setting the `url` value. This is typically used in `cascade` sections: diff --git a/content/en/contribute/development.md b/content/en/contribute/development.md index f2168ca78..2860f588a 100644 --- a/content/en/contribute/development.md +++ b/content/en/contribute/development.md @@ -29,15 +29,10 @@ For a complete guide to contributing to Hugo, see the [Contribution Guide]. ## Prerequisites -To build the extended or extended/deploy edition from source you must: +To build Hugo from source you must install: 1. Install [Git] 1. Install [Go] version 1.25.0 or later -1. Install a C compiler, either [GCC] or [Clang] -1. Update your `PATH` environment variable as described in the [Go documentation] - -> [!note] -> See these [detailed instructions](https://discourse.gohugo.io/t/41370) to install GCC on Windows. ## GitHub workflow @@ -71,23 +66,29 @@ Step 4 : Make changes. Step 5 -: Compile and install. +: Build and install. - To compile and install the standard edition: + To build and install the standard edition: - ```text - go install + ```sh + CGO_ENABLED=0 go install ``` - To compile and install the extended edition: + {{< new-in v0.159.2 />}} To build and install the deploy edition: - ```text + ```sh + CGO_ENABLED=0 go install -tags withdeploy + ``` + + To build and install the extended edition, first install a C compiler such as [GCC] or [Clang] and then run the following command: + + ```sh CGO_ENABLED=1 go install -tags extended ``` - To compile and install the extended/deploy edition: + To build and install the extended/deploy edition, first install a C compiler such as [GCC] or [Clang] and then run the following command: - ```text + ```sh CGO_ENABLED=1 go install -tags extended,withdeploy ``` @@ -130,46 +131,17 @@ Step 9 Step 10 : A project maintainer will review your PR and may request changes. You may delete your branch after the maintainer merges your PR. -## Building from source - -You can build, install, and test Hugo at any point in its development history. The examples below build and install the extended edition of Hugo. - -To build and install the latest release: - -```sh -CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@latest -``` - -To build and install a specific release: - -```sh -CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@v0.158.0 -``` - -To build and install at the latest commit on the master branch: - -```sh -CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@master -``` - -To build and install at a specific commit: - -```sh -CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@c0d9beb -``` - -[bugs]: https://github.com/gohugoio/hugo/issues?q=is%3Aopen+is%3Aissue+label%3ABug [Clang]: https://clang.llvm.org/ -[commit message guidelines]: https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md#git-commit-message-guidelines [Contribution Guide]: https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md -[create a proposal]: https://github.com/gohugoio/hugo/issues/new?labels=Proposal%2C+NeedsTriage&template=feature_request.md -[documentation]: /documentation -[documentation repository]: https://github.com/gohugoio/hugoDocs -[forum]: https://discourse.gohugo.io [GCC]: https://gcc.gnu.org/ [Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git [Go]: https://go.dev/doc/install -[Go documentation]: https://go.dev/doc/code#Command +[bugs]: https://github.com/gohugoio/hugo/issues?q=is%3Aopen+is%3Aissue+label%3ABug +[commit message guidelines]: https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md#git-commit-message-guidelines +[create a proposal]: https://github.com/gohugoio/hugo/issues/new?labels=Proposal%2C+NeedsTriage&template=feature_request.md +[documentation repository]: https://github.com/gohugoio/hugoDocs +[documentation]: /documentation +[forum]: https://discourse.gohugo.io [issue queue]: https://github.com/gohugoio/hugo/issues [issues]: https://github.com/gohugoio/hugo/issues [project repository]: https://github.com/gohugoio/hugo/ diff --git a/content/en/functions/collections/Where.md b/content/en/functions/collections/Where.md index 40dd78f98..c8e4ae415 100644 --- a/content/en/functions/collections/Where.md +++ b/content/en/functions/collections/Where.md @@ -142,7 +142,7 @@ For example, to return a slice of pages where the `color` page parameter is eith {{ $pages := where $fruit "Params.color" "in" $colors }} ``` -To return a slice of pages where the "color" page parameter is neither "red" nor "yellow": +To return a slice of pages where the `color` page parameter is neither `red` nor `yellow`: ```go-html-template {{ $fruit := where site.RegularPages "Section" "eq" "fruit" }} @@ -155,7 +155,7 @@ To return a slice of pages where the "color" page parameter is neither "red" nor Compare a `slice` to a `slice`, returning elements with common values. This is frequently used when comparing taxonomy terms. -For example, to return a slice of pages where any of the terms in the "genres" taxonomy are "suspense" or "romance": +For example, to return a slice of pages where any of the terms in the `genres` taxonomy are "suspense" or "romance": ```go-html-template {{ $books := where site.RegularPages "Section" "eq" "books" }} @@ -166,7 +166,7 @@ For example, to return a slice of pages where any of the terms in the "genres" t ## Regular expression comparison -To return a slice of pages where the "author" page parameter begins with either "victor" or "Victor": +To return a slice of pages where the `author` page parameter begins with either "victor" or "Victor": ```go-html-template {{ $pages := where .Site.RegularPages "Params.author" "like" `(?i)^victor` }} diff --git a/content/en/functions/crypto/FNV32a.md b/content/en/functions/crypto/FNV32a.md deleted file mode 100644 index 03bcc57e7..000000000 --- a/content/en/functions/crypto/FNV32a.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: crypto.FNV32a -description: Returns the 32-bit FNV (Fowler-Noll-Vo) non-cryptographic hash of the given string. -categories: [] -keywords: [] -params: - functions_and_methods: - aliases: [] - returnType: int - signatures: [crypto.FNV32a STRING] -expiryDate: 2026-07-31 # deprecated 2024-07-31 in v0.129.0 ---- - -{{< deprecated-in 0.129.0 >}} -Use [`hash.FNV32a`] instead. - -[`hash.FNV32a`]: /functions/hash/FNV32a/ -{{< /deprecated-in >}} diff --git a/content/en/functions/css/Build.md b/content/en/functions/css/Build.md index 932d2c706..30f6d823f 100644 --- a/content/en/functions/css/Build.md +++ b/content/en/functions/css/Build.md @@ -12,6 +12,9 @@ params: {{< new-in 0.158.0 />}} +> [!note] +> The `css.Build` function is backed by the [`evanw/esbuild`][] package, providing a mature, high-performance foundation for bundling, transformation, and minification. + Use the `css.Build` function to: - Recursively replace `@import` statements in CSS files with the content of the imported files @@ -90,7 +93,7 @@ To minify the generated CSS code, use the [`minify`](#minify) option as describe ## Options -The `css.Build` function takes an optional map of options based on the underlying [`esbuild`] package. Use these options to fine-tune bundling, minification, and browser compatibility. +The `css.Build` function takes an optional map of options to fine-tune bundling, minification, and browser compatibility. externals : (`[]string`) A slice of path patterns to exclude from bundling. The `@import` statements for these patterns remain as-is in the generated CSS code. See [details][esb_external]. @@ -169,6 +172,126 @@ targetPath {{ $r := resources.Get "css/main.css" | css.Build $opts }} ``` +vars +: {{< new-in 0.160.0 />}} +: (`map`) A map of key-value pairs used to generate CSS variables. The `css.Build` function injects these variables into the stylesheet when it encounters the `hugo:vars` internal identifier within an `@import` statement. + + ```go-html-template + {{ $vars := dict + "font-family" "\"Times New Roman\", Times, serif" + "font-size" "24px" + "primary-color" "blue" + }} + {{ $opts := dict "vars" $vars }} + {{ $r := resources.Get "css/main.css" | css.Build $opts }} + ``` + + In the example above, using the identifier in your CSS allows you to access the values using standard CSS variable syntax. + + ```css + @import 'hugo:vars'; + + .element { + color: var(--primary-color); + font-family: var(--font-family); + font-size: var(--font-size); + } + ``` + + The above produces output equivalent to: + + ```css + :root { + --font-family: + "Times New Roman", + Times, + serif; + --font-size: 24px; + --primary-color: blue; + } + + .element { + color: var(--primary-color); + font-family: var(--font-family); + font-size: var(--font-size); + } +```` + + {{< new-in 0.161.0 />}} + + The map may optionally contain nested maps. Each nested map is exposed as a separate `hugo:vars/` namespace, where `` is the key of the nested map (lowercased). Top-level scalar values and nested maps are independent. A top-level `@import 'hugo:vars'` only includes scalar values, while `@import 'hugo:vars/'` only includes the scalars from the named nested map. + + ```go-html-template + {{ $vars := dict + "font-family" "\"Times New Roman\", Times, serif" + "font-size" "24px" + "primary-color" "blue" + "mobile" (dict + "font-size" "12px" + "primary-color" "red" + ) + }} + {{ $opts := dict "vars" $vars }} + {{ $r := resources.Get "css/main.css" | css.Build $opts }} + ``` + + Because nested imports follow the same rules as regular `@import` statements, you can attach a media query, feature query, or cascade layer assignment to a `hugo:vars/` import. + + ```css + @import 'hugo:vars'; + @import 'hugo:vars/mobile' (max-width: 650px); + + body { + background-color: var(--primary-color); + font-family: var(--font-family); + } + ``` + + The above produces output equivalent to: + + ```css + :root { + --font-family: "Times New Roman", Times, serif; + --font-size: 24px; + --primary-color: blue; + } + + @media (max-width: 650px) { + :root { + --font-size: 12px; + --primary-color: red; + } + } + + body { + background-color: var(--primary-color); + font-family: var(--font-family); + } + ``` + + The `vars` option is useful for setting CSS variables within your project configuration. + + {{< code-toggle file=hugo >}} + [params.theme.style] + font-family = '"Times New Roman", Times, serif' + font-size = '24px' + primary-color = 'blue' + + [params.theme.style.mobile] + font-size = '12px' + primary-color = 'red' + {{< /code-toggle >}} + + ```go-html-template + {{ $opts := dict "vars" site.Params.theme.style }} + {{ $r := resources.Get "css/main.css" | css.Build $opts }} + ``` + + When passing a `vars` map to the `css.Build` function, you can use the [`css.Quoted`][] function to explicitly indicate that a value must be treated as a quoted string, most commonly for `font-family` names or the `content` property. + + > [!note] + > If you're using TailwindCSS and want to use the `vars` option to inject CSS variables, see [this section in the TailwindCSS documentation](./TailwindCSS.md#inject-css-variables-with-vars). + ## Example The example below uses several of the [options](#options) described above to bundle, transform, and minify CSS code. @@ -180,6 +303,7 @@ The example below uses several of the [options](#options) described above to bun "minify" (cond hugo.IsDevelopment false true) "sourceMap" (cond hugo.IsDevelopment "linked" "none") "target" (slice "chrome115" "edge115" "firefox116" "ios16.4" "opera101" "safari16.4") + "targetPath" "css/styles.css" }} {{ with . | css.Build $opts }} {{ if hugo.IsDevelopment }} @@ -203,17 +327,6 @@ Using the options above, Hugo does the following: - Publishes the generated CSS code to `css/styles.css` - In production, adds an SRI hash and inserts a file hash into the filename -[`esbuild`]: https://github.com/evanw/esbuild -[`publishDir`]: /configuration/all/#publishdir -[browserlist]: https://browsersl.ist -[esb_external]: https://esbuild.github.io/api/#external -[esb_loader]: https://esbuild.github.io/api/#loader -[esb_mainfields]: https://esbuild.github.io/api/#main-fields -[esb_minify]: https://esbuild.github.io/api/#minify -[esb_sourcemap]: https://esbuild.github.io/api/#sourcemap -[esb_sourcesContent]: https://esbuild.github.io/api/#sources-content -[esb_target]: https://esbuild.github.io/api/#target - ## Common patterns The examples below cover the most frequent use cases for referencing resources within your project or within Node packages. These patterns apply to both `@import` statements and the `url()` functional notation used for images and fonts. @@ -254,3 +367,15 @@ To reference a specific file within a Node package, provide the path starting wi ```css {file="/assets/css/main.css"} @import "bootstrap/dist/css/bootstrap-grid.css"; ``` + +[`css.Quoted`]: /functions/css/quoted/ +[`evanw/esbuild`]: https://github.com/evanw/esbuild +[`publishDir`]: /configuration/all/#publishdir +[browserlist]: https://browsersl.ist +[esb_external]: https://esbuild.github.io/api/#external +[esb_loader]: https://esbuild.github.io/api/#loader +[esb_mainfields]: https://esbuild.github.io/api/#main-fields +[esb_minify]: https://esbuild.github.io/api/#minify +[esb_sourcemap]: https://esbuild.github.io/api/#sourcemap +[esb_sourcesContent]: https://esbuild.github.io/api/#sources-content +[esb_target]: https://esbuild.github.io/api/#target diff --git a/content/en/functions/css/Quoted.md b/content/en/functions/css/Quoted.md index 58784f3e6..a3d32a751 100644 --- a/content/en/functions/css/Quoted.md +++ b/content/en/functions/css/Quoted.md @@ -13,13 +13,29 @@ params: > [!note] -> This function is only applicable to the [`vars`] option passed to the [`css.Sass`] function. +> This function is only applicable to the `vars` option passed to the [`css.Build`][] or [`css.Sass`][] functions. When passing a `vars` map to the `css.Sass` function, Hugo detects common typed CSS values such as `24px` or `#FF0000` using regular expression matching. If necessary, you can bypass automatic type inference by using the `css.Quoted` function to explicitly indicate that the value must be treated as a quoted string. -For example: +For the `css.Build` function, use `css.Quoted` to explicitly indicate that a value must be treated as a quoted string, most commonly for `font-family` names or the `content` property. -```scss {file="assets/sass/main.scss"} +In the example below, we use `css.Quoted` to ensure the values for the `content` property are injected as strings. + +```go-html-template +{{ $vars := dict + "ol-li-after" ("6" | css.Quoted) + "ul-li-after" ("7" | css.Quoted) +}} + +{{ $opts := dict "vars" $vars "transpiler" "dartsass" }} +{{ with resources.Get "sass/main.scss" | css.Sass $opts }} + +{{ end }} +``` + +Using the `hugo:vars` identifier in your stylesheet: + +```scss @use "hugo:vars" as h; ol li::after { @@ -31,35 +47,9 @@ ul li::after { } ``` -```go-html-template {file="layouts/_partials/css.html"} -{{ $vars := dict - "ol_li_after" ("6" | css.Quoted ) - "ul_li_after" ("7" | css.Quoted ) -}} +The resulting CSS contains quoted strings: -{{ with resources.Get "sass/main.scss" }} - {{ $opts := dict - "enableSourceMap" hugo.IsDevelopment - "outputStyle" (cond hugo.IsDevelopment "expanded" "compressed") - "targetPath" "css/main.css" - "transpiler" "dartsass" - "vars" $vars - }} - {{ with . | toCSS $opts }} - {{ if hugo.IsDevelopment }} - - {{ else }} - {{ with . | fingerprint }} - - {{ end }} - {{ end }} - {{ end }} -{{ end }} -``` - -The Sass code is transpiled to: - -```css {file="public/css/main.css"} +```css ol li::after { content: "6"; } @@ -69,5 +59,5 @@ ul li::after { } ``` -[`css.Sass`]: /functions/css/sass/ -[`vars`]: /functions/css/sass/#vars +[`css.Build`]: /functions/css/build/#vars +[`css.Sass`]: /functions/css/sass/#vars diff --git a/content/en/functions/css/Sass.md b/content/en/functions/css/Sass.md index c5e10772b..3173a5a47 100644 --- a/content/en/functions/css/Sass.md +++ b/content/en/functions/css/Sass.md @@ -14,7 +14,7 @@ aliases: [/functions/resources/tocss/] Transpile Sass to CSS using the LibSass transpiler included in Hugo's extended and extended/deploy editions, or [install Dart Sass](#dart-sass) to use the latest features of the Sass language. > [!warning] -> The embedded LibSass transpiler was deprecated in [v0.153.0][] and will be removed in a future release. Use the Dart Sass transpiler instead. +> The embedded LibSass transpiler was deprecated in [v0.153.0][] and will be removed in a future release. Use the Dart Sass transpiler instead by setting the `transpiler` option to `dartsass` as shown in the examples below. Sass has two forms of syntax: [SCSS][] and [indented][]. Hugo supports both. @@ -23,44 +23,215 @@ Sass has two forms of syntax: [SCSS][] and [indented][]. Hugo supports both. enableSourceMap : (`bool`) Whether to generate a source map. Default is `false`. + ```go-html-template + {{ $opts := dict + "transpiler" "dartsass" + "enableSourceMap" true + }} + {{ $r := resources.Get "sass/main.scss" | css.Sass $opts }} + ``` + includePaths : (`slice`) A slice of paths, relative to the project root, that the transpiler will use when resolving `@use` and `@import` statements. + ```go-html-template + {{ $opts := dict + "transpiler" "dartsass" + "includePaths" (slice "node_modules/bootstrap/scss") + }} + {{ $r := resources.Get "sass/main.scss" | css.Sass $opts }} + ``` + outputStyle : (`string`) The output style of the resulting CSS. With LibSass, one of `nested` (default), `expanded`, `compact`, or `compressed`. With Dart Sass, either `expanded` (default) or `compressed`. + ```go-html-template + {{ $opts := dict + "transpiler" "dartsass" + "outputStyle" "compressed" + }} + {{ $r := resources.Get "sass/main.scss" | css.Sass $opts }} + ``` + precision : (`int`) The precision of floating point math. Applicable to LibSass. Default is `8`. + ```go-html-template + {{ $opts := dict + "transpiler" "dartsass" + "precision" 10 + }} + {{ $r := resources.Get "sass/main.scss" | css.Sass $opts }} + ``` + silenceDeprecations : {{< new-in 0.139.0 />}} -: (`slice`) A slice of deprecation IDs to silence. IDs are enclosed in brackets within Dart Sass warning messages (e.g., `import` in `WARN Dart Sass: DEPRECATED [import]`). Applicable to Dart Sass. Default is `false`. +: (`slice`) A slice of deprecation IDs to silence. IDs are enclosed in brackets within Dart Sass warning messages (e.g., `import` in `WARN Dart Sass: DEPRECATED [import]`). Applicable to Dart Sass. + + ```go-html-template + {{ $opts := dict + "transpiler" "dartsass" + "silenceDeprecations" (slice "import") + }} + {{ $r := resources.Get "sass/main.scss" | css.Sass $opts }} + ``` silenceDependencyDeprecations : {{< new-in 0.146.0 />}} -: (`bool`) Whether to silence deprecation warnings from dependencies, where a dependency is considered any file transitively imported through a load path. This does not apply to `@warn` or `@debug` rules.Default is `false`. +: (`bool`) Whether to silence deprecation warnings from dependencies, where a dependency is considered any file transitively imported through a load path. This does not apply to `@warn` or `@debug` rules. Default is `false`. + + ```go-html-template + {{ $opts := dict + "transpiler" "dartsass" + "silenceDependencyDeprecations" true + }} + {{ $r := resources.Get "sass/main.scss" | css.Sass $opts }} + ``` sourceMapIncludeSources : (`bool`) Whether to embed sources in the generated source map. Applicable to Dart Sass. Default is `false`. + ```go-html-template + {{ $opts := dict + "transpiler" "dartsass" + "enableSourceMap" true "sourceMapIncludeSources" true + }} + {{ $r := resources.Get "sass/main.scss" | css.Sass $opts }} + ``` + targetPath -: (`string`) The publish path for the transformed resource, relative to the[`publishDir`][]. If unset, the target path defaults to the asset's original path with a `.css` extension. +: (`string`) The publish path for the transformed resource, relative to the [`publishDir`][]. If unset, the target path defaults to the asset's original path with a `.css` extension. + + ```go-html-template + {{ $opts := dict + "transpiler" "dartsass" + "targetPath" "css/bundle.css" + }} + {{ $r := resources.Get "sass/main.scss" | css.Sass $opts }} + ``` transpiler : (`string`) The transpiler to use, either `libsass` or `dartsass`. Hugo's extended and extended/deploy editions include the LibSass transpiler. To use the Dart Sass transpiler, see the [installation instructions](#dart-sass). Default is `libsass`. - > [!warning] - > The embedded LibSass transpiler was deprecated in [v0.153.0][] and will be removed in a future release. Use the Dart Sass transpiler instead. + ```go-html-template + {{ $opts := dict "transpiler" "dartsass" }} + {{ $r := resources.Get "sass/main.scss" | css.Sass $opts }} + ``` vars -: (`map`) A map of key-value pairs that will be available in the `hugo:vars` namespace. Useful for [initializing Sass variables from Hugo templates](https://discourse.gohugo.io/t/42053/). +: (`map`) A map of key-value pairs used to generate Sass variables. The `css.Sass` function injects these variables into the stylesheet when it encounters the `hugo:vars` internal identifier within a `@use` or `@import` statement. + + ```go-html-template + {{ $vars := dict + "font-family" "\"Times New Roman\", Times, serif" + "font-size" "24px" + "primary-color" "blue" + }} + {{ $opts := dict + "transpiler" "dartsass" + "vars" $vars + }} + {{ $r := resources.Get "sass/main.scss" | css.Sass $opts }} + ``` + + In the example above, using the identifier in your stylesheet allows you to access the values as Sass variables in the `hugo:vars` namespace: ```scss - // LibSass - @import "hugo:vars"; + @use 'hugo:vars' as v; - // Dart Sass - @use "hugo:vars" as v; + .element { + color: v.$primary-color; + font-family: v.$font-family; + font-size: v.$font-size; + } + ``` + + The above produces output equivalent to: + + ```css + .element { + color: blue; + font-family: "Times New Roman", Times, serif; + font-size: 24px; + } + ``` + + {{< new-in 0.161.0 />}} + + The map may optionally contain nested maps. Each nested map is exposed as a separate `hugo:vars/` namespace, where `` is the key of the nested map (lowercased). Top-level scalar values and nested maps are independent. A top-level `@use 'hugo:vars'` only includes scalar values, while `@use 'hugo:vars/'` only includes the scalars from the named nested map. + + ```go-html-template + {{ $vars := dict + "font-family" "\"Times New Roman\", Times, serif" + "font-size" "24px" + "primary-color" "blue" + "mobile" (dict + "font-size" "12px" + "primary-color" "red" + ) + }} + {{ $opts := dict + "transpiler" "dartsass" + "vars" $vars + }} + {{ $r := resources.Get "sass/main.scss" | css.Sass $opts }} + ``` + + In the stylesheet, reference each nested namespace with a separate `@use` statement. Assign an alias to access the variables from that namespace: + + ```scss + @use 'hugo:vars' as v; + @use 'hugo:vars/mobile' as mobile; + + body { + color: v.$primary-color; + font-family: v.$font-family; + font-size: v.$font-size; + } + + @media (max-width: 650px) { + body { + color: mobile.$primary-color; + font-size: mobile.$font-size; + } + } + ``` + + The above produces output equivalent to: + + ```css + body { + color: blue; + font-family: "Times New Roman", Times, serif; + font-size: 24px; + } + + @media (max-width: 650px) { + body { + color: red; + font-size: 12px; + } + } + ``` + + The `vars` option is useful for setting Sass variables within your project configuration. + + {{< code-toggle file=hugo >}} + [params.theme.style] + font-family = '"Times New Roman", Times, serif' + font-size = '24px' + primary-color = 'blue' + + [params.theme.style.mobile] + font-size = '12px' + primary-color = 'red' + {{< /code-toggle >}} + + ```go-html-template + {{ $opts := dict + "transpiler" "dartsass" + "vars" site.Params.theme.style }} + {{ $r := resources.Get "sass/main.scss" | css.Sass $opts }} ``` When passing a `vars` map to the `css.Sass` function, Hugo detects common typed CSS values such as `24px` or `#FF0000` using regular expression matching. If necessary, you can bypass automatic type inference by using the [`css.Quoted`][] or [`css.Unquoted`][] function to explicitly indicate a value's type. @@ -77,7 +248,7 @@ vars "vars" site.Params.styles "includePaths" (slice "node_modules/bootstrap/scss") }} - {{ with . | toCSS $opts }} + {{ with . | css.Sass $opts }} {{ if hugo.IsDevelopment }} {{ else }} diff --git a/content/en/functions/css/TailwindCSS.md b/content/en/functions/css/TailwindCSS.md index d104ed96a..f912fcf26 100644 --- a/content/en/functions/css/TailwindCSS.md +++ b/content/en/functions/css/TailwindCSS.md @@ -24,15 +24,18 @@ Use the `css.TailwindCSS` function to process your Tailwind CSS files. This func ## Setup Step 1 -: Install the Tailwind CSS CLI v4.0 or later: +: Install Tailwind CSS v4.0 or later: ```sh {copy=true} npm install --save-dev tailwindcss @tailwindcss/cli @tailwindcss/typography ``` - The Tailwind CSS CLI is also available as a [standalone executable]. You must install it outside of your project directory and ensure its path is included in your system's `PATH` environment variable. + + + > [!note] + > As of v0.161.0, Hugo no longer supports the Tailwind [standalone binary]. You must now install the Tailwind CSS CLI via `npm` as shown above. - [standalone executable]: https://github.com/tailwindlabs/tailwindcss/releases/latest + [standalone binary]: https://github.com/tailwindlabs/tailwindcss/releases/latest Step 2 : Add this to your project configuration: @@ -113,3 +116,25 @@ disableInlineImports skipInlineImportsNotFound : (`bool`) Whether to allow the build process to continue despite unresolved import statements, preserving the original import declarations. It is important to note that the inline importer does not process URL-based imports or those with media queries, and these will remain unaltered even when this option is disabled. Default is `false`. + +## Inject CSS variables with `vars` + +The [css.Build](./Build) function has a [vars](./Build#vars) option that can be used to inject CSS variables into your stylesheets. This is particularly useful for dynamically setting values based on your site's configuration or other data. To use this with Tailwind CSS, you can use [css.Build](./Build) as a preprocessor step before passing the result to `css.TailwindCSS`. Here's how you can do it: + +```go-html-template +{{ with resources.Get "css/styles.css" }} + {{ $cssOpts := dict + "vars" (dict "favourite-color" "#7f93c9") + "externals" (slice "tailwindcss") + }} + {{ $tailwindOpts := dict "disableInlineImports" true }} + {{ with . | css.Build $cssOpts | css.TailwindCSS $tailwindOpts }} + + {{ end }} +{{ end }} +``` + +Some notes to the above: + +- Marking `tailwindcss` as an external in the `css.Build` options prevents it from being processed by the build step, allowing it to be correctly handled by the Tailwind CSS CLI in the subsequent step. +- The `disableInlineImports` option is set to `true` for the Tailwind CSS step as imports are handled by the `css.Build`. diff --git a/content/en/functions/css/Unquoted.md b/content/en/functions/css/Unquoted.md index 9800b9de0..5aebb12c0 100644 --- a/content/en/functions/css/Unquoted.md +++ b/content/en/functions/css/Unquoted.md @@ -13,61 +13,39 @@ params: > [!note] -> This function is only applicable to the [`vars`] option passed to the [`css.Sass`] function. +> This function is only applicable to the `vars` option passed to the [`css.Sass`][] function. -When passing a `vars` map to the `css.Sass` function, Hugo detects common typed CSS values such as `24px` or `#FF0000` using regular expression matching. If necessary, you can bypass automatic type inference by using the `css.Unquoted` function to explicitly indicate that the value must not be treated as a quoted string. +When passing a `vars` map to the `css.Sass` function, Hugo detects common typed CSS values such as `24px` or `#FF0000` using regular expression matching. If necessary, you can bypass automatic type inference by using the `css.Unquoted` function to explicitly indicate that the value must be treated as an unquoted string. -For example: +In the example below, we use `css.Unquoted` to ensure the value for the `font-family` property is injected without quotes. -```scss {file="assets/sass/main.scss"} -@use "hugo:vars" as h; - -h1 { - font-size: h.$font-size-h1; -} - -h2 { - font-size: h.$font-size-h2; -} -``` - -```go-html-template {file="layouts/_partials/css.html"} +```go-html-template {{ $vars := dict - "font_size_h1" ("72px * 0.500" | css.Unquoted) - "font_size_h2" ("72px * 0.375" | css.Unquoted) + "font-main" ("sans-serif" | css.Unquoted) }} -{{ with resources.Get "sass/main.scss" }} - {{ $opts := dict - "enableSourceMap" hugo.IsDevelopment - "outputStyle" (cond hugo.IsDevelopment "expanded" "compressed") - "targetPath" "css/main.css" - "transpiler" "dartsass" - "vars" $vars - }} - {{ with . | toCSS $opts }} - {{ if hugo.IsDevelopment }} - - {{ else }} - {{ with . | fingerprint }} - - {{ end }} - {{ end }} - {{ end }} +{{ $opts := dict "vars" $vars "transpiler" "dartsass" }} +{{ with resources.Get "sass/main.scss" | css.Sass $opts }} + {{ end }} ``` -The Sass rules are transpiled to: +Using the `hugo:vars` identifier in your stylesheet: -```css {file="public/css/main.css"} -h1 { - font-size: 36px; -} +```scss +@use "hugo:vars" as h; -h2 { - font-size: 27px; +body { + font-family: h.$font-main; } ``` -[`css.Sass`]: /functions/css/sass/ -[`vars`]: /functions/css/sass/#vars +The resulting CSS contains an unquoted string: + +```css +body { + font-family: sans-serif; +} +``` + +[`css.Sass`]: /functions/css/sass/#vars diff --git a/content/en/functions/hash/FNV32a.md b/content/en/functions/hash/FNV32a.md index b108acff8..fc2d67373 100644 --- a/content/en/functions/hash/FNV32a.md +++ b/content/en/functions/hash/FNV32a.md @@ -8,7 +8,7 @@ params: aliases: [] returnType: int signatures: [hash.FNV32a STRING] -aliases: [/functions/crypto.fnv32a] +aliases: [/functions/crypto/fnv32a/,/functions/crypto.fnv32a] --- ```go-html-template diff --git a/content/en/functions/hugo/Generator.md b/content/en/functions/hugo/Generator.md index b2238e41d..223da5aec 100644 --- a/content/en/functions/hugo/Generator.md +++ b/content/en/functions/hugo/Generator.md @@ -11,5 +11,5 @@ params: --- ```go-html-template -{{ hugo.Generator }} → +{{ hugo.Generator }} → ``` diff --git a/content/en/functions/hugo/Version.md b/content/en/functions/hugo/Version.md index 8778e173e..0aa7e157b 100644 --- a/content/en/functions/hugo/Version.md +++ b/content/en/functions/hugo/Version.md @@ -11,5 +11,5 @@ params: --- ```go-html-template -{{ hugo.Version }} → 0.158.0 +{{ hugo.Version }} → 0.161.1 ``` diff --git a/content/en/functions/js/Batch.md b/content/en/functions/js/Batch.md index 9e6a33c88..b4b85cd51 100644 --- a/content/en/functions/js/Batch.md +++ b/content/en/functions/js/Batch.md @@ -10,6 +10,9 @@ params: signatures: ['js.Batch [ID]'] --- +> [!note] +> The `js.Batch` function is backed by the [`evanw/esbuild`][] package, providing a mature, high-performance foundation for bundling, transformation, and minification. + > [!note] > For a runnable example of this feature, see [this test and demo repo](https://github.com/bep/hugojsbatchdemo/). @@ -287,22 +290,23 @@ import './lib1.js'; console.log('entrypoints-workaround.js'); ``` +[ESBuild]: https://github.com/evanw/esbuild +[JavaScript import]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import +[OptionsSetter]: #optionssetter +[SetOptions]: #optionssetter [`Resource`]: /methods/resource/ [`Resources.Mount`]: /methods/page/resources/#mount [`Resources`]: /methods/page/resources/ +[`evanw/esbuild`]: https://github.com/evanw/esbuild [`templates.Defer`]: /functions/templates/defer/ [build options]: #build-options [code splitting]: https://esbuild.github.io/api/#splitting [config]: #config -[ESBuild]: https://github.com/evanw/esbuild [group]: #group [instance]: #instance -[JavaScript import]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import [js.Batch Demo Repo]: https://github.com/bep/hugojsbatchdemo/ -[OptionsSetter]: #optionssetter [params options]: #params-options [runner]: #runner -[script]: #script [script options]: #script-options -[SetOptions]: #optionssetter +[script]: #script [with]: /functions/go-template/with/ diff --git a/content/en/functions/js/Build.md b/content/en/functions/js/Build.md index 87d379e46..60960a15d 100644 --- a/content/en/functions/js/Build.md +++ b/content/en/functions/js/Build.md @@ -10,7 +10,10 @@ params: signatures: ['js.Build [OPTIONS] RESOURCE'] --- -The `js.Build` function uses the [evanw/esbuild] package to: +> [!note] +> The `js.Build` function is backed by the [`evanw/esbuild`][] package, providing a mature, high-performance foundation for bundling, transformation, and minification. + +Use the `js.Build` function to: - Bundle - Transpile (TypeScript and JSX) @@ -74,7 +77,7 @@ For other files (e.g. `JSON`, `CSS`) you need to use the relative path including import * as data from 'my/module/data.json'; ``` -Any imports in a file outside `assets` or that does not resolve to a component inside `assets` will be resolved by [ESBuild](https://esbuild.github.io/) with the **project directory** as the resolve directory (used as the starting point when looking for `node_modules` etc.). Also see [hugo mod npm pack](/commands/hugo_mod_npm_pack/). If you have any imported npm dependencies in your project, you need to make sure to run `npm install` before you run `hugo build`. +Any imports in a file outside `assets` or that does not resolve to a component inside `assets` will be resolved by [esbuild](https://esbuild.github.io/) with the **project directory** as the resolve directory (used as the starting point when looking for `node_modules` etc.). Also see [hugo mod npm pack](/commands/hugo_mod_npm_pack/). If you have any imported npm dependencies in your project, you need to make sure to run `npm install` before you run `hugo build`. Also note the new `params` option that can be passed from template to your JS files, e.g.: @@ -118,4 +121,4 @@ Or with options: ``` -[evanw/esbuild]: https://github.com/evanw/esbuild +[`evanw/esbuild`]: https://github.com/evanw/esbuild diff --git a/content/en/functions/lang/Translate.md b/content/en/functions/lang/Translate.md index 442090f25..f8bdc069b 100644 --- a/content/en/functions/lang/Translate.md +++ b/content/en/functions/lang/Translate.md @@ -11,11 +11,9 @@ params: aliases: [/functions/i18n] --- -The `lang.Translate` function returns the value associated with given key as defined in the translation table for the current language. +The `lang.Translate` function returns the value associated with the given key by searching the current language's [translation tables](#translation-tables), then those for the [`defaultContentLanguage`][]. -If the key is not found in the translation table for the current language, the `lang.Translate` function falls back to the translation table for the [`defaultContentLanguage`][]. - -If the key is not found in the translation table for the `defaultContentLanguage`, the `lang.Translate` function returns an empty string. +If not found, the function returns an empty string. > [!note] > To list missing and fallback translations, set [`printI18nWarnings`][] to `true` in your project configuration, or use the `--printI18nWarnings` flag when building your project. @@ -24,14 +22,21 @@ If the key is not found in the translation table for the `defaultContentLanguage ## Translation tables -Create translation tables in the `i18n` directory, naming each file according to [RFC 5646][]. Translation tables may be JSON, TOML, or YAML. For example: +{{% glossary-term "translation table" %}} + +For example: ```text i18n/en.toml i18n/pt-BR.toml ``` -The base name must match the [`locale`][] or [language key][] as defined in your project configuration. Hugo selects the translation table based on the `locale`, falling back to the language key if a matching translation table does not exist. +Hugo searches for a matching translation table using the following base names, in order: + +1. The [`locale`][] of the current language +1. The [key][] of the current language +1. The locale of the [`defaultContentLanguage`][] +1. The key of the [`defaultContentLanguage`][] Artificial languages with private use subtags as defined in [RFC 5646 § 2.2.7][] are also supported. You may omit the `art-x-` prefix for brevity. For example: @@ -177,7 +182,7 @@ Template code: ## Reserved keys -Hugo uses the [go-i18n][] package to look up values in translation tables. This package reserves the following keys for internal use: +Hugo uses the [`nicksnyder/go-i18n`][] package to look up values in translation tables. This package reserves the following keys for internal use: id : (`string`) Uniquely identifies the message. @@ -236,12 +241,11 @@ Then in your templates: {{ T "_other" }} → otro ``` +[CLDR]: https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html +[RFC 5646 § 2.2.7]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.2.7 [`defaultContentLanguage`]: /configuration/all/#defaultcontentlanguage [`enableMissingTranslationPlaceholders`]: /configuration/all/#enablemissingtranslationplaceholders -[`locale`]: /configuration/languages/#locale +[`locale`]: /configuration/all/#locale +[`nicksnyder/go-i18n`]: https://github.com/nicksnyder/go-i18n [`printI18nWarnings`]: /configuration/all/#printi18nwarnings -[CLDR]: https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html -[go-i18n]: https://github.com/nicksnyder/go-i18n -[language key]: /configuration/languages/#language-keys -[RFC 5646 § 2.2.7]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.2.7 -[RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646 +[key]: /configuration/languages/#language-keys diff --git a/content/en/functions/math/Acos.md b/content/en/functions/math/Acos.md index 32537e2dd..cac9d82f6 100644 --- a/content/en/functions/math/Acos.md +++ b/content/en/functions/math/Acos.md @@ -10,8 +10,6 @@ params: signatures: [math.Acos VALUE] --- -{{< new-in 0.130.0 />}} - ```go-html-template {{ math.Acos 1 }} → 0 ``` diff --git a/content/en/functions/math/Asin.md b/content/en/functions/math/Asin.md index 76114a72e..4b082fdb8 100644 --- a/content/en/functions/math/Asin.md +++ b/content/en/functions/math/Asin.md @@ -10,8 +10,6 @@ params: signatures: [math.Asin VALUE] --- -{{< new-in 0.130.0 />}} - ```go-html-template {{ math.Asin 1 }} → 1.5707963267948966 ``` diff --git a/content/en/functions/math/Atan.md b/content/en/functions/math/Atan.md index 5c8268b47..4bcde0929 100644 --- a/content/en/functions/math/Atan.md +++ b/content/en/functions/math/Atan.md @@ -10,8 +10,6 @@ params: signatures: [math.Atan VALUE] --- -{{< new-in 0.130.0 />}} - ```go-html-template {{ math.Atan 1 }} → 0.7853981633974483 ``` diff --git a/content/en/functions/math/Atan2.md b/content/en/functions/math/Atan2.md index 942fffdf8..01bb0aefa 100644 --- a/content/en/functions/math/Atan2.md +++ b/content/en/functions/math/Atan2.md @@ -10,8 +10,6 @@ params: signatures: [math.Atan2 VALUE VALUE] --- -{{< new-in 0.130.0 />}} - ```go-html-template {{ math.Atan2 1 2 }} → 0.4636476090008061 ``` diff --git a/content/en/functions/math/Cos.md b/content/en/functions/math/Cos.md index 249a064bb..08d8abe52 100644 --- a/content/en/functions/math/Cos.md +++ b/content/en/functions/math/Cos.md @@ -10,8 +10,6 @@ params: signatures: [math.Cos VALUE] --- -{{< new-in 0.130.0 />}} - ```go-html-template {{ math.Cos 1 }} → 0.5403023058681398 ``` diff --git a/content/en/functions/math/Pi.md b/content/en/functions/math/Pi.md index 0bc74bf03..45010d5ed 100644 --- a/content/en/functions/math/Pi.md +++ b/content/en/functions/math/Pi.md @@ -10,8 +10,6 @@ params: signatures: [math.Pi] --- -{{< new-in 0.130.0 />}} - ```go-html-template {{ math.Pi }} → 3.141592653589793 ``` diff --git a/content/en/functions/math/Sin.md b/content/en/functions/math/Sin.md index b5ab86bb8..2a0ffcdfc 100644 --- a/content/en/functions/math/Sin.md +++ b/content/en/functions/math/Sin.md @@ -10,8 +10,6 @@ params: signatures: [math.Sin VALUE] --- -{{< new-in 0.130.0 />}} - ```go-html-template {{ math.Sin 1 }} → 0.8414709848078965 ``` diff --git a/content/en/functions/math/Tan.md b/content/en/functions/math/Tan.md index c4f861c05..b05b4b848 100644 --- a/content/en/functions/math/Tan.md +++ b/content/en/functions/math/Tan.md @@ -10,8 +10,6 @@ params: signatures: [math.Tan VALUE] --- -{{< new-in 0.130.0 />}} - ```go-html-template {{ math.Tan 1 }} → 1.557407724654902 ``` diff --git a/content/en/functions/math/ToDegrees.md b/content/en/functions/math/ToDegrees.md index f01cd4728..6c3ed5981 100644 --- a/content/en/functions/math/ToDegrees.md +++ b/content/en/functions/math/ToDegrees.md @@ -10,8 +10,6 @@ params: signatures: [math.ToDegrees VALUE] --- -{{< new-in 0.130.0 />}} - ```go-html-template {{ math.ToDegrees 1.5707963267948966 }} → 90 ``` diff --git a/content/en/functions/math/ToRadians.md b/content/en/functions/math/ToRadians.md index b5acbb65b..b4459773a 100644 --- a/content/en/functions/math/ToRadians.md +++ b/content/en/functions/math/ToRadians.md @@ -10,8 +10,6 @@ params: signatures: [math.ToRadians VALUE] --- -{{< new-in 0.130.0 />}} - ```go-html-template {{ math.ToRadians 90 }} → 1.5707963267948966 ``` diff --git a/content/en/functions/resources/FromString.md b/content/en/functions/resources/FromString.md index 0ca741936..160e85d81 100644 --- a/content/en/functions/resources/FromString.md +++ b/content/en/functions/resources/FromString.md @@ -22,9 +22,9 @@ Let's say you need to publish a file named "site.json" in the root of your `publ ```json { - "build_date": "2026-03-16T13:56:25-07:00", - "hugo_version": "0.158.0", - "last_modified": "2026-02-16T12:04:52-07:00" + "build_date": "2026-04-04T10:46:21-07:00", + "hugo_version": "0.161.1", + "last_modified": "2026-04-04T10:46:26-07:00" } ``` diff --git a/content/en/functions/transform/CanHighlight.md b/content/en/functions/transform/CanHighlight.md index 5e3b04a81..8fa640a4e 100644 --- a/content/en/functions/transform/CanHighlight.md +++ b/content/en/functions/transform/CanHighlight.md @@ -1,6 +1,6 @@ --- title: transform.CanHighlight -description: Reports whether the given code language is supported by the Chroma highlighter. +description: Reports whether the given language is supported for syntax highlighting. categories: [] keywords: [highlight] params: diff --git a/content/en/functions/transform/HTMLUnescape.md b/content/en/functions/transform/HTMLUnescape.md index ab9be942b..828b80df3 100644 --- a/content/en/functions/transform/HTMLUnescape.md +++ b/content/en/functions/transform/HTMLUnescape.md @@ -25,5 +25,5 @@ In most contexts Go's [`html/template`][] package will escape special characters ``` [`safehtml`]: /functions/safe/html/ -[html entities]: https://developer.mozilla.org/en-us/docs/glossary/entity +[html entities]: https://developer.mozilla.org/en-US/docs/Glossary/Entity [`html/template`]: https://pkg.go.dev/html/template diff --git a/content/en/functions/transform/Highlight.md b/content/en/functions/transform/Highlight.md index 1e4e235b4..72f154ea4 100644 --- a/content/en/functions/transform/Highlight.md +++ b/content/en/functions/transform/Highlight.md @@ -11,26 +11,20 @@ params: aliases: [/functions/highlight] --- -The `highlight` function uses the [Chroma] syntax highlighter, supporting over 200 languages with more than 40 [highlighting styles]. - -[chroma]: https://github.com/alecthomas/chroma -[highlighting styles]: /quick-reference/syntax-highlighting-styles/ +The `transform.Highlight` function uses the [`alecthomas/chroma`][] package to generate syntax-highlighted HTML from the provided code, [language][], and [options][]. ## Arguments -The `transform.Highlight` shortcode takes three arguments. +The `transform.Highlight` function takes three arguments. CODE : (`string`) The code to highlight. LANG -: (`string`) The language of the code to highlight. Choose from one of the [supported languages]. This value is case-insensitive. +: (`string`) The [language][] of the code to highlight. This value is case-insensitive. OPTIONS -: (`map or string`) A map or comma-separated key-value pairs wrapped in quotation marks. Set default values for each option in your [project configuration]. The key names are case-insensitive. - -[project configuration]: /configuration/markup#highlight -[supported languages]: /content-management/syntax-highlighting#languages +: (`map or string`) A map or comma-separated key-value pairs wrapped in quotation marks. You can set default values for each option in your [project configuration][]. The key names are case-insensitive. ## Examples @@ -51,3 +45,8 @@ OPTIONS ## Options {{% include "_common/syntax-highlighting-options.md" %}} + +[`alecthomas/chroma`]: https://github.com/alecthomas/chroma +[language]: /content-management/syntax-highlighting#languages +[options]: #options-1 +[project configuration]: /configuration/markup#highlight diff --git a/content/en/functions/transform/PortableText.md b/content/en/functions/transform/PortableText.md index d100f5eb2..a100cd3c2 100644 --- a/content/en/functions/transform/PortableText.md +++ b/content/en/functions/transform/PortableText.md @@ -11,16 +11,16 @@ params: {{< new-in "0.145.0" />}} -[Portable Text](https://www.portabletext.org/) is a JSON structure that represent rich text content in the [Sanity](https://www.sanity.io/) CMS. In Hugo, this function is typically used in a [Content Adapter](https://gohugo.io/content-management/content-adapters/) that creates pages from Sanity data. +[Portable Text][] is a JSON structure that represents rich text content in the [Sanity][] CMS. In Hugo, this function is typically used in a [content adapter][] that creates pages from Sanity data. ## Types supported - `block` and `span` -- `image`. Note that the image handling is currently very simple; we link to the `asset.url` using `asset.altText` as the image alt text and `asset.title` as the title. For more fine grained control you may want to process the images in a [image render hook](/render-hooks/images/). -- `code` (see the [code-input](https://www.sanity.io/plugins/code-input) plugin). Code will be rendered as [fenced code blocks](/contribute/documentation/#fenced-code-blocks) with any file name provided passed on as a markdown attribute. +- `image`. Note that the image handling is currently very simple; we link to the `asset.url` using `asset.altText` as the image alt text and `asset.title` as the title. For more fine-grained control you may want to process the images in an [image render hook][]. +- `code` (see the [code-input][] plugin). Code will be rendered as fenced code blocks with any file name provided passed as a Markdown attribute. > [!note] -> Since the Portable Text gets converted to Markdown before it gets passed to Hugo, rendering of links, headings, images and code blocks can be controlled with [Render Hooks](https://gohugo.io/render-hooks/). +> Since the Portable Text gets converted to Markdown before it gets passed to Hugo, rendering of links, headings, images and code blocks can be controlled with [render hooks][]. ## Example @@ -34,10 +34,9 @@ params: {{/* See https://www.sanity.io/docs/api-cdn */}} {{ $api = "apicdn" }} {{ end }} -{{ $url := printf "https://%s.%s.sanity.io/v2021-06-07/data/query/production" $projectID $api }} +{{ $url := printf "https://%s.%s.sanity.io/v2021-06-07/data/query/production" $projectID $api }} -{{/* prettier-ignore-start */ -}} -{{ $q := `*[_type == 'post']{ +{{ $q := `*[_type == 'post']{ title, publishedAt, summary, slug, body[]{ ..., _type == "image" => { @@ -61,7 +60,6 @@ params: }, }` }} -{{/* prettier-ignore-end */ -}} {{ $body := dict "query" $q | jsonify }} {{ $opts := dict "method" "post" "body" $body }} {{ $r := resources.GetRemote $url $opts }} @@ -94,7 +92,7 @@ params: ### Sanity setup -Below outlines a suitable Sanity studio setup for the above example. +The following outlines a suitable Sanity studio setup for the above example. ```ts {file="sanity.config.ts" copy=true} import {defineConfig} from 'sanity' @@ -192,7 +190,7 @@ export const schemaTypes = [postType] ## Server setup -Unfortunately, Sanity's API does not support [RFC 7234](https://tools.ietf.org/html/rfc7234) and their output changes even if the data has not. A recommended setup is therefore to use their cached `apicdn` endpoint (see above) and then set up a reasonable polling and file cache strategy in your Hugo configuration, e.g: +Unfortunately, Sanity's API does not support [RFC 7234][] and their output changes even if the data has not. A recommended setup is therefore to use their cached `apicdn` endpoint (see above) and then set up a reasonable polling and file cache strategy in your Hugo configuration, e.g: {{< code-toggle file=hugo >}} @@ -210,6 +208,15 @@ Unfortunately, Sanity's API does not support [RFC 7234](https://tools.ietf.org/h {{< /code-toggle >}} -The polling above will be used when running the server/watch mode and rebuild when you push new content in Sanity. +The polling above will be used when running the server/watch mode and rebuilds when you push new content to Sanity. -See [Caching in resources.GetRemote](/functions/resources/getremote/#caching) for more fine grained control. +See [Caching in resources.GetRemote][] for more fine-grained control. + +[Caching in resources.GetRemote]: /functions/resources/getremote/#caching +[Portable Text]: https://www.portabletext.org/ +[RFC 7234]: https://tools.ietf.org/html/rfc7234 +[Sanity]: https://www.sanity.io/ +[code-input]: https://www.sanity.io/plugins/code-input +[content adapter]: /content-management/content-adapters/ +[image render hook]: /render-hooks/images/ +[render hooks]: /render-hooks/ diff --git a/content/en/functions/transform/ToMath.md b/content/en/functions/transform/ToMath.md index 27b2f0d70..95837ffaa 100644 --- a/content/en/functions/transform/ToMath.md +++ b/content/en/functions/transform/ToMath.md @@ -13,14 +13,14 @@ aliases: [/functions/tomath] {{< new-in 0.132.0 />}} -Hugo uses an embedded instance of the [KaTeX] display engine to render mathematical markup to HTML. You do not need to install the KaTeX display engine. +Hugo uses an embedded instance of the [KaTeX][] display engine to render mathematical markup to HTML. You do not need to install the KaTeX display engine. ```go-html-template {{ transform.ToMath "c = \\pm\\sqrt{a^2 + b^2}" }} ``` > [!note] -> By default, Hugo renders mathematical markup to [MathML], and does not require any CSS to display the result. +> By default, Hugo renders mathematical markup to [MathML][], and does not require any CSS to display the result. > > To optimize rendering quality and accessibility, use the `htmlAndMathml` output option as described below. This approach requires an external stylesheet. @@ -31,13 +31,13 @@ Hugo uses an embedded instance of the [KaTeX] display engine to render mathemati ## Options -Pass a map of options as the second argument to the `transform.ToMath` function. The options below are a subset of the KaTeX [rendering options]. +Pass a map of options as the second argument to the `transform.ToMath` function. The options below are a subset of the KaTeX [rendering options][]. displayMode : (`bool`) Whether to render in display mode instead of inline mode. Default is `false`. errorColor -: (`string`) The color of the error messages expressed as an RGB [hexadecimal color]. Default is `#cc0000`. +: (`string`) The color of the error messages expressed as an RGB [hexadecimal color][]. Default is `#cc0000`. fleqn : (`bool`) Whether to render flush left with a 2em left margin. Default is `false`. @@ -179,7 +179,7 @@ Step 4 {{< new-in 0.144.0 />}} -You can also use the `transform.ToMath` function to render chemical equations, leveraging the `\ce` and `\pu` functions from the [mhchem] package. +You can also use the `transform.ToMath` function to render chemical equations, leveraging the `\ce` and `\pu` functions from the [`mhchem`][] package. ```text $$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$ @@ -187,10 +187,10 @@ $$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$ $$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$ -[`Content`]: /methods/page/content/ -[`Summary`]: /methods/page/summary/ -[hexadecimal color]: https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color [KaTeX]: https://katex.org/ [MathML]: https://developer.mozilla.org/en-US/docs/Web/MathML -[mhchem]: https://mhchem.github.io/MathJax-mhchem/ +[`Content`]: /methods/page/content/ +[`Summary`]: /methods/page/summary/ +[`mhchem`]: https://mhchem.github.io/MathJax-mhchem/ +[hexadecimal color]: https://developer.mozilla.org/en-US/docs/Web/CSS/hex-color [rendering options]: https://katex.org/docs/options.html diff --git a/content/en/functions/transform/Unmarshal.md b/content/en/functions/transform/Unmarshal.md index 7e9726749..c92f6a054 100644 --- a/content/en/functions/transform/Unmarshal.md +++ b/content/en/functions/transform/Unmarshal.md @@ -40,7 +40,7 @@ title: Les Misérables author: Victor Hugo `}} -{{ $book := unmarshal $string }} +{{ $book := transform.Unmarshal $string }} {{ $book.title }} → Les Misérables {{ $book.author }} → Victor Hugo ``` diff --git a/content/en/functions/transform/XMLEscape.md b/content/en/functions/transform/XMLEscape.md index d9a9cdf93..a69803e01 100644 --- a/content/en/functions/transform/XMLEscape.md +++ b/content/en/functions/transform/XMLEscape.md @@ -34,5 +34,5 @@ When using `transform.XMLEscape` in a template rendered by Go's [`html/template` ``` [disallowed characters]: https://www.w3.org/TR/xml/#charsets -[html entities]: https://developer.mozilla.org/en-us/docs/glossary/entity +[html entities]: https://developer.mozilla.org/en-US/docs/Glossary/Entity [`html/template`]: https://pkg.go.dev/html/template diff --git a/content/en/getting-started/quick-start.md b/content/en/getting-started/quick-start.md index f88229196..9ed328c18 100644 --- a/content/en/getting-started/quick-start.md +++ b/content/en/getting-started/quick-start.md @@ -4,7 +4,7 @@ description: Create your first Hugo project. categories: [] keywords: [] params: - minVersion: v0.156.0 + minVersion: v0.158.0 weight: 10 aliases: [/quickstart/,/overview/quickstart/] --- @@ -20,7 +20,7 @@ In this tutorial you will: Before you begin this tutorial you must: -1. [Install Hugo] (extended or extended/deploy edition, {{% param "minVersion" %}} or later) +1. [Install Hugo] (any edition, {{% param "minVersion" %}} or later) 1. [Install Git] You must also be comfortable working from the command line. @@ -50,7 +50,7 @@ Run these commands to create a Hugo project with the [Ananke][] theme. The next hugo new project quickstart cd quickstart git init -git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke +git submodule add https://github.com/gohugo-ananke/ananke themes/ananke echo "theme = 'ananke'" >> hugo.toml hugo server ``` @@ -80,7 +80,7 @@ git init Clone the [Ananke][] theme into the `themes` directory, adding it to your project as a [Git submodule][]. ```text -git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke +git submodule add https://github.com/gohugo-ananke/ananke themes/ananke ``` Append a line to your project configuration file, indicating the current theme. @@ -170,9 +170,7 @@ hugo server -D ``` > [!note] -> Most theme authors provide configuration guidelines and options. Make sure to visit your theme's repository or documentation site for details. -> -> [The New Dynamic][], authors of the Ananke theme, provide [documentation][] for configuration and usage. They also provide a [demonstration site][]. +> Now that you have the Ananke theme installed, check out their [documentation][] and [demonstration site][] to learn how to configure and customize it. ## Publish the project @@ -196,8 +194,8 @@ For other resources to help you learn Hugo, including books and video tutorials, [Ananke]: https://github.com/theNewDynamic/gohugo-theme-ananke [are different applications]: https://learn.microsoft.com/en-us/powershell/scripting/whats-new/differences-from-windows-powershell?view=powershell-7.3 -[demonstration site]: https://gohugo-ananke-theme-demo.netlify.app/ -[documentation]: https://github.com/theNewDynamic/gohugo-theme-ananke#readme +[demonstration site]: https://ananke-theme.netlify.app/ +[documentation]: https://ananke-documentation.netlify.app/ [draft, future, and expired content]: /getting-started/usage/#draft-future-and-expired-content [external learning resources]: /getting-started/external-learning-resources/ [forum]: https://discourse.gohugo.io/ @@ -213,4 +211,3 @@ For other resources to help you learn Hugo, including books and video tutorials, [project skeleton]: /getting-started/directory-structure/#project-skeleton [requesting help]: https://discourse.gohugo.io/t/requesting-help/9132 [specification]: https://spec.commonmark.org/ -[The New Dynamic]: https://www.thenewdynamic.com/ diff --git a/content/en/getting-started/usage.md b/content/en/getting-started/usage.md index abf471dc0..42d4e3f98 100644 --- a/content/en/getting-started/usage.md +++ b/content/en/getting-started/usage.md @@ -15,12 +15,6 @@ After [installing] Hugo, test your installation by running: hugo version ``` -You should see something like: - -```text -hugo v0.158.0-f41be7959a44108641f1e081adf5c4be7fc1bb63+extended linux/amd64 BuildDate=2026-03-16T17:42:04Z VendorInfo=gohugoio -``` - ## Display available commands To see a list of the available commands and flags: diff --git a/content/en/host-and-deploy/deploy-with-hugo-deploy.md b/content/en/host-and-deploy/deploy-with-hugo-deploy.md index 6dae734c4..b894fef94 100644 --- a/content/en/host-and-deploy/deploy-with-hugo-deploy.md +++ b/content/en/host-and-deploy/deploy-with-hugo-deploy.md @@ -9,7 +9,7 @@ aliases: [/hosting-and-deployment/hugo-deploy/] Use the `hugo deploy` command to deploy your site Amazon S3, Azure Blob Storage, or Google Cloud Storage. > [!note] -> This feature requires the Hugo extended/deploy edition. See the [installation] section for details. +> This feature requires the deploy or extended/deploy edition. See the [installation] section for details. ## Assumptions diff --git a/content/en/host-and-deploy/host-on-aws-amplify/index.md b/content/en/host-and-deploy/host-on-aws-amplify/index.md index f7f8869a1..15446f2e9 100644 --- a/content/en/host-and-deploy/host-on-aws-amplify/index.md +++ b/content/en/host-and-deploy/host-on-aws-amplify/index.md @@ -40,9 +40,9 @@ Step 2 env: variables: # Application versions - DART_SASS_VERSION: 1.98.0 - GO_VERSION: 1.26.1 - HUGO_VERSION: 0.158.0 + DART_SASS_VERSION: 1.99.0 + GO_VERSION: 1.26.2 + HUGO_VERSION: 0.161.1 # Time zone TZ: Europe/Oslo # Cache diff --git a/content/en/host-and-deploy/host-on-cloudflare/cloudflare-01.png b/content/en/host-and-deploy/host-on-cloudflare/cloudflare-01.png index 9c7a4380dc8204aa3e57e7026b5fd71c24623f16..5449f51993feb843749973602f4e36f7be66ce73 100644 GIT binary patch literal 49820 zcmce;cRbf^|2M8pkxE0#sDvbnWMm{7NMw_dWRtyDDQSp|k5NV{dzB(&lw=p#AtPj# zm6i2-9_RJ_{_gvF+~52D-v9i5=i_l+U8nGQzmNBEyk5`sdf!vJc#du((?%*PDmvNo zGRjm`t1R*F2=#h=WrREN8~#{pe_B?R8vl4uU%N|1#YQD7BcIi;%l;-w9njZEf^r^%6bj5jaw7li3fCq&MQQj+7ZR-@Sc=+UMy$nUbArrRuiqH`wIEW=b9Oa-Gzc(@)J;+qv7Xe90N&E0%?OG;R5tfH3IZoYzXpQxzq8_yKx z?2`?S(%H0W)7R$avbwr)>#cn6@9i1aP4hYIyj`d0Ih#PSSFdN-alufVH$2`C?ZOAY zru=p!7vg~+n;V_z ziPY582Qe`$^YioBVd;0@#sv%B2nYyhn~)1G&1u*el(ym^q42=Ub|brNq1S6+bD!}< ztXEZ4)zPCzO$U|mzmLlAr>fX0Pngl)QvFm{_p;e#Re-Kv|5m!$o=F~UFPSHEmxn1k z@HCcHm6UGWyeU-}o8-QIqwnf9Yu0Ssv?=w7ijva%O<3OT&r`Il$mjl4*%+$)k+sX@ zp0e_|n!j72CAo1$x%kP*{0j=_&iQ3!Wtq2FXcq*tZ}paEA4y?f+_x=ecCNBQz(e}52 zb8{|KUd!_)ogP!4*9V*zUuj8P>}vVQQn=Z3Q>!rZ9mbN(b~ZMq`{r%$8H-{zdpURa zXZFbLn5E8hlL}=`TiSLyghf1Om|SyUTvF0q3D3Xd^8>M|JjI?1C#3JtN}W5m!P|Rf z{rwE5Bie70CI?KSoy2K>YG?bf+)<+bGf16&Q8oH@?7^$Fm$wYxWS9Lj`1Mv}qbgNe zT3YLC6Z-0KK9kws-|6=1PJ4KI-n)CZyY-df+}zx82Vup)%>_R;J`~u;!@~5|N27*G zG^y<#3s!%P@97USzuI5DejO67rKvgokzR7k_U*UB!ghLjdC@T%G_lL>7ZKUb%*_0d z(LR&!FGqLF#*Nk`v*A~A56_95YGqy7v-9iQ8{d`;TsFL1?e#ESC-5C-&F^)3VKyhX z78Orj>)nY>G%Twoy;0%G38R58(Q^w6&oeUvGc&E%$fy^7f9EVk{XF~zb>jtSy^a*vvNd5?&t`oFh$2bT79POFU7XSJ(sliu$$&iMF* zRn@oGCY7H*r|0-5Cm(v}^y_MW6-7oyM(op|`Rw?|#~U|pWI7t0cz#2N?uV4MB_V7B zn-?AA9W_g{cF; zOI^){5}pix(!4-9~Bh*)YTP>#cfEsbbvDL>+8FA!-j@z3yrh>j9*V( zQcu71{46cA==SbNmyDT)D@`dL!hP!)gs1hJ9Cv)&zvI3tUuI_7_Kg;YRRT*N-DPXM z^~$h(vTTp_7DmSNdU`Ph1-ZEq_!SeA)qDcZzdP3Zzce?gjfq!Dyy)<|BeKhTr7-TJ z>!ic`@9B%|KW0zv>rR!_?<#3~g56SCME@-`+-lzBZF6Im2ko94%DKUt_*#83f2|Dv zZXB)*FnB;VW=PP1bI&p}6|Y=jJLxof3iYE!-#eO|n3;BKAqN+=`}gj}<>oTpcz!PM z$B!TN@3$r=ru|IJRhREtd*=;zv1s3v=3P(I*5y0L{3rZ+HgDOvp{wh*x05e(e!qtI zT%J_*{cAcKgE+f$*6>i@3_C})FnL%ph8;C4jzz75UBIsIJd@D%3$YTO)HF0^-AO3} zLqoC+2?}4En&NS*bj$&55+_x?)XwW_W&3Dc=svqwXTDmb`LL`_##+%l3jKqcm7U{< zi_@&7Hq1>>>)0;X)9%ULwrN%V%cr|8jNcmFb5t^ak-wPpOwD6nYVUmKF_xV>cTOv} z^nCQItgbe!dny&ER?F(Wcr#L~$=RXNq+mKe!KE4%JSJ`>^g#XI*x+v3Wc1yHXI#OO2W##2ln`N)Xa>Og&3sax=e)f1L-wofduNlT( z%Y5(M{~zD-puXN@VE%D@e0(;CrNaGP?>}j?kESHK>yWZ2X@(|cPxCS%b^Y-pdcLP` zranC1s%D#g>6uca#Pfpltv=(No}QjKHjiH1DXv!wX2<`nYsp;Z&%N&wyKcC2)6snQ z-EM7k-X5_B&$?|h%nwgiQ^z&Vh2-R%5ET{Wej6qfT2LV7;OJ=a%V1=1aJ>7&twctx zrp9|3aZ24+;;tBX{YYf|_Im7=#)DUHmF|)a;(I#o{rmSfN=i!PLWU(24jw$Xedo@} zl1+S#bLSRq3g|?RD{E_~I2CAXYcJ|&^6R8Gja-r#6V(o%2s7D@FXFJACMVLs)bzZ% z`c525#loeA9vUKX_Z zh`)AQdqOsTZD>*-X}y^%sJn$bh@B>0`4H#(U3xC7P&MZxo2S34o0%nd$gk_`OT2#h zF_SfL31^19Wk5rJ6{|LTN7E0z<*9bR;{vMn8Ii#=JLS&iQ|g{)ueP%KCCYq~Y{-ql z?E7T5;SSN&l+@Ml0QSr>1n>B`b_b2RhQ==6(}fc?1N-#wxy9UJl9}8AL1AHGizy?o z7*Ko7m4Y<6y}Y(@FJECjII%>zJNs=WxBTM2w#dZdW=0wxHZha`3Tnwjn?xNtawHy| z>c@|(_a8inO)fvV5#OEq29T?vL0VCf9?#vuVOXL^BRXSSp7)9bE|MUlqV+1@PdcoX z+Oqs5R1RM|7#bE2jh0p<<2wR4O0Y-OjOkK% z%~IJ%i+3t>H$AD;0AzJ>z?Pz1Kb^*HW})_Wa%|jE8`otbYvr0-c8r|Ho}m;++IRV@ z_uJw|#F&Tsddw9??_UGX9d~F7^Uh|`+gJ7q0GH{k!u;DG15D*F&k*$MBHCE_POx)` z3-DM>+`MZ@Q_ZR6#S2|k)zTET)bWXlIJ8yTy~2-PzI=IS^GKw?)l%xPBbS@mtTJ`- zw(;@tQTD7|E5)Uu_Iqh0i`&{TEmNk@aYTK2Y-Ks~V!Ox8Hxo357PBW<2&?hF7na$nzDdCNBmbl+SgY zGLCN7%CX#yqt%PU&d9{Hx_e|q{?sWd;EuIx*Vg4&wU@W;>Y11x>xx}oS`czz^cla9 zQjsV4T{pvy*~yds=J{Y5Ik}BEw^0(Fk2^Yaf`?D{u;{rZ)ncj(X|#{j8h)hyg= zSs*JP=g7w2zkk<6pA1Ktp#p%_%DP4)AtB)~+<31tgwwvKWL@6kW$VIEoUtAy&(1s; z{Q7)@xZ9s@V8x)8O#NaOZ*T7$>#i?PrEU$@#jS~piwmVtDvh2!d&YRuiHBL#;i-PH zSDM!Av;AQW44fCoe?GDPF*;g$TNfL3 zzrWeq*7gI<#l^)XyZk5awI)`QRZ&r~6cYi-5(#f`8z%0_wL8l8OW7Qsp zC-B;1-j33XyOE^iD@F-_h&X2W^6gtrF0Q*Loqwyolk^#PR#wx?X#AKl_JWy#;Z}4s z^DaKUv}{Xrb8aaqDaVwR&O-NV*RIvQHmT)qQG9${c6q)xP?Ce6Klp8@+k*s!CzDgP zk_>zIUT|=Dvsg2RjXCknBzEhzZ6&|IznkyAML+)MPwCgMTW$&#tC|dY^60JKz z!V`7Qsc*VPpYz~B->nDE9yM>|3ggqiXlKVC>%A<3lXd&{ZJUJ|D`0U(akt|Dx}1`d zv0AT<<8bJ)P0hY#89kKVe>um};Onz9JePC)!}Z+mS+(aJGbma6qqjHJ!+8GWSi#4p zRE{PB(d#ztd=wr1dGy=s`Pt%?&*A!B$z>}AY+}VJzsz>++9iMH z%o*iNmx5F^HMw?d-+mtZS{Xa<%gQnFAIiM zS67ENRZvjy;`0+Bd3)}5AMg37)_m^V zIr;KH)^K*&VD&W3eRO+Hq?Ik@dM@NtEuh}WkyBUoJ{)%zyLavn7x<`aQ%g%_4)O6RR@K&q182M_DLE}7L>3UIEVwLo zDLG=(k;8{K?b-9hyjnNk;hvArYMi8gqm8~k*oO8$Yj&RvWT89t+W50-j)0&bq1}`2 zSWk+g1Oo%Z@6N(ap|eHwEMl6;emci!N+ShKRNFSB?5)m}MYX98JJQ>hZSf*L9ti&Y zrAwFM?OHN)rQ?+9o}Z(q2#Y!nvlnM_v(VGiV^hg0C{V&9BO@y%M}~*%b8QXh3sE@4 z`quV;ytrv6Pxs>dRNv2^+ji~p3kgxlUNAH>JG6qsmNKI%i?hhiX(@Y)x5qsqGIBTA zU^hyV@X3=J+AICx`Y0EN0;|=h1)mr33LHLs*bsXca9-8O^~@7sI8(DG(TB#_VZ6Fk zcj)$z6I19m{S3#&pYhnUGAnb@o0n9?=mV=$M^K<}w8(k8vzhrmPJF6*dWyZc4_j!+ zGXL?(!Ee30e+&$iS5XdQi(k_6`cX!3j(zcIV#3VM60K3Z)IexNR0KWLMheCcQ~|f-@bx{-|t%6+YOD4 z@woyKBK8~`Ht%H<6@9#0z?e-oSZwcPE{9?apaSjG&(8<&b(B?*e1#L1tyH1zHBLOY1I)PM2Ofr?E~2Q`4j>1p&~K zkL~SGz|nqyaiUnv|9&^dt-E9L?i8R~?H$K287<>i9u=F5MEn;y_hE^eW+x3@oG z-C2W0qM@d~f^$yGbo}l;2F}$-UB<7VN7>lfU9F7~rwqqRdJ|Ze`|h29RoiiFs099) zMGe&8a(rf<{Q$pl4Wpjdyiwa*Yrae&At4i74%8BQw9JHy(N&>`R2U^Z<_`Q?xlO|` z*qpxS=FOWf?(VBwLr>6QZ*6B$;7!wf z9C=Gi%ewmd({V}_hArHZyLRl5ea|4<3K-|(W-iydV?|;Y*gYGy_Xcj0G;X(+$97ql z0J>bKY?hZsjPjoO{qF?Dm{qv9?69pwcd>*wbu<#KpC*Bf^4*^?@Ez+-W4f^J95cqkp? z(Wi0Jrb@#e!e$->kmD%TB`UItXla->B+#W_e*3fZ9>W{6hC3A%=fA{=%R?`^=kG6* ztO_)BVP$#g*zx0iA&L?`KqBl158C!sYy~>~2s!88!-oft9}mTk0a4gEIv(Wb--Zgb zo}T4`lhcWF0eklyKKuYD0Vk3X_kt~E2+Tl`)|xf9xQkX7rCY)h@;PbTfbOL<=rcH25nwKv#03yZ9hYQ>FQCC)0 znwpvQ^!NK_X7X_=#$3a%qap_%2&oP&Bc(raF}xQ^Hdn8cp$|u&}ew&psTikKeRr!{)VBem5b5$pO`6FL?A< z?bv_dK%Q;ydWFZwKYafD5Q|$aB+!_%3}hv9_H1xelz)1x&WEki-P0rWAZ7Nh%t4B0ErIKkgCB4^rze} zcJHlq*V$lp9Aq;v9fAPS!i2g!LLhqu1qUk+?QYn?aUp`OnEPi&+T3$dvO{J@KU7xU zgK%}##H1X%DV2Xp-WRv`C_Ma}wlV2>T^&&tPaW@(T4$S_eudfvFpPaeN zZ?C6MGOn`h$PGeam_Xy;H?3p4YG^3py_sSHsxu-20wJIx>v6Pv zZrvJc%RcN!&&siX|LOE;P_DGgZ#Sb3=(+zA+zaW0NZbAlNfRz==M@z>asF`J`Jt=v z>KE}y$`@w*GP-u{r9}&GR8-U)*a6v`xSE4PLc4D0zH_Ra3SYl=Et~8%Y~chV^Z_6S zfqZ^_ZK8;qeyE&$?c*J~NjFE(KPE}ZV!5toP|?2hRfeq6d}A84c+wRhl+rZ;vH{MX zI@&0fdA!I^S4oNL6iz~l4xr|NJlfD%T0QS2N0HrujK_RxB^Lb2$u}}mvv7yqGkHLI z107T8*XQSkzP;we>4=jJ;cysj4FXW%ew#k0bcvh7qhGYw#Kgq)eg^i_v1=7uT!r6% z`sC~HPm48#tgez=UQt1P`SNAlH3SDb8X6iR+e`ax{+9;KB6Pju5oeKF;&0SbvN{x} z&8!ln)>(*i>>x1QHETWB*cr9G1K3G*&(3TD&$Wo+PvZdOMl+X}ScX(_{CYgtalKd!;K0RDQ3D-emTdm+m(e<{n@*cj!!YC*?VqOV6b4#wHthY#a5GWE>U zt-t3Bu3EL~)ci3%Ztfoh@&5*rG)ga*hseXq%DR2yx-Vb8pzK$MI5lP$-Y*^f_3I%V zD9?qNc-%PSo;@m%Bv6Q5#|mfrRunZfGzd`S)y=;ROo&3p&d$Ep-QAt4EyqgU!NDQg znA;6~M2%(kG6T*8ej9+0zgU4Q@VSnzE=)T0cM1xL6EyGkUmED|ubet5!2{5LF!ITh zC#ip;o(Ne76ctH$FHZPr(=7Dlzsb(N#I=30MS^SPd5V=@Num3!9Ui}{$K_ylSU-U7 za`CBxDGNWl2L~(AdqL&sf!NlrUvG!wvG z>P#jFtUB&7u!Q-Ea@IV@k)3b=UnC~B2#*;nz#$P7+<`Ts^wZCdvnD8UL6$K9Q)q2% ztt)V~$L*N4y-C(dNbtO$0rShTk&%Rr9d6RsUG3Wz7!K2_>h(c%?7n%K zkv2VCgN=j3wTT~}G&MErQq&ITJN>$UI<6Z%4AR3Z)349u+HrnJVTU+X<+{(x%8HQc zrygEvj;b||DH*6US-=1QY-gpUR^7XI&-W zW6GR4GXZry^$+bq*%ByY^?qj^Lk{Di+x{86WM^krQBza;O?SO#IDCy`{ zmGo07^53U>fLd?+`u6<(9q{DI9_+QfVlLyahE=&Kf?qDpYjk#Y0zwl0b@l4iyHF-d z?{014nD>(nmH~7+Oi4E_&YAXJ$~!S_TQFQ70|$y|9zxcg1Z$%W*`e8Yx(+bAvV3^- z=#gAIc0x5x9`CQF4cKc=zuL}Ry}Ez*?%iO#eL;L2b*fB~cj)TSfpKbNjExhjCP7tz zt);?wb^DCK%DAU!K_o(+J=;&ooK%#%ex0|=bCwzVS#9Y1q3s)ajvNVMzlYyjnF*!R z+$7ZO>$7$F`T4k#dOQtmVbiW6@#N&>7YPYf8hS~WXR|F@R3&P_&LL|CwH1yO-wzBd z|MqP+aIlz|m}yH!bXA?IE`BxozgpSRxJ8QzbfUwQaQ1u996&zCCnta0qL+Bz)I`~| zi?_nayv+pMj%>hyNc8!|Uuikh5LNmi_;4RP$iboh&O6Y(V7N^Wg0k~iXT0mwPuku5 zxA8|@V&XY02UK7bZ-0M()fqlXNmjH@;QBfot@+|d?Dt@t1c!%n#x8o#Ju&`7(_fCC z@_X=L(?IQ4g;y^BnFWX)nCM@C(58L@J6L|p^4)nvyP~l6er6!pLqlKl9WAzP z+jjo^`9~`iz-cws#Y<;pWNvqCS|NLI>A4Em_BR$S0eEa8BJJ(%_Orirl~q*KE|w;# zIOC3CGKpi)67dg^rVb~byZyw`qipCi&^ydISK(nFgW47DE{(<_P2F9=cZf*(D4k4@J%CF#w{B+0(IKehm9yuTvo0EED;Tesc>pU*6u zdF&ygxehfJ;)IN*CL{JRbcE_~w^e_Be}~jFe+SCcQP01B+#Vb|a6npOcb?NPZPz?F zqtN*ha2_BmgtB_g-GtDBtu)wG?ESEi8gkH=D3JsDbkEY$6~JBq@QSMDo{Bm;qdkJ_ zG-v2Oh>t(0r>6(5r|~TV6@j4H-yM0t%$1xmEX@$A@LwOHrjSHNd;7b#2^U8ZVPRN| z6}UOBLx(<;mEDPx_EVqFZmp=e3+79p%eEameBl}a4y*27-Fd{b4in&d8V z*a|V;s6c3~;H{a>_j(6{V8*eT-p(vuW;$}@$h?Sv_c`y>eOrkYK@pYSU;9bzUnKe8 zBQ@lQ{>?R{_PMi#5aR!H66gQ=#}p45=ofj+-&1e`LeoPHO7Vm?`|IAD%TJn-jmoJ;2N+k#%=Ha;pYUs}-cpvlw!p}^jp-Xe?w{Jb8qy7Lk z(ti7?nMUq$jFRK#z1YjjxO?|20V*RWBp1h}quY)O36*zr?7a~hx}6G|ssHom zhTqp@a1zS`mBfFKPynjiam~H8!Jv0pW(^5%TbTK!RpjBCy}%>84KTzImaD^H-A&xZB_*Y&${gb2 z(d0wW%t3-t=qY~I+*dc!(Y-_>khBp9QrJjC69mx5{pcRMl(5NUL{3nG%kwpPh2E~1YeQSm?rwm*kKhaxGq;vp@U~+NJU7i}qyan^>6=<4u zL3KC?v~LE8rL3+V=74^a3^r4b9g`}y6IxFYuJM59e1EvIi%agG9zRw&oCOLPTVKTA znO}zs;Um;5N-nX(Gtix!nhJsZ6Su7aW&`KmDrWXmf3vGMPQjAc$l!2udmm8B+f*(G7sH&~a zZT;Hd<9gR69OQpo3Fscd%E_URg{*lYJDrdJg|;CZ%*{D^_b&BNe7IgPma1GcG=Pbio0rOAd{e+c8;YM#i+2LfIA&!H6rTe^JmXqpjpa7m4DQdn3yP! z1EYNUw9j57T3Y(1p={Q}R_UKb0}so09N{Rg{qjZqTltQ|>gR!*g4xxgU#6Zc`bSGG z@%q8ZybAg?;VCJ)#STNt914$b$Hnz9Jcz^Q=N>~AO$0(r@$%opUURhAkaAA+LhtPWY~x_Q0ibEK^!Y}}fR4bd)z~b^~ zzPvFtP#f~(i98Mtlxs>Aps%v>Hl%bkw0=VYv9#o&GWinq0r(G8ymBNxEe)uV8O4PB z{!{(8lQS}SAMOzf>)OM_M4(%7OLMa^qyPweXaKdK*L^*4DXPvM>!gy}RAgJT!QsUq zhFrq|FBmV`q*x#>8w^2UKOY~xzP^4(N5>o%JwnVitIe@sX{H^%>q~5OsNU}<`>VBJ zY=NexXBDD}@nh%8jgZ0tH!l4bvzQA&_!eB|r@A<4&|Cru1%E$B!X%LkIYT9`?M)e} zsi5 zKRox1&A6T6CeQ96XGi;-vY$L6rNNiE*l%0Za^whPbViyk(KR$awBNbj54?e zD2EEp)(H?qXlp5+JS-V|uKa4tp3K5>H0812(q~HT`iC zY8DH``-Ocw_4OR_;0+v2Fcf zz`${V?bxxP_wP^PM_kbMh9JLW_e-BX4Xytw){y{N;6dmS{hq2^+tc(4AH%L^*s_J{ zl#R{Nm8CK7ruze#V&dYFVy^rv%d^GgSW|D_{4={nFSS8vm(&*X1THk3r;8TL`uZe) z*MIQ?0MjA91yoZrt^nx zqC3v${CNqSP8bxr=h}7a46Lj^RUAAxNCF5Tm1P-KM;tfXMjSKHuyP0oU^xcn=Gw^__b2~d z{H7e%xa;rVhu#7Dz7`&m+wAX$r{mZVEdUAmf!e65x*eQ7H#ZmQRCYOEidt<8Nn?3V30bTv@knnXl;#1YUX0-2V^>!TJ&*W`d;(CZ{8ed5;T`V7iAQ-x$^K8wNHWz z?;RNs%)9sR|A4UGhn1kj6nhSQVFq|WaCi+A4g)BBfLb;aKh8j_28;|hxq5Sw#!W?8 zd9bq(cKa((EPx_LQ3o!_BB*`0pxUeNmd7JQ>i84%+NV$1Ao$4Px5Otle<~~6hEsrh zKpZRGF=q~{4dhoM24hhWMiz>Qh}eSQ1;{9|`oR6{=21c+Tto=l?#Bb_Lp_%{cWzB% zz9Q5@Zia10S{NY104Z$M`HL45Uc6X)?p!%jpp^pAP?69%Dj;xxjqL`}o}uRxdBwv+ zEVE#8BSgaU!KHAM4)OA?PjXzsGc!YsYpiI2_ttv4{Se8~9SYbvgD-oBvR2z+ds4~kb>7H*04`bz^H&Q%LE`Xr%q;qwvS>L3ouEqm=SFlfc-B=PPa{tcTK5z!!O5u%J%E7y44pjX zUI|CQVWcJw$Zmt!N8An=&Jb15xk0#y5R00HBz@9EYx5bfMN-oXXFEe?o6x@lCH~$8 zXzdvs)a-SGJ_Utge0=56$hO!?P6}9(bj94YA+qYcX z11OACPZ5?Nnm1|$Ao(d+J7@q@@O2)dr4coRn7i;_2cg0%Neo;?h!OIBS|gaMas2J* zsHh8Q`)Xm(F+;+`%W>a*M)aIpk>3XbGw+Z@rI{bVkp~Xe9;(`ewnLeuS6pR$<;r^? zlBPD!4I4Hf5{D2&KUguC6AZsSu35f-_>^lp4X@H4kPA~+FGF04JH5K1BFV83k<9XP zzay7(t{56h11{S-I;J~jT#%~UUaL@&amC#H{@b@g85tQo+HdZ{tq6*Vxd=r93lomeQ!M_Bxr1Qe{3Mr)u((8EWTNt%*40 zxO}J7`_B_Rk-T^g)S#1R=L;GHFiB)q7=DDbv2$`(zaBxWjw>^~+_I$1wH@&XRc({& z*DnH7J{*bj;9z!kc80VejfRVJL=qGAuePmKcrih95(gRL8i5`ZJ$(a%eM%A`&Nvpp zHK>u*BY=yk%8EFH#In@ak3C`4R>8?;WoaqwG|EUoz8^hcqoTIJdpJS1m-ZutCkOGQUWOh>F^QV?hoiW#jMPzj!3Ju>D{v z^s~GXEmzn5A9A1DAa*0l$aZn@LZ%k^;8L)_S2;Ol)zzDzC?GPMYt!R%zO}?&s#j6; zaYRHN5;y=EB|sF=2?Pmcx5#r z+IM|@*I}W1(OGalw(Q(l1{R~*-&aB^T%Nt3xcdws<9p<3=7thu8IPMjirUK>j{Sh< zK*kpELpIBcuFaYHnKRo>hDSqQzZQTr2CIdr-&9B!C|9%T0DBnB>HYO9z5e7nqV>Shfh3#MVU?)F#VB-rFT!@D?4FvB z_>*hfo3hvEC_n#xcJ|vZUmo4Re?KJF1khx3f#;nwEv2Qmfy}c&pwL>#U;U>(^{eSy zB9PNn91CzMk3(1BnhV=>->4F77~b2SKL}|Gp)f$cb+W;TcU}QtKo}@F+Y4dBMRdPO zThhy`D)pr5uGN-Ck?6O#^Ki{j(!{@_5WD{WReApH(@IrhZ_k31Vf9ro>yVmyI9k-P zM0%#HFJcqpi;<&uuM9qjYiK|d zGyeSe3|v?$@}p?ENNe7Kwv3R}-wG=*pQCW*VdWe;bPt>&42@r6Vf1x*Ko@!z3b=N* zxthf{n6&~n-KXFv-3$1lva)*W0{r-o(D>!$tM6<+L&Tpk16JTF=)RraE1nQSTz_S^ z^f{8w32J@&&Yekw?ns9A-1YM2=ADRn0?Su|KFs5RetTuOVRo#`d(;!~_Xj}o4-jUz z(fs8ARIy5I6;nX!f0V0VP_EE1NWKP<)K(xys6#U6&V@XFEQgu_Y5R?JR}4Sy2X`!U&f!k2Qt|j^mPA@>v2OMOGMZwkBwb6%E61pLhffk@`m!c)&W~d;z zQ~&|4%5|UR1yOMrs$U1!lMoC{#vwm?4IGUMmQobG#N5;796p$x6v_^u`9v@T)bE_C zB@86}dm44pd{#G@9re8&lFblewMe<79v5?1oUan{ivuHGv9PFy9)=MgwPZd{&U4H2AX^B2t%sJ62q{=nfZNI|pK+lX8HO1= z?K|wUqu<|!1G5K1lmq(dyIpv#66VCViZ5S`A^8jr4{u{((c`niJ+DE6{5H&I974nZ zCqQ{7zMLE*lVip;5vxui#AjIMPtqpP9j7odGmdJfesaBp_p%3xcENf3mhYHazz5Z0 z5%FHC4wz6VF3oLD1kJpHSPXEgm0XCnK#X*78xhaH#{mobu@c=lGiqhCki1@9`LG&5 zs$wA4I{-*l-+L*$Kmwv2NY;PkOYi|6keQHQl8cYQ;+?qOQ2}j`q(*=f`j%$92Eh5C zaD#5HI%R7Mf!&`(rV%eA>2F+t@6T{UP{daqb)T_BuyUdGm+`f0WIZN-Jm5nR zMB&;sq<9X(G=%lE;S@BwArxRhTAbLaa#nAWbORZ`G0Bo&T&)tdKccBGX@pFD@?0ym`#`6-oz3q25uS9fCp z`_ZT-{{pL!=;qJbSUx_I21UZ>Dh}CX7J!)H_3HsBLa+f4>!1NEp+c0r7S~0418yygp^5jY2JK`9iVWj1xu~GNOn3lkw*avgP%i7qOgHPz_ zQ8Lej5+h=8c>6{;e=N!A{ng>Av&lOMm@xlUa zRxQlk#bwK$J)1};wsCgOd_#5(aG!n;e#lPPE zg{V7FpfDcu!+!3f`n{cO?jh>8c$$SoRX?G zr>ru?YI^ir2m;x5e(&f&M}1#g8whG+0Amh8%0)Hdbn({S9OqASQs3n%FG0YMFI5JuyOXFSdmzY)n#U^ z+W#74%~^yg3A;fAXK5eewewR0sXD&L5Kf00RRf9jUO<5H{|LlZ7}hx&7#Tq=S&yIx z$AJU4rbk+)z_uHS_+}2>Fb94ji2?(tBYKkRFTg5na|7LZ3IhjZC{faGET5az^UqcY z9)>930C`2re=WcvvDWZfo~5Q%V~hDBWq?o~Q3fFDa$Jn6fcR0dfz^YIHY*u@Kdhcc zSQw7tF-VB;{QKzlpob6@4~Dm9u8l#uRjMJL1Yu<;2FSf(*fY+$tEefAo`%K%ZW0Mr z-MB%8@>fk%tm&UWf0Ee)s9-(F>Ox1yK*D{w$b8I3T$}8xT*Poe0?H;TV5*KaANA=a zCDdG5C5hkjEgC>Ccw*D_btpMxjsc!J9P-Wa%CeA=p>|?K2fH)Y&1~ROe_tQy7I!fp z56=rY9(aZgh@P(Zzp&+Y@vVPZiFZ!NCH?W4?D>-DH0FSyU7o{G@Zxx4Ru(^;V%1*C zTE*&H8|dG9bhrIy7Qh7pz6)&3h!a*!5J!m`2j}a@;9zTA4<@Rp=*Hg^q240*IFR_= z@*&QVX14i`!x|aafWl7ATTKzq9{w}k-e@-J(;^cN&m^Z2N5=9BV!Vfqx@j8&Bj%j` z-%_tu;ZQ1EJY8z2Q_o1U-``c20Aep%>6e zlpDdj2kPnv+EB{~^!E?tYuH`|t7j_{leYC#^hU)NdwZ=|z*HD$&^G`h?*;@Q4UnjJ zJqW3S_rPlQ_EXx`dH_gjsp`nz?9a9qZ;=6e$L!JxQ(6ElK-Eg;B=G6S5J?40>z=NE zD8D5p6lr2)ydqF&R@D`Gy2JLEhrKm1JDWKZ$udz`!BvImVo%Ww}?0ZNah?$WU z8E+I5qFKmMYiDo&t;q8vz#mMFp6+gC>l7?HB(Q zkcDO(1+~Ety&A+YehE)@GZD@5?AGC9Tz^+=ME~B4vxjC!q;p~rpxc^u7Kl(G6kQJP zgV8}!6$uZAi3wy%NFz2GOaV+OQ7bK5Mq)qO0Y8Db6S9c`ut|G0@W4Q15Fnx-_^(w! zGNUdR9}MDWiwGAX*5CtJ)pE@C*L!(E30$e|j4tnwSPEqI{(eSA`QFYW%G&9^S%;H( z40kh?N%((=7&{tqtY(9ue`GBqt+9ZAd|AGey*i9 zUAZc()>VRK_EtuJl)dgiQP-?vwEgdqIs``D{tT{yL$N{Fad~AFbh7F{(mWEU z;P${#5Yl+y^?7xZX#QUN4<0;Y6bW|;RAEDs zx;O`t&iH;5*sm=ui8#$rODIpg5g7&UeF|X#QgK{*`e!n~hKD6$`(rII6k=mXp;Vv) zY&ZqO2~C6zF*QL!LAU8)Uzli7dO%;;wIs6j^XHxD=xDhZ7;IN?^~4CqNSA!Po_spe z@6a*+32A?ZZOwp}11Kk#!t?c7`dc`8GGk?(^{BWz(oX;>8Oh zw?6HYF7#S*13Mp|nMuHrCHa|{&>2}Mube3FNLUIORc+@N5D;+~+ybU}6}f3DGL404 zFxAJ-$?!bR2JF@1*dkqdD~Y(Zlu1}nN=81uD5P6=@0JC!*?q#25ko#*UJDBG>9Bx; zk^DM}7dU`~5i1McCFI6EfN=;)A5=_&URs0CwRLtL0MmK~F$+vPz9gp>S>H#{yUE;w zp!s%UpmHAFOhdB|6JSN23zO(Dad5T_7T!YGL;z{B3raG{j-UrpA)timE1oI;aI`q& zNY9|Dq3`7_MzjM(!~3g7hbGZzNJ~+ojwu}lezdzwNW&rj;&}&>$=$V;!;QUol3H)C zGXqTh?2f0&M2nm1_uXiFcX7z3PdfXtIJHLNz^lRWWmgViy&VKVBz!T zF}cfuP;f@cAEXoeIU?|%l|vFkfDekF->IVKn4v@FnZdstAN+cN#Hqu>p%rKRmn3(;(4e&B=b!LQ%s}|^E9upt4O%6?&&IwIPDh}j(~m(MT{hq(JJj0 zZ14bxBo0;X@GMOL6B850EQ#7{WAnbVGX@xZ-b2u;O*JNLG}^f{$VAmU7^x|MQ|VxK zh_)3K6;H7|G{UF4ECOh57;2RN_7IP0s0*1Y_8v0Hh>Tw9j zPa~$~wdl0V+_(V-G%x~_TTmo*YdwnPDG3e5dT9Kt(MZ9cBC&n!Ud%k7(a;DdnqfZ( z!W9s%$?y(UuGWGR~e%uM>TdDUJvTVKa>eaCWXZ@4@h)HC;eEA5Wgz9-r zRK6qgDnLzFO-<)6n9cP$<=P~NG#>s4oo~>46e$FZlpsK3kG4w)YnQI^?yN-9S!U4pDe%R$QxW>s*dL_BU~7 zV8uczhBq7jEhnoW)s8|fmhBNQ&=NZPA$2(Igd$A6M;MRuXd~`CM3(z$yD1?Q=dJ{ zyXd=X?4j95Ugm=!>qLS>Z1<4~mC%V3Ke0HP+S*m^h)v5t=d9iIn6t5mCNYk zc0=OIc)#p6m`y}w0$oEcM&)-7rC)bPKV@vfNe>$gW-tu>pm4+>kk8KkX?i<&<~q(l z(90>zYd}&>86VE)$0Y1EBO?Pt!;g^3@TfOKS-`-`^NwFADzGH`U`Hcrt(2)J4!IhW zya~WV+!~K+L)c|4I}0KKgu)}gCW=m*T3TMPv&*W=f_-*eP*BbIMP>%HEix{R)&Y4A zxjYS5k7<0&Zp=(VLO+Pf2EB~9IH`*l1FCWqzpy?I3X03ZM7zcI?b}sbUvP>^T3>kY z6;)U$j${a#20HjFj|61@!@6c=g{jDgS;JGo>`)bM-MO-Kp{av3N$|A zWj*c7_zAgIFdgb9!u*l8Blcp}7j|}%n^O41+rF(&a zoal)N-yXH;e!p=+EXEg+a7gw<$%j3KZ|OHqO2LeIIUF$*f$9Zhwi%e2KVwWF5BUtF z4i4E1;Y}xNa;|@`LdXl#2u1+05V`ODd=%dOkhYZy)?hy%45ZEHN?gRu1mwf)@yqMq zMRA@Z@ddn-3bA7eB=+!3$v`?pL-%1nbExH96gd=@516~Z3)azLYk1|#4M1iPlG3iO z;`)NrX8ntBfE#@#;!s}4CrSc#wu=U}{{%Oy9z$fv^66J&=mY4TzL zn3a7q9VSh%=h5>K`X{fJ+6T1;`%g`nHVtKg%w?cKSLtuVu@>`~ds*}HO?h5^K2qW( z(4P)lCGwI1b2!4tQRBlniy>j8s0BjJxDX@u&o058I*qnUp^Vu&IeGoeqF^<5pxqMP z6pa+kJoIEqY6>&w4wO7^XV!6=F#s#gu zfdQgskZe7KL*n27#o}h?e6z#l$B zyy=g4qgu@f_F~4RNY=Mz4ID@b%y!f>tnK+cT{7T+l{bP?P3Ai>tOdEZ5@YXFFaRXy zMqk&S$M`GcCNK%gdO9XCmA_~jTN5yE?rIGC{k>r1p$j2C3D zD;d>6xvt6wTI6>c)dU#d4g3qi4Rk|XsU2BFbXL92ZZU__$TEGz-Yds4v? zBVq(%$5b#y$U7@w3SPn6GT^xy8W_X{dyxS|>{`J;AP;1g zs7RB6nrQd-aCCB^XjF8x+G=}{Gdwo#RhN@h(Z2WVTdhI#?R?R*F$^A|A0(+S2e!X+ z<^zDc0@D=Afp|j^o*|NLFvY*X!HPU)xE}iLK!c*>IyTf4)Xd)BzrWy*-C{0Bp>A|T zX`vzlKk=@hq@m2f$MD}P5?oLqMnEOtbtLW_jpPM3v!H}JPFu#VPWG#CN8pDbtYd)C z9vOOszlvJ+4@A{Pk^$;ZrZCze(RVN&12qtDqZ7}tw&lRq)F zV2tBWMFz-`vbYbunT%+@sf|AAhwQDK7q}+`l$?$%#Oe62yuV@2T#f-O5T(+VmR%^` z#M}*p_5xSe?#eQ1gcCl3R2k%T+LoduYwEZ5ZJS8 z@i3J5%?+`VBxMN-fboOW`iTuTy=8Pzp;9Pb$dV|jsE{-#z!(_|8g9u9go=xo5hA9A zod(hwe3E0$>ecAKK~K&@l(%tkK%3A%cqP1L$kfc55Nr#|6EEm- z$hba5=>@5%(02pxJ*%Mb5UwJEyVX$|HyRro&BJB4+-@ny6%zh}ZBBeg7I8PKgCELq z_vk!$I|UiO#m&DlZ%Wa2ZA{e&#Iq#{YZ#hXU@ELTf_uA&m4O`_`STGOv&Cc?e)*LH5bpx29tsP<;8iUW-V=P<;083L=P@rS*`}i)q3Z21gj^2X8!`Cl#Y&$P@~k0 zyAnM=pa{4ZjNj00<4srPCU41DjaP15Jd1cJijV4Z4|3QL!^AzqKs&4V8zaBCD)2CW z7ICH<;P3WOsfo5qNgV>_1R)Yf5c)g<9OkMq%5+S}iQ>Us4eRUDZ^+j<i*P{u`S2DfbH8x@G{rcjqZn5&`a68MqI z!iHMi)lnhIJ9)69DXd+>qN2zJ`+=x;czF)i?E^KgT5E9wDCZS6DHEmN7E&8#ZJwYY zyh8s5CVg(VZc!L7fy5yWfEb0>1%aTbz+EE(+~dbgh;5Lm9gmfzS(L?blp~UztT>=6 zG2h34nBHd?twec2WXk|o5B9YhZ^2=;!FxO~UW36)x9jCx)Fst%TwGj_x>x8^-4`h_ zF?zq8`X`AFj($Lrs))bO)p{>~go_00WzfD_ddu3l6VRczqa|@|zt7LdmG{*B&~q6% zM6BFTRl4*bX@NH#u!)ueM5GMHuOC%LUavp3LLEP-&QMF<4w`gO=KX*BhhF8&q5&&l zc9^-V4&JJ!qopN?6=U$|*^+NPNJ18<8qUXzz5J8{nR3O{M*mQS+!7?0y@+1I@g{nN zt1IM9OuiW-BBQ7vgx4yeiD3j~s>TT84u;rkC=#&mCTbQWH^nP!^=!AqMvq4r6(ht^ zP?l0IBusFFhu#9(cnSL%a8@hVW*=y8A~e3*gPs$vuFIWwZ_wf0SeIdrbMf**8T18z z2OF9nd>)8wiC5Dn_jrgz_Z~cO&j{I|@dAwikAw`lQf_$Se^HUn%gHIzv;wDtz!lZ; z!)1Y1a9&ll5j83v$;PTht~B%^QtYvP@vhDl<*JF|tJnkuSo<9kiOUKTWyg^U7`$R- z^$-dLBxpn2D3xH$jJ%5z1T3h272fi}GDyE-LX>2#swr{@L0H`5R-MF)o1o_1f$Rly ztWTCr?>LfZWF%4#;tUW5;`o1bSm)Um$6O3EUdFyiPL_q>{Vm6855ga$HezrDpzAEs z^7O0{rBziMK^a|t+$NO(athW0ku|&y={DGthRXv8LTGlJ2sxsr#bUelLhNLhB?+`u zYt|=q%wWiT%dTCViu2RCz*A)H@G1kmKnRv47MVENLqkKrU&=*}>p)QY!6v$a6DZYo zIABDwZhg5AT>x!ul_g&D1f!h_i}CT@SkVI*dcH;)Dk>pUd+-(x1R=<5J5+e+L3rbG zH)te@^Wu$N=r&b*A0RM+PT7rGV`^$jBDL5zM92a+#2YZ4B_y21Kmk+~yYYOmCx|*& z=clQu575StspGcyT)%GJ*8f?bO%@v+kwxVOFlWRhDLz&h0|9tkAuZN8dsu0_nV=ka z5^X6CLaNc1Pso_!buerK0t}EBNcj+xFHG6Vqj>{CE$l)g9C5;FkoX|#Al?fQfOiA? zjx``^LMl0V*IF?>={#8US8v~LAVYE3Dc!$*ea7P^K{(hAU=IxdshwU6R`Z^Jc#QB8 z1bVXZDMUnuREP+L4E0DQLrF!$dEeIB=ePGhd!N_- z6TlTlHk;U(@; zu`R^TMyU!^L#hWF8lwu=lf^j)`hP4T#Wo2uNTD08L!T&CKPW^s_zIXyMfIiTJ$m3_ z$0eL~F2_3z>6o1fJpcK1VmfmrOCcvH*sddqfdoa7OIJCH58g*Z!@xQO287}Axelfz z1AS5?Kf>nk9+cNmbNi!czsUIMAS)R{Kuz3@(n!R|j1RTv1oP$0g&-xI>ks^yTT@+b z$#}!~ME7d)kqyB^JpLHSQu58ZW?1ltb(qOx&M8-Wp|$lERo#-`|Adf}Df~qD^%Mn2 zGU_opN;TLT{+OQs0eS`n(CO7_p#CtYs3UffbI4^|!-E4rK`Mu5frm1zpz(q<20|)T zvx9>JRn{SrM&$BRST`iFDM(0w(Zr{I!CPyP9bQSkc?*x{XE~a zdh6!REnBr3M-^L1Q}i%1(;6^RC#6d^--HWrB7Vs?UcEX@u}6En0o?+QL{rSo4+~At zS6-*BM_0QmG^?HVs)Pq&z`+bWSK*i9*b`*zf|&A9sd5P$`rbQ=f3p6O#WQcgthegi z`BcWICLngZp;1y3e5Hti-ywX9qnkSh(9md7q9Wo4nMz5|b2sDFIl=Vorooq?-Nsiuc5d%BzFg8*I+bSUlBwX8=KWs1rn*HBPOY&A!-0guJU49an$Oa>Jsx8hsqo__3GC`?3TRq>lQ-L$Jd>LNu(Vb=9XMtKAofV#x&>e{w6 zv%q`>IajY#P4e~e8BZ^P9DtiS6lKV;VZ&ybm^9SOd95(_G@Jyl0y-M;^qODh3RnZ? z+WoXu!kR_Q;VSLDRIR9>l|Yzw3Lr94NWOB)ou}&(y7bol}=8cKG)Y1C57K% zVl1#&FZTKdjp7Ir5C%Ng?v3T^pYN3i*b!XZ9I+Ru2@~1QSb~xSdaQNaCSFu{d=bvGRWAl9P=yq3WkhU z$JZGRRYk3lX1NimFV&(WDqlZOw0gTVtXmL^>9ee}a;@pd*V(PB*nfDBB6D3tM$@J| zds|>qoFEzy|Cp%fc#k8=j$He#uY4ib+&U8UD@{K`iUDKnJ#b(urKXTMS^zqRoJ>@e zd@_c;IQa4RR(qE}56H1Io*ZEqc|LkOo&$Bkm1r@pv$>|10K*H#*w zR;_N(&f@PA`qIMu@Y!d+42+Z2I7xm?kXNS3_^L>PinBGzgbMY$8I=P<27Jy{oU(i6 zi-?^uw%B`vuh1PLgoErDvn(g<@SgO@RfP%RSM||dLs{$Kk4v_YZVyEZF%od{u1OIW zo9z_Ws zzU0ntBEkec*p6hUu&|J9PT)klX%L^(x7b(B&(}9JM*hO-n_lJ&B^8wWT2uNGsN&F zMVV3UIXW`0gXYNT^$|b6YN{HAe<^s$T*3Z`0%$=>+FF8!@TSq6O0QV?oS{dV(%0L2 zWo=nx>M0!>P7FG9Vq%GT3>eJ%v~4(IF>qs^=1GIskRovCDtsG8!8`JaL24^^^ST+Q z7YNX*xN;B_ol;%NcekcK9@EA;G1HB5!m0PFm;{3jF#L4dJ~Of{mk^_rw3R{r7nU)| zJbPxJ;lsbj`x$}%U)wdX4CSZO#pqM+rKP2K@iJ5YTc=K)9A00$&-4)F+x6$q4-gsA zOelKq!)nNf*1;ja;GBC`yZs|hJpM{=OGDH~MMa;qCY>1Hf>VnNNCT*dz&S-R4}L-E zz)|d?w&H9?@JEu8)Q@InhftM{Ytxp)Fz$Yb|f_oKNX4Sv9Pe)fNsz(CXZ``zJf`SWc+3nzb%<}2+2AW4L~`vMI2ZvJp=2(io7XwyDK z%hd-%LS7aFw5ABmOZ+~T8v2z-z$cRFn7K0O+7WRbP(ugsxsnDGNLK(rJt0^523r5| z$2YUlIeJB+?v@UmY-Q-O&DgYB43p4kp)E`!3;hWI$YWs^Oy)*pR0V*Jwxs9Sv0VWd zq<4E=DFCtX;slw3{G-FyQScu>ejISg|DXUJ3UD~aj&mHQ?BbgzWZdC)@XN877@1xdAnpZ|0B`g2O$zq*z?_pI3gCJn z^SIJOnWu}d;zQnqhanFwfa!&h&5BzVVCGLFMCH(JdL3!Ng+`$wUw@ z>PO>5KO-7Ht;*{tq(is>+23+dujjE5684}knJX1WLM91p4o@)F#kRhx$MeI)Gu4CfN zFZYft85?)zO!q;9W_C5sBE9kbtF8&I2TGlG_@;=X05W83u1%X#v(zl+Jdh}G9YCn} z@>em{E&g@?0CMz6!?06WF+M(TI|q`sSNXx|hyHBE+jTYEOLHRQSD$y1s=l31b&>A~{|ZNi*M|0++rN!F`1q@b zF5o*!C>M1nNbjWj%RoD(!>6ipLJ4zei9yU;p6vHXwFl#u$|v>qZ@;A9{(soa{}1~8 z|M_3BSbM#ODp%YXD79}qed-ULtQ>Z6;q4~a5X7E61(HVJkLJ(FAB!pqyHud_NWW(Y z^_i%QTx}{q&O4w9@jVj>G;M@X)dF6iJQV8n%M%gf$P6VQx9PRfBKPZb9*hKpCx zl1z4mP)TT_KF~@XY?HR%l5jv+N^>kl|A6=s+3)0>)esxfTyt@x+M*p#%Uh4> z6WX;3epDUUjYWt)K=oSzX^N{V1hx{@U=k;io+%eCG51^P`F}>}=SG)88y)<-rQt_Z z8?@M)5U|oo1O!~UawS)xxQ%iO$E6k`c4JC%o-4RtRQ>l1QvO2ZFBphVN_~Fjk zk?M}BR45w02x0b!j3O)Im*2Z;9iVIbiw4f_aKmvebN&LvFc>#(gD2 z?0fj|z}v~m(=-)@g=)oF=fac9=)E%dnnS5Rr;*GuQ**_1fs-f>(cl|XNyg&e@CWn) zseh_?Ghm;znDlRLV>69-=YtGl6_es4o8f!`>8OYOjaWSsm_iv)oZ2gdX!pzEf?T+G z#R~P}oU8LK)}R!MAb-faOc*eHxUmM?f}%$bAYEKB$Wp5UcpVm=iqmHw?{YrnnOE6}7XoV=8Y0 z{byDC@6|ihBv?OU@s^b#CG9 zoldbcqawMYR2)nu^lP|8iDQq#o4zMtbm#e0ynGtHD;HIDDGuMgdGqCo8`&ofWa}=| z4fpWC9}m)`1X@q&CN8FYvdJ)RG;EBE(9x&OC<3LTK#}(ITE)AjM6d0nUampr*cODV zc#G7l<-|CqaDPFAK-7Z~___Zq9wFxHh)Ri4$*9rgI!~x4x`@ zEId4!3!O?6(ilrTKnJ%U1>sYDR7Y$x3_TzJj+x$YPOsPsfCt8#EXoOVg^^0G%DnjyLYWf@{HTGK|G>-xGA@Bx_b1PZ=$$l;*r`$1Lg~vp-lO5 zriI(nocS8G2OX1~N>X#40z5iTp}<9GI#7;6!GP`%YBdQaKq;-LeZ-|*e+gk@`K!x*NO;b!Ewdv`+#&VYJ^4d&W^d7<{%_d4VCA}q zI%4J2*V3r&g$~-iA$+E7_rwnQfAq^qlFpm7oyKF`DrPAPoMNL$6Q|deJ5WK(kL2k0 z7(MzReWP(fV^7|d+t1>QpqFURQvr`<9|OV%g+mA^Eas`3wrxu;9qSvg1W^7h;uw>*8#G>raxx2T!-=`?BV?@EIW<4I=t_sQj{MnlrfVV+X zMn*|k9wxA6!dEf=xon1cQ9*&Mg5ikNnG0P;bOmzz(l%hai(k$G&*s~f)mI7756&Pu=}JKR=nGHc(6Z6;t;@XK(qgD6gs{Xhbk)n**r2Hh zV0pJnWO4`}z<>47lhTKiqb%howR|c|$siE%^>jyx1 zpbjwFWS~G!5Ute%x;$6bM+u}ldGcgw>Zb?7hu?=bm*C1Yd^nQ9^A4|+J>mM`WM@Eu zk{6^PrC=~Xf`uj&)rm9)Tqv9#lYkggwHyaif^b^vp2m?9g5)OmTABew49HmTzUYdC z967-d*OJBYRXn*|9L!|z7;HaKEy~u;Td#fp@dNV$M|IP) zo5kdgL%8q2fxA>}Om}n#Ld}dhm&%0~2TVSVIACH4CbI5k&7urdz**#3lD0shjJmEd zdsQVfk(9t73<4pOVtDLzWI~hF(_LNN8|4>SZ32b22Un8q zVBwSD^$=z1}lp%p&M5!Y}PT$8!BD61Z3G-eIlax#z-Cr9d5(%3RX z8$S>zCUqJM)`=3jwYm8#jnCmb3+q{tb5V>SjlTm%Av|WGTeMNiXWp$0gHgvHo7J}h zsDqt3#v=p3*x*#){6rSQrP&`_2r0jjk?}(!yI`#L z`s2rK#9K=C>ai_?VtPD@hJ4FotAqWB4eAxO6(8UjQ(gVn?1oG~L4j8?geMUINr`Hb z4{--yPzR@=VYWVpO#T66Lo{m`ZB5wQVk50K;H0>Ag5_0C8_L8z9pg}RVwHtwh&7Y~ zCjDLkdcP?w)FTRc`YcLMP5lK}oYMYJqHBxhI{HzcQ=jC$%nW^?Hk92Hs3jE1t=2F@ z1&2FHu_x}>53s*?2;|7`lRjCUM@EYgu4Za_TH3U0>pI}K$T)=v@$(RkH5~(uQQW*r-I=@;oc#lMpaE7s84hYjJQuvqW1f9Tq323BL4=1 z&r8!nX$Gcg#;6YktK_yNiQLcBT7Z26(`Rr1dpeKo@%jPS$=kfV`o1sgz+7qI8{m{? z0delx1 z?fD-u)1A}JXB3^%pql3Fin4`fo8cqmr^F|Py;`JqMrn!5HYW<~kWu}n7?psH`_x*Z z79k1cB^(Lu+LdQGiTDNlrx|(t+5Jv!POE%gwb`fN6>6#^jC$;}d_S0~8KZL%riF9V zs%zJo$eo}rt%%iAeKwCj+V^6!O4~Y=9T%F63fzRp2TU3xGF!p@s1C)J<;9Cm|D6>2xO!@&0S?1K=jTQk`p-{nd%yL! z(D2MPlhzCi3ts(6ZO;BtQ3GDlr0oFkmw_js2_*SPU)IhtGOE63sF@f(BhNfA=*gp^ z_g>3y{wDqm0CG;}Jb};j+T5TJkMf;K$&mWeqK~So;idKH9r>znKrn;pl`=?7%RUaU znAQmP8aJiWe7lyELTV-h6xd2gZ3(2u{8PU*I?A0ol`_^^^QFi+yuwMeXnz)21#!%vfsW>rI`ZxNmmbTx=XE0mX3~J;K8kWDzJpUkAmQGQ3 zi0TjiKkw*XBcp8fuP!P&%=UA7PR@3x94@H^lcIZ{Q&5kxZl~UQ+WmjP;AMtWVh@gZ z-{j}taBMwU)kM2-(j+$6Ez=(P43#1e7CU|5fGA%F0@U1dOPZmBlZ(f52*37~8~U6H zZN^aA0ebWV3<6pgVPHl^5`tGiD1ZjBML?s;riVX(?vZ1uO}_|ljqsXznsKBHg#w7~ zEse4?Qq+paV`66F0wv!@PxavU%ziHq&ged4SC=;(xo6pmA^td3|Ete#Q$!MXHK{f{ufR3(Z;I0)I)mA7X%ntk!A z5a|?;45uxFtZO~EuRwzPgq8X6&6Yu%uiw7;Y7fvq8y9z*GLkm#E8K}33&z!j|JNI( zPm+7i%%P7e(zl_^_iv zX%DNWNlg)zO#$Hv>~0gA%`vvTqTcGL-NgOd0pynH4BNrX?vvI=m18zE5+mW*4Uyma z{pv8kDED2z`_|)s{`bjLb-hU<$Z~0BsK^@43j-AV7Fm+ExRq@7wrl+Vrh(Qop+a;7zYURzb#LcV@vFJ@O(dr86)H%i*m zuQ(})&l5FAiCO8ep+k?efQA9Dx_<%GahSHin!?6IXU?Gk% zxvocmz*OWwl#u{5V)5&UpPH)-^L7~P_Gk3GxMQSoQTU~oxrip;<+_ajlFYeIGM*up zzDNPVIb2*_`RrP<=kyoPs@QT2 zfqB~lK#XJOxr*Cq27pA*T5;}+!1jiibu-VJlW&|QbCemh!tkx3_@hrQ`TpJ5G!fW8 z1=%J5YU+ar{wOi9*Hv|0kFxy zRQA`q#=KQNMA(oYd`<(!<8M#*LNDoswe}>_3vAEqJ{PT_-V#$}eo~Q?tj?5%-fzhs zB&nzAUn)OClFN!WP9Ny?JEYC@hxNpCPyp|YmDnZMs&wi!jivE~{ek;e@S4Ots)Mf{ zwdEc#QF}xVS5UA60x`~e3Zi^nl(nq9`ivVz24yax?>1?m0-KsM=g-R!KN@&KTYHpS z7bm(I{hJoRo+&@GVz;d=R33=zjiUnSgX-&U5tC&rL@Ud(8ENVmMHA1PlC{jr1qpi|^nh>sk&kbs~_1r3T9wI*)7M4?Cq8o)>^UDitUcYFlG}-}MYcl=1gdPl&wo$re(9uO9P70$*O&Pve3Zq8wJSJ?oP5LYbbb66)$ZRa zW1PchTDW6BLS4RDRhG1M#K&1YA&|0(yt1MwHc{B4xACqBQN`GsgfGt~i@kIdVq*5n zHS>}-k||>B=mR7IfnlAa z&&J&1CbuYs-c)KmI7wLx4ePd<>n~^sB8qKi&U|e;x;Kk<%M;E!KF6!I9)ViGC9q6x z@PxmyOf{1$>M~}m!(EcdfKe{R1I1;}*cB`R0%4Mh8!6Hm-paMAl4*X!{#$)77q*Q| z^y5l04iqC0GYHO?g6S3aqshG*CDpcrt=+)p9)my=W~T@*YaId=@88SFR83XsFLQj6 ze^SU*&s+6ijLR2K@b)whA*RuIvk$Sn$uxPLoj_ES7^uyxEoN!x+iPBSGYIKP*xegqZt{DPM zmYbhnZuZ!%m4I^8^Ksw3z%pqq=_#v61{5kPa4ik~(eex`=4&J?Ss4eFqBcXlZ{Mlz zg}J%49_9&qtRo}kJOQO#EnH}rQsfl;`XBZ0*orsxIGG|lfj<;+>hxCM*y4NcAU4(TrfN3R(~RlatR z?TwN6)~Nl_r>=|Ye&3H=q<}j}WIj#_%3lN7xGvx^YFgwi48Oc32+^R-%JBU^ zB)pH&UO1JaStdKT0cHT>&?misoiU+}sm(3MQrR4}D`7oND@R{w0<{864O+Eqc^$x{ z4prM5?b^x~V*AGR(McJ4H9bT-ox-jEnC3FTAZvL2)^#TMQqhYa4f!4ymr9S~SFUsa zn8FII^1<7WHF|g3tFP0h?R~qR?Azm={U7N|7dAKXI(X^e0nOgy+IR((rCttN{-lGS zOD{Dwmrk3GY}~l>t5O3ko%&iW{pNT0QQq)%flAMt3O}pDGOg06VQDHp;Dq)X`e^IYimknQ@ywJcgh0Nc7p|-- zkbw$vAq}G+c@-(ioPr@QC}61NTKJAxmq?+)g3hAAJ<+Je4gdU<_7hJIF%O`-3kWa= zw8l_gsCwKY&7yL{hFb)7Z)MLgQ(qc(N_8c1O9EZSvrm_{(nnQnok}adE^{Cd}W!|PNQNPa*>(!?AcSWTxPLpQ#+4!>wseq9})iH(4A3$x1!N#n@Rvc(dG@k zeB`5cFz?`=xZ7)?S!1l@sf#v}8BeaU2vxwL7HPxM>tgId|EsX9{n4Ijw0X&`wTUF6 zBoTWeHoyU5F!%cp0wezt{F4f3W$F7FN|j&ZLD@%9GWO;I^D?&8ZpevdLYeY7@^PCJ zSpceSyF4()Bj6`)2*OI-r~1^tP88r9zD~zRec)79XyiI5y^j~ug{)Bf-IK>Wgy0xm z8N4kuTWl*!rcVU0y8&*Bh^LhATzumAD#byZM}qRIo^^{}b5v|NzcLNYF~CMsZTSf1 z8+f}zna+v6arv^n0BzEg4rR(lyx4d^K;F@lN0PuoDdNOXUFYbmFNw9)-keRf@~dp8 z)({gv=t1G`(Fm`^O65q&qNjW|#H~jR)kNSSgK}S%C;MN>y`}}5On*I_Ip4D~$yQu! zx%Bi_lS|v0-Cg7h_ktahBf~AS-3&~pv9H%U4~Fp27O*R$xei~eZ1hm#xc3}5(2KU( z_0pt)qedyC6ai3BSkvLE0$+G|c!;H<6a?<>*R%#^13QRlWR^Y#y-doAe?2$@_cR0k zRd`b*kgTWYJM4t6jpG0d(5?IsQ6PR@c}#)|wJ#pZ<73jm>g}|isxW4a)rg`XL;eOP z3Pdyl?Y@Ht85cPI(n5AyKMn5YJ7!zL>C>}n4naxE(%4~3lnSBOt2|HBqB_w9F^tI<sRjbT)xPT2qeJZCC|RT8%-XZ-YT!%__!d%V5Eule)BD@yoP z+~V-giZDcua&r7w=N6s!>R(Jt)P^43;*5%6>8s0ecg~Vt=x&pVw@5%`zn|C>0V^{T zvW=~mVXv>#%OQdk1PYW*@FJ**x6Gu2h95Ol!y;oK7@5oaYLPL7>xV31_CO}F#Wjb? zrsy&?$bOJuEHa}1y14sCiznO~uuXJW%zoX@$+?!HB!mzUqWJYO9s}L1sym)31rI}o zifdGCYzyCJTR@ynC%F$_`cP-l+z*p*;%~x6hDUS1Gi${dj(OB@B{n84phkRo*?AX~ zIOjfZmt*#xbA3WSi_Hrn_kg*=g!)$tu?eRqvYi~jq`J45dYJcschnzYK_Z^L;`{#iM|qQDa+KF&b0 zyqg)OdZ1sJzo_N)ul0%?`zmIpt!>1e8)b`?r2v)Xn<#zqnWLf+Ps}KxUlA20<2b<-16WZsr7pv+#jYSU%{@`bQC@aY+Ln)Y>C`2TI$UXPnJNT1kXk?@v$$WY=A$9Dg_V@4H*($o2 zMS+*Amu3GpYxodn?6DXV7C$7Q7b&?%UX9G1K9JFGKE4#e4??spZ9U~^pUX{*)QZb0 z&pugrVEx&KwF!HoQ6fLtK^G$#LTYtP>(KPBb5NMP_v>==0W>wR0^&S^5Z80u(OFg) z6kNS}wTj*5&niwJ^NpN562diX(yn%GQ|T%4`M#9XIEG>bMIWzYdVQv@E+g6-=r+{W zDZ@_7gcRYEC&1Lb!jZ{f(3~%x)6cZ9jjY* z>RgC6h{)6RW{42iG4W7hzEYe>={pUNo??V_FP#iP1|v+@A3d7=N%3U!TFX@L(x`R2 zUI(KTq*|*MSn-+=VvK(WK4GhL(!Bge>WXbDg$A>3> zJlA!;<^s0$vecNDmQ8H1qhp_y^e;{Qc3K5DMwMH_)BgDv9^(Bht8v#k!p0~WF+~u- zKO%wV)HXEXgiB z^mVpZ4Pw~-$Y&EJ+_lk1soZ7U)yJoG<<3r{LXg zTfd!;w5td0OudMLg6bMBP}Yw8Jy;~Z9sCQ$f^CdsE$wXMt)jhz(vxA)w41XEyHyqc)QQj>8!f{=pe8+RsO9gfTauDw3*&}+EcK8rxl^;BZqKlK(H zWU>;RS_C>;(gwC|dxq*&RreUt2)ufBb0;MzbTK%gF?a-!>Z-9x;31itC! zvZYwiYL>XJUCYdV5*op%R}Jx3B_-uu8OP&AcqLlRhD&CYi%|&js%5XdnIe=`UVJU2 z8d+l?%16MYCUuCTIhYXmL-LhUXCkz^&hI}5uICyuDTGLQmlr$1@wbC6iKr{`Lzg-h%3&&-fhZ9o@%!ojuX20`wUTwyW)gl?&@`azgk8 z{<@-%jxJDqe&mre;dkfR@YA&OHsBj=V+ypq zf~H%2;i}gzhe&4hM#v*{_&cozHi~Ve>m$7*j1a1iAMy2zf?ChcYrxC@j+)^P+sTRw zuyb(UzjiL<+AgkG!V~*lzZT|c*BKHnMkW0x)@RY)=27GSzyIYVM7YrdE?+vy5is*}R z%zzQQa7dpL{jBZzHuh?bGS~Hcl?GfY)(|8cQvHpLjMjt)Dl3}6W85Uvn{41M4bR!i zjqCh@3ptaRMVI-DAm*L50ZX;eSHz2=u(AWhJS(GO;=dSJuJ zU@Ox@dkLIwYm!mdv0)}Dk-nSut< zUIG@Pg!)xn3uJe}Uw>J#HBs3ad#*PqQj!_u1oxD#5BL_w*I)s(+U=R&W_uKI!?)oBLLyQMT?t^3{>l){aBYTN=mdj zxY^8Ia6lZN7)(7(W3$Y>7IX2@JT>9#K>q|61IRN?a2W!OnDOWObVQsWr2lBQdBq#J zwS$l^0m^g=kW-ApKB4|-|;7N2Cl~>8r`71>5 z#eYW6PFBBGv60yrUI2ArEA&r%?_2o|*N-*2P1_B4gGJy`Qi{xZgOv*BEN0gBkC}m? z6}lzjSwu}zc(R77E9pOsD6Q=3fu>Ugcu2E3BJ{(XP^IG*e}k~ZQWJ&Oh@3a%&v`El zTW;QoG(Q-VGy1tdM~_}a-8@9q2VEmy8UZ$T*xe^jNo5suQR1ZyaMU)Vy!b^j>4(G; z{#f`bumll!OIkvnGE_$Mo}B?ot(ayHg;ySo~qcDH@;TXyHB&%l#- zb#H)N?^@;igH0+0L}S7|knzwvEp=W07Hxfn@W5JU56l#w<7RgDyk#{s{;tc-qRGe{ z*}tTG&f0(VIasQ&g7ldJyiup#7TGs)73??in^;Gp;Ah#zRNjHw6BaB@S~jMRmj-;3 zK3DA$3~3w+3I0}GvS zZ=gV#w&i^4wYkAYL~=jpx|c9cq}Dn$_smAHf>dV!6Ns6Xd<$Mxg-11TuV$`s9o)$2w!b}jG3#|N5d|VXPlA?Wb78`v8l*D7Jl+6j z+`f}%S;{H62riL%R1dw;e-WC*4K}(G``VGtg}!&r^5I243xsk$X62jfb;JspT1a9( zmS1$yvu3jEKJKYTCNSA9#-B+Oe&y_!K1cy>IBHcr>)a1^D7%2oFiL8wBgmtNoxvPS z6C`1>R0G|u*Ef0r_?*0Q4!t#$E$*yCh@oUH$O`PTy6gH(HfJBjutCR~Y@8Jrka4ql zixwjCV1fau{K>iu^hH2+x z^n1!hY+nwcijzql`3syo)ZV^sKUUyj55I>DIUK`sYOr_t`M;t*U=+FtDgHPGC^5t1 z_7F5=k09raf ze)~ zJbebJdETGtpYD}Ee&`WBW!LF9kd~<+1`xmot5;tbw)A1Q6n?}HW@LpZMqQ%EIo?|e z@_Ko^xhw%tXS8=8ajr)obvmf9aLQo_bC!J+b~}uxtxGzPeYIhXDaeb>R3A9dPw2N4 zLJfAKY|^d@r5%m_c|2wUxAh6!YXoTpAbfu)ap$h9p_<<}Z;z@8@|VHULSfuZm4`0b z{f)9o{{h76pcIg^vuDoi+uFQ~T7!lS(`>mR{!7w>2PS%ZdHHby!Z^%qyS1hF@!7R& z*J2n$R~MJ5z)Sl|?Uv0MSJ58>2j71`(Swr@Xk;(v-R@NtXF~hRe#PY--lPcIN7l|s)as!_I{9@)9)BW(9DwWEr;QPX zG@|81)|<9wzMsdqtgND@DmQcJngE9v&`!uvMbzxYHrp-`$3ReCFgClasy%3W(J3uN z2L^{Bv7Q=>S;wEpqk1<=Qpwv=etJvz99&D8=epHGyGjS7n~7H|?3G13{-ulg zV|$NT{!58cQ@`eqUyGEIO8<5x?DAj!@-?--j1*V)b0lQiZ?Uncnl0rp5nX;fL(Mk0 ziIkLTAu_U5)K~K8&0P>XIsG^Xo)>;l=(3JvXffCEj(_8xU0B^66NP_#PBVhKcI*i6 zKFz`@x+WU~XK@6QnG@s>9;=*#ubA|(!esq4*N%uMs%$Q|kQ79|k?A7QaH}kt7X1tm zYRAr~TW=gGXDLI2+?I>^ZYalP>mO zYGP(~kNytJWZ88aoA<;c_LeVq|LwQp7XdV;bspH48T^|TfVI@(C4Of@a7`nLMx1ix z^i%Fk71Uf;u68vV{x&JZl)sHV6R3Ee&=>MPD`0^$|lGFke|wK{y`#_paN#_1v9~4Er*?(XQ{ouXmD@r&wt7 zx_~ue!HO?d)Ov?9z7r9O6WGFuuvp{qIikK+ePj)y_-fMQ5;Fk6)4W5BE|&8Z)rqvv z7eb*H<(${HZ4DX4T#Pi2nqjg-ITatn2D5W7{G^|d;bt%ZrOjKnIw2jB(hUa$eRdPc zPEVLXTI$UdvZCdoGU_Dm`4kxZ6KlS7oh*-2C{Fw!OXirF?WQgw4?X>1_LUk`BDNPU zapQyahtV)&{<`-U?(5sf$ALAFSS3jXPI2tW2}Dzjor{6j*npDAQNPszRQZz+j3MDa zGZY|0sx7Kf$3J4L4~H8S`VtBpVOVH`=}0iC5)kcM(KCIAS{ioQO(d2}{3M!$l2cPD zAQw`FhMqWa%pd}T@SGBVZ+hSu|8<@?1U0r`NT<+95K5DTH3%6 zGZLF;*{jtzY4q*;VOMHvvTWh45q=Z}LWP2m2#(M9dbi;L270gvkXa8TU{l;D+A*q4 zzLrCUDGfTn>;LcDqZt^dHld&0;t_VF~Z(tKp zN2&FBr%C)z86<;2Y`f&?hO_EvOmZM0=tOhC8nS+})>TkD`xmmhlAi|fB95SfmGg@u zw&$Qc!W~h4kt~&9iTH}6mgiGji=i!0EksX4CK09W;RYVB;YvPDI9@zOLzpkxWBgdT?Mj=x`~G>HLu!=JKIl7Gh) z<&;HMnFSlZ8sfq!!ts6wNr<1$2lV8U7%-Zf-mWczcy2EbP&T=UF*avdBzGV#TdrIg zjaEqPlR!goK@#~tf{}cTuWn)fz}*C~SV=`95)s+wEEBEtAuoc@uXhfIJorhhU0e9GO)T)zJ+dctL z(1&i{u_NMJXpI53|TDA z7R;)XvMnninOT6!#IqLqX5hM5s|KhjP6LBdz|fP&X&0Nsp?|djgP?=tjvT|A3b_M-#f)A zsw*V7CfU91n5TG$MtuCyS={QGJbut3j^xQe3`ltumWV_D`nhIFMl^ zEtyneXvJurg|Trvq%`?xBxtc(`sq!=OzBWf-nek^eYDEV!_?NScWtMvNnXb8Gsby7 zJ7|Dp=PfcNe#19BK5*lNTkK5idSD0`H;+1F;aogGw>8<~)ZkkB78~msv!gD+N+Bxw zC4l1v8Q@upe2t&nFml^Fqr#IO!#e53(h@!=#-{fuy5hMs9 ze1h=@MTw(ts8Ex;}P>JV~?6@8=_CydXcrl%)xn z^x(k>s4JO;L~#65ZNAz^Yiy#=-?oxY-*<-v)nBDYITtNAiK;i zn|xF=N6n3R7D#g6GOX;C0jG~ZgQ3F|xE!i^!FQ2S2x`c-K_TTvjhZ($Ci7}lq~WtA z@Bv0Aiavb!0x~Di7PYQy|0WyIW}1(k?~+wmWxrlhI{-i0kYxkdVpad)+8>KCGG~yQ z7+<0R6u?H+u$6;3!$ixys*OP&D#HvSg3~6RrMu*=FZGRPAdVoIpv{XV!G*#v3X=f; zF$2J4%ULep6bKY?<3rqx@4W4|m?-A@NN~1W0-r<$nX)J@Vf^ROBS&@=-bp=;;;gb9 z=md<}78Gntu}S8G!msQ~@8WykEacaARw7Q{P76_Qk<^>Pw2Jo>fC}Iwlf##iR6C~w z^qjIx>Rh1ax03|2kd-kALju8!&{rt0 zJaBEf^H{4+K=x}IvX#e|E>tjW1~xd>C3EM(sYw=sBWA}z{xH2ZLn?Nn2{}Xz|1uw}wy>ZxZ47=gYE%#}!snbsN#y682z3oaD^fNN z9@r{xHKQU)i&v+68BHTELqL32(IzjWmgVynS2Dyaswv*0Osi4N;9*klZf+Xg6bb8T zWU&%LG{WIq`iqj=181As?vx` znL0|aDPUk#NN9c+Zn1H*X3^j7g`EhQR#|1#WfKazT+T0rxzB+Eeal^<7J>v3XBsze zF7%{)7^p`8FxQGN-FaIAuaOwOetA0qsxuv)LoxHAfV~(zQb#DacU*Q%0?!yMkJ+Fg zd!^{q5zncjQCPGnSJ}RHl1s0x6J_cIErra@V)4w$J9PN4=EfDIs(-O_Ef6KiunsTn zqblpTflB)y9@aj!X6ZH@2DmI@*$q`K$#=~kT1}}PMBGg|HWIfd1eCB!zzj`%Uxgp~ z&y=WbmpvUxpTcueTHRuz3ha(XcbQoLQI@(w3R%L_r7Kr31P<3rW3{@>1`uX(<=TLI z3+w243(N94aa$2J^kyW8@`2fe$g;XKor{+vDZ|Kxk8>1n5geg-O1&-j|3~)oNo4Vn zQ+;gN;7aRQH7P$Y?-pNm|CfiqEWQ%`FRIq~^+WwX;RxBwfOn#o0+e4C0?5<=??*)G zN0wI!gBi2xz_Ak{yXHA3Jacc?aON8+wv_A+iJy0dVb0AcvWKaq{nU8tmizQ zgAb}VFWG2|wzotw<9l?rc+Ms9jYf6u-8wkdWZ~3_CtrvOg|P2bzcn8s8yTIBiwpCp ztr6N8xD?eB_BOF!TW&ksxZ4C4ie;U6p%kw_S1jJ^}hp* zUGu@NQIh4;X-%K=`~8W4A}1#6v!gpTv8GHNqxy8f!Qiyv^vRH9U4(Mu{HBN93y8oo z6Jv&t-Z5LdHS#dv9oQ^cLcMOdAfA~sE^E4VC%CRftOaLK;~bPmzQGB3c(?g+WGtDX zo*PUz9T=E3G$4eM1@Q%$Rai;-m?o}NTDN7sf^7@*7E2g@Ljf{(rYyFFQZpZEAb8dZfW`2W{?L_m0-f$ zk#zdx%9mHynaoV*Z}A0?>V+E;2pwVE+(h>=vxXnS+HNy{Rc0vgjd+XGcrFq(B_tzX zEAvB;^e21N{;H!f)Bz*G+H)fFp}!|3=O%u z#L0h#RoE-FUw>@nW_nH9G|V^mmb!nv-JS%nO(x8cd-2<%sb5bbFy3jNEmH>lvvqDeHIp-wMQq}QYZwqo~?2rrfe;Nv%y$JndYhiX5 zEnX}T=yky7WiMB=yA#U8VD{{NVlLJ8k3Xg&m=bd-UkrwN_3o{gj_(s!Wg*@^C--@ffm3^jI7B!Us6W-Avl<1&5}{+eAUwVIp zasecA2Etvn8MT=IhBAVQK2ld;^e`zqLouAuS<7Ekd}H0TdD5LyWS-uaLK$ACQ*sweb4<#|XY2QA;X3z+L9z2Rl z;auli49Ccy;fyo}5Sq!3Mx=(yMMRNiN+64LS^ULkQ$0}6Mo!0*cOmtrW=uFLIp8<< z6>uhw?Pj$R`pP5LB(|$KTfJs4+}?x)EhVrsa2=-8o^_Z?n@>i*IcEm(|kT{T+8#W{pyUSRRTmSp|V@JWXWX0g%a$q zD*Q4UFxlg6SKmAP`PFqJlo&0H*t_~~U~QbPZsSp-{JfRgwr{U(w6^l?M(s9CCm9mohWQ87`T)HbT>auHhQ1;W26QkzyLiV_EdpvcGC#Ow zAXU+`wGu*e;e>4}zPwdViSKk#NM|oX#jinb6P4$@w>~uB$Dw7TV_LSy{}< zT67pW3N~SPv)MofGQV#LHH1<{~}`xeMs3n@~<~aVj*dMS)`QW`*UQu z);gFDvBKhANYG=tN40$NmA|zzG7KvCi)>K==-*%OETkX_O_h`+n`>WQS>uht>AYe& zI+&6U2bw;Wxz?{TU%OVand~gay!{PRL~Nw|6tPM3I{8ZR^OZMFR#fD;R*zN!T$FV@ zqGJHz7Xx|^rwv{#wWm!>o0s1Zljr|q(r8^_HFQ@GH8nl=LGgd%{2pf-Zs?Y9%$LJ!Y3P4o z|NaRS^%e`AgCEds;D~XD3IqWqT2BO&)&v(IH)_Ulz<$`?i4c#u>>0U%51C*Q$1H-; zO2$9{89n&{(4GheWDOOZ6-7Sxub#;Dn2U(V9-pk)Hn`o=1q)^ul^LnEg;+_Z0b&lvZII$V6wrl>nvrq46Li? zh!G}>)J}z)*B4D6l!Pff#X}nTbHqZmkTXt5%Cc zT73JXAJYnnJo<+d0T>Ym%9=wODO{*eo~{o11Y6#WG$KlH&L&jGCP2vp8q-?_XY}uQ zI*Rq`Qv^-|Y5KKf15EzWTB;Xm1Vyl53o_vLz6|_Qe6ZmC2_Fk=ZFK=a2`dOwRlE_ne)`k5Z zo{wLRLHb=bCd!#zsu{E; zBGnW8Q$1Z7Q^;;w9t+32h z)orRfah#!Y>~R-Sh}87yShn(XTJ0d+)_{;e4z%E)Y>kO<;sB28&fPf^8uL1Sb0Q4? zXx9$E8lk_T2AMWJdi?k%gNP?Ts)|YyH~Dk%O>2zi%~MN6Y{eQxF|}d#7#Yl=@DsIN z`qk_*Xu0|Fsmm`ur{+I?^oW_7yU*&Em6gfB4AiWc62zwV9@w{bj!89sM3vzeydo_* zBdqll*P4;r>nYdynG&Keho09t>lr=pVWfI*{}vDQfBO*R+ra2vki~-2KWm3aHos8V ztl-0kS@Y)YBrH7D8MyHr-&zC3qWAl677vsmur~4P#YIpQ)+oS=(pk(qd z1A*AcNYCoUe;LX*;v#9esXl1id%?^L4=S1xyNGsJyhqok-)!*ib(hUnK=m>!9lz9oObvLb7f zc9)`F1f~w+pms~x8QH1bqwnjSi~Pdpn_3yg&bl_jJnM7z(|(EL9z|hiU}XI2^xgg1 zQJ0@xjx6c_`wp$FG07|Hk?f?J) literal 16057 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%0Ay1!JnNi4|c89oed{=yGpf zw-S!qETO5v!vQwKs~v3Nez5m)jTX`8OH|eXu%4B?MQY82RC?3}td5AJk$Xj*W*?U! zV?Ch0Ch9&21v1rqpv#tMxr6<{h4r2UCRT5GS1RQOp$0pLU58^W0mAl1#kl!8yF{zx zx6YABTF;dr=I{4WNMLLW%dtewlI!#H91nJc5v6>+d8+)2K^|)MzR@`NjlGTkj;m0#bsG{g(<;krpvVG4NVn)A=ylKPCr)9YOnyN_8KkWsxe*Vp*fHr-Wy7_jc%DH)NK; zDeAvcc#UbQ1OvoW?FtZ)*&@Gy!5rlUi(QYw$ggAWK8!Ba2RS3u?H*}^YzJ8s%1oYZ z%Z$Z&h%3?Bs?nKm0@~Y55xPEXIGOuXe+~Zm^?SDDmd~-Fv%s+~WMo@Yu%p5A5Ns6K z1Z0!wy7ZB@pUR?E`#N;(sGFXz2kyI{ga!+@)#3`Hfy6}{FkdUI4v?S3r$#W2I_*hk z9Xgz$t z=wri1yC35&WchZc&D!oOL}tU|ERZ%AaLAy%DyG}S3ly5levwWn*DWb;gfk;+Bhx1o zkvXih{+i6I_^Iz;n%SkY3^6oOC3I@KF;flcM1p}(gZ9LR8;C4tO7f8N7@qB9ZYDJ6 zv=~uLI8WoxGH=S8ma8^ju|9iL>-1||3Flu_Qa4mu@E4_w(mRMXeF3`TSp*Nw zdGNU^WWTU&s-%v%v_sN0S8>h_Dvht2%5}@oHsX-%?G-bs=1OF%Hag}uai?{R{mJQ! zY!jamkRbhqyJgO1_Xh4;?iagdBniE2gA6K8+$_pLYQyA8S3^$3 z6VSz_U)khB2i(i z-+2=&G+Wg{P?qe8s7!ZfnGUkOKZ@TU$y6$RGfWqR;3hvj71Z+nO{lhUO3oM|gfAo8 z@k)O=;ME*tux^Szjw;)y;4>6T!_owKD`aQYi%^CbE*B`dTMnZJ$eJxkS zGmiKthO6^R`U>h(>1)4Kc+uZ(R4l64^%);|0DP|}KUHD+E_Se-t`HfR1J^k&GBJEXQzi*d~@{{AM^4k&CYl!u_8uWmB^9*yj2r)I`^y5Iz(5@ z^yJH6rFIw-Ka)R~!35xP>^YKS%G6ZvDnd`mM4zea{5U_Tfny?%w{od*yegh%c)Jb{ zYp3kXvZ9h{hWL2Ux|jfrjA=|eovh`iGUOHF{V|nV4x1Np=jhP66oxDVOsGK!lIwQ5 zHEADsx+6c>kak)Ok)NGr)gE^Q_l$xk4}8V2=pInYoAgel6OSt64LD=dvsK3wiOlkK zwG-4R>8fv`f9B)e`O2ZPi$#GVsl0P$Y#Hgo5&B&NA??H#N*DdwHf^faPrEvjMh3=7 zt{gP2aSY5BI39_Y)g`HnRY4oX=>K1ILjQzJ|BkF)5>~-*J-Q}=@>#=@&?Kvy zk*QSPmNi`d0!!>h3b)O^WETjPm*Mc6h~Z`UkkE&aeV@)4Tsa?^jwmN59m;u>U$G;?ecB760viQe+`AV{5Id2 z|3wIptWRGBhKC50X>9}#69J??y#uUM`ok~&RyVT4aRfDMHLDtspjkn*EK_}LvD$~0 zvEDW4IwFdMsO`hDiXwC_nq~dH^yy7XqgOn4 zA9;pxpq{^b5h+fx{amxiq6#`!>!~Os{w6=Lug#;`!6UEIsKai}m52_Y?EnY$Bc<2L zz}1aO--kwRro2PZlJRm`=S+S)DQqdVRV+7~Y@B}gCsT8ma|{Q7t&cA{BZEKA*LLFAoD~U@A4R}(F!r%!XY2${RMv>) zpX;hXxO$;3z32^LDwJ~$*_@nJ^U{XF7T0aL1+}11WvMlCFkAC_y@rNF|4rjP@eC!`)F1FYXpU3rz&S_1%p?K^BR+PA>w=Ro?9A* zIqSX9(~We{MnXs-JL4SIf0L|j!kdI03aKv~X?0PSIM2-px_a-?b6cNWj-VObW$kd6 z^q791-l2fvedIRR;t;+V0QY%|k9=?{!bX7#bDUO!?q8&4+PgsrD=rS4Hv{37mRO+j zXJl~JJD++tcqp>%Dl^3UuE1<0(C4s_Lh{(8DTR#;jGCg@5*0{be59Ij-VFp%pwoH% z9tMek9=~&h^lN;TC!3Y~F&x*;+~pDTLc|1J^ZKV!J0d-8*y<_zBPA;izs_sOP!o3B zC=Un}6Kd(~*%@cYlyT7eZ_VAG3!`*>{a#p+_$^`Y!&IxTJdi6*w6oG6^T1`y z0fLUzR7y3-S0BCz)EMa_#JGDqmu~$i{B0i3B--hdSI1wG3cQP(K@pIyI%@^bL&e98 z_u;$;sjK!B&omjL(UOKM>kLnIlQQFqOslEq3(3-R1@LU3y@*?S_Iy(m zcVK3QXhH?as&){42+ED-T(*X+R1d7LpGF~gpyv(335D~RMVt_N>ZElvRqE`Ir<4C^6r*I#=={i{s;L|5ci!5G?^fWfqGzyJ+ z$26mT!BQm>m$dj@5B_|e;&VSxL+D8lfoqp5d>-8zd7HS{;qbxByF`o5<^~_=nswO_KePhnIwkozt4TaT z5}xc9t6Qt0BaLEQQT;r3Ao&!}_MUdIysPN*&|fV6J#I#%?1J+I0$F5!74soBCiJgp z%nt`hwt+gE`WV*MJdq&f@REh0B1ZP=j%_=jF-KQB9+cR~OiC9)OZ7!SoW$ho^H(r! zx~}(~1nl1;Feo$#<4!S%&NVuO!JoGQ!J?7%QgM#hXe%nCfH&9$pdqQ`59Fo`=wsT! zTg{=t1XJ&rY~U%SW*JX=`2j*7w;RB=g0z*pDtie{?_$FhXW48+^=5M#mBxs@{C#6h zBg=d<4~`E7xq8PjHysSVCcX;3C$qGF(;8pT^%9*y`K#PM4;IS<-$fRo`>r@a0?weT z;G4n1#Cra)F@*Tjn`@4@NCxF8fOsab zwT-}eBwv}w%?<~Ew|~;0=~hA8hwCSXDC#_l4|R1%cRM5GG7fAF8QU_BUa~#>P;*~p z3ZG|QizbRvC2iC!r?>lUN`rc|<3_;}x6ufLmEvm~JHbuSe|v5JJ81Yf4f6knE&l4(0nW($ zMv8^P_Z^pl>?Zj|-?&+XGZ-7?sE4XjSy?4GvQSZuEYZ-4mb2Kt9I12lGlk4=1P2Q5 zw^lt(18f{!S^k<>U@dhoxHOa|jiq#}Yw$p@jbB{+SvAqM2CtzM_qZ5|Cjxg#cb` zP#~OIz|r`-o?LHOSdJvJhD-}duy*e-(}W@y&WkY$L#8D4p@!2(+5%H+bVa?weTWEo zvQHD4H*R*)PK&BxANqbO9Bw@#k^ow;AO)nWM&9x9hJi2cp}P)BULk_?v(o4Yn1Ck} z21%*#0PgrO(!$akwL1RKe3a)bCAF7RF5bw7PV!<{jktL9paDH8lsk}B{ub4WkhDEF zVBu(TPpqPZITH&Ptua`JQ(s@4=zBkTPN>XL%F){WWLDBuoo0-eP;8zq3b}syR-e&xe zgDJxV7|$+gL;hsr@FB+{vaJhh9+9L|)2UAi{M}cpe0|eXEddQifaO<4e*Z|B8qSew z8Hik&FCurXO=!JfJF@(*;S(!B(`1}Ca%D+aDbKj+ed~e>m|HFZii}IKp@nI2R<)m+9rNd|+908^dnrb>`w zK(%pVJ?syXB*luh$6Y8Eu|`m0pb}dD>n=fS#4jcA^FA{<56<3u zO;zp#w}p@LgLGEQsOG4@SYG8svaxn^by z+TI`BP%DADY17`!awJk6C3v`(PnSCdk%sfi@}z=yo#gmjdvKZM@Moa)1h0>wucD(xX)it^2a zZfk}(;xv+G>E+`bco{Ei@C`G2Gpq5wgDjw&EO4zK(0U3hs+|^q7#XclLt@z$hZHoW z$$tT|Q5;db=+7|%EVd(B_wV_SEI^!_IVIEDfyJc!k!|y6zeOre9K~^di7J|V=Y{>! z`%11jtU;VmGm_8T5H7go`m*1c>e#5SUo_``{Uz1N1h!Ji=w3H{1S zFH#OZldlGpZZH68(C!MKdc^eXz8jYfEw#YIxHX z^k4hH2;9|q*tPQW`F-Bmw{{3I`Q^@?qXqVhT{*)TYY$IN7(~SYQ60aPX6FrBaNtiH zkr_b~??I8flRs+p5+|9mBVqk*L2p%7BFYKw^Rt*wOtIh4|AStIVsOjv8g2+;EqD7B z_Vb6&}^KJ zHsZb&NxDIs>8h{syrH;nSGO{JJ)N>{uszO0=t=D1*jo2M@7{ zIjJLZkzF|ZKs7>Ut$|oTqQ*8Xr|+xo8y7so?;wM`M>ZnYikMkRGQYwFv))yW)d{`* ztD8SJf9AV{d2&uONfZ&RMYAXY3%6GHTM~v7Z}q3L%h>y9}sFIUdeSLTV%>(bbxuzEoq! zytbfUN)e+*2k@m=V*aG=K$}CD*-yilBkWRp&2T~D52%n1nl}J&cU8wbT#dPxcR+-J z%yjp>T+!`ijKmf~Bllf<$Rd2*-Jq#_TyHYkDK28&e(U);i#GUlH`L8$TS6G76%q$5 ztc{-$@0a4pp4A|v5>@jioCG#$SW1G?S}IL!njRaE6mHW!p(=!(8cOO74%c2mkkBeKwcmEBZSG*Ia@Daho0=cef zk!|^LZREEA1R~(!Bf)iT;&&1dt-`^t~Q-YSf zhZ>V_WEY3Z-FXnA9-ah4i@}Mpr-}>`H=u3ya=_qESXL20)Yo{ks-+?5AM{Z)EH-8H zUHEtTY}(79ARWpf$OB3F>1|z1ise1O5nKq)AvjC!>BlPoQCk`S1>oejJLNe30dlGb zBBFD%26t2(w^K1do2F-oc;ZbbwCp*t$)kAAw-zE_9-@p11bF8LqX0PW`C4xDvc|K_!6$G6oN!)f_Qk2h1+gf{8G5tdReqeLtT7B&I23gWFAA=j{O~G>OSHGq9 zHq?4%1)xDM&_R;ho4rV*tXWnl4I45#H;|r`hO?~e+T?<(Dk!}tPP);RVW_;|=x-@bpH`;Q>yzK=|j?tIw?1|Sy9 z0&&#yo9TwAB=;fX(E(n5*1^Sk&W-G^D=5BMXSWpM9q6TQ|6o1G*Ya1m;d-1s!viCB zS_=xHB6de_H5iTqZ-l!Nte^ z8_2*69=FPs=dUj&ZG5>Iftz6rRg>!VgW26BWQT_fT05-D?bT~W2)_Rv6sp=5%K?6a zOP~XZ%6fbJqbc!g!$355IAwX+A1FEU%*NuquO3Eh?>FfjR)C)d zU*@ia7w6#-@)(j=ZvR;E@Z8kdzAy1CCd9BFUS8;h?C)3tC@`p03TiO1Nx<-3j&*nB(z!EUak$o(wIkxEx*a&8jPjw zePsfR#ij-pq8)C0u2=mL?ukIQgu_T`ag8QYf~#sz)VNTR(V9%JTh5VN1!i@iEt}~D zp^hutpV!r_e2)e*YvtpO8Xtz*hYKoWim*1KHPRfnLf%6Vni@daM?vV6A6JBx-7B z=xl9gZciknz-rsL!v+QhNoHfGr0kM$mbMnT!hisDm3c;2t;*-P(99ho(ac45)V9W_ zw}?k!J({$(m!8<~HL;GCCnXUn)DK3j}m`xU_p z=gr{?t)KFSXWT38GGlN!ddCI(ZO_hk+CT3{Se{0-@1zSSi0iq8`<4O0AHTcM-NMZY zmar}vWZ}WV;W2sHB>Ms5d7_e_5dw30Qi58b%~b^k?d#iyr9`-mCwRK*(=NVMouw() zMJVqKH2BI#-ZgUvn6^cSA!w;j`3d#Znb!I5LO&82k17h+^DN6;bX3ykrhh3ce~D`K zo%$$PPjK*o;Y}M<9P)RHOq14!+xL~YVl&?z{!T2C{kPjq7H3v?ehgND2{KNR?cSAd zXp|m5#@K5CC9lEs*mMETq)yJ%U@sf?*_3`rP>vvb^-QMdM4ntc4ERHKv~owx%~N=G zm=er;KA`SoDwM8y*6CE-g(lpU<&f6lq)(|8GKmXlKJiF{rWRi&h*WRX+|yk@<=^fC zUSZ$v%e;JZubP$`IK+oHzy-&S-b+E>pYv@ac!^F4;+-5>CVlBo5>|dF+gL~7{s(?4 z2g3I&M$=+z{^_M?1}bs57c9DDBokq7AAfC9TT^(2f)#B;3;HXkxpi;NHl4-J9h;O(|2f}1y zTjcM~>%{Em7ctaK(;vOlSfQfMr*UPSEo7c+ zY*~!=Uc9W9VJ2JU2s)yFQ=GR6yS`M(}W?5$&L@ZL!;8*PtIy= zx|n=s+J$1Cyb)ZqiW4OTIzIS;_LQ`P@1lt9S%N$v*WF(Lle94#yk?zImr^y+QKwOJ zetl-ulT8q(j&kqMz7{K6fc`!(LtBCNV)j-^|9QQ6&aQsxBcWj9Merr&Wt^*Y(&K!{ zeGRdXBw$z8=a1!sUn`x>a=F1Y-b#Cu+9TNd5|&TMQoAA1x(ob6+(VYE;qBY!b0uzR zE-3oEKJxzWLHykRw>GK*=3Fo^&SOh+MTO62&~wFkMKq3&B6LSQ$$B_zDcEzGv#smK zJq$(})#JN_+)O|m2h`q>>lL^F(ZXPI1P%4hR?kPL=3m5bCTvw?j-k5b7O2UhJLSjK z_)Enb9ssNQRIe0U2ARMmbH_tsMl=GgotIyyh$oqx-8 zZC_u$1Oq#_D95_9pQ}1DaAN5TcaD4a@z+aj4jiQFgEf?w!!v2ViNuS9(rv2h#H#I| zgo*G2@X<0+OZWJIH{KPmA%ONzW5lT*m#Zm znA$}>#6{uB>5jkzm{r~h-gfnQOjvf!Vdf>=Jh&_ zXYMj3lICv8asIXmvYIPIrF`FeDfIYJ_VFL-kGXEWZnoo!sZxfVuaY`94zTI9*8)%d zfbs9zsg+?dP9G>?4M5#ysFC@f%lTi7EZ?S;gvC}W-f5;(<-CO>%1owc^&9#am-Qbt zn8;dBZ_tEJ5P`?sQS%UeJPtW)ur6v8TmCQbSGD8c`OM%5g=9%t)N7-U0%ByorUt}F zd`-<|ehw@+<~R*!H^h}WV#7Q5&aT*Vi2}6gZ8*`E+Tg2w6LB*-WD*&Lkw3BdaaXDg z{(F+*hwaN?_Z;_Lw?}W!DPy4f=sR74Hnv99b=$S*(-`>L?;m^I_iz5!#F$c%4{GB- zq+im^M%pUVW-VzGV}$v@$RL{>Cg;y)RB!+?Dmcp(OioYut-Pd%7SS;`iw1v6T>A>O z;!j5elrVF=YrNdR#R|cgXd%SY;abscLKJ(4Mo&s|Fa}x!15&zSLEmiz3zxzEjJBdX z&$Z$^jNQxB`gczLWv;B(;#I%MX~pJ!Nz%V%#)YpcIBfWWjusKc(}o};y_LVg#WztR zd3xcHEdC)Ev54Dn#9PFOz$uXK#$g4q=S?T_fJZO=P!IweuyJ2jp0GqRq!E?M$SfJ1 zdB;uOmSfcdMTWpSAB#u)q|L~(p(Mz}AQ_P%z+&geD~CFivceH#5??_m<}(>ufkMR2 zB$-F=L$gFaoos6uLRgd;{_}D>Mea~0hf8^I@gNB{0|Crg?F8Co%x2y*n*j|b(qrrx zYsgN1u2KVXX}0{~3d93&@QY%g3C`S4E*ez1x+VIuri6eWL6mJvQ@N8~sLAYrVm8P( z;$X10uLQ?MPCm`#fUQO=ST17HSVD~k-kWSn?%Q{9id1SP^+fs)!^>j$=*^wV%k44lZ~(eX+Y?i`!|7O!eIbw6F}R)2h-`loiFy ziHct3GvSh^hMXs=RY{;!-JGnd%nuu%9zHy9PMIhcmizDJ#)RBAxVv2r%|C049g34h zQOe%j86F$WRq6o<y!b|%iv=O-#vzg z>~rN=xEf27!68Id^b;jF`Ojf4Zi*+i>|1tZX%(Mom9n+hJ$ZBljo=VTKt)+v)QLLM0+kfDO$b2$0ndW^YZJPv zvenuy)TL3F4inTOlU-omAKag}ar&i+UyZw!8frLHTBSRY-MHKjYjUp})pnm!{^)Vk ze(O7cMIhFL8YVzmE~RT4xdwh!#?he$rxLESD>C9q{x#28l110QXv8Bb4C(9}Jgk_k z)5uxH27a;xRRQ$9vzXQnrr$Y~Ec2hOdX)UGgA>^z%S9kYEMv^6L5U{vy`T-{F;bQ4 zG4Pvagx7hyxoAcIu2Z%Ih#3;L7C6(58cXrLP<)372`oP^THDC_HWF=d@x{O0hK`C?R*U;NF4plTHinE{1!n!-vb1?W4bHy1MU408dvvSSwRkGGzm;TB=#dgKjUofXC^BQA zPp=o;YZDK^XAjmL@8_rh4&ow=?RL)>1W>vJ;r&SZQDWUV)Jgnow&br?sDciI68l-^ zRLdj?7T8UFq|Hf_=|>MURL4IlQ$H{}P_FOwx>_~BV2ZG)&Gap9a)ujb8VbG-yG(d6 zP6yS79gaS-Fj|zeq<#IZMzCWSFWO2ws{jX9iLzxfF%+`zS$PdM>iJuU%{YLUyZl1g zzcx&Pz~+QeTs_)X9ipGYt9zC=t@yqgkizlMCC`ypb?sFt* zR6&jyr&NA>H+VAxlW?)oNJ~^hb(nJ|w-#woodHzK2au7~AjJ)^s(W;Ks1{7==%DtU zO0bD6jr4+UHNj*;BP7b$zxlH0V_3&wI%iB-w!G?0L06bKn;ylzJSK49RjAah_a1zM zFXxOgfkUn7NoS1$F_K8+3oqGXjheA{pv!(V-4RNw;<^sHdYt*bA{X{gmzkMqa%zUy zMB?~~?%lEw0{cO=7-r~scf1n*TyTQaJ!FoMpqc8}^#!{6sG79Xj?k_NJtErO*Vd`9+2LwVkT4ZbtkEx~Y=bx|AD$o|+<2RC7UJ|8x`EU_5~|lk$u05;7uS@xXB0|8A75h8_BNuFV+TRW(vhEl z1nHSDS``H>Gxhzr-xwu5`ohr2mG!7C0pXOKosrEp@;y=sN_u5uGLs3u9fU|hZzoSg zPX)eU1KT>k&Pig0adJ3hY-D!u;f`tSkuiZjVA$W-5xxfZ@R?odtOA7w^_QK+2ROfP z5giT4`9JCtcI%_1C9K*fwG?Z`JD8zTBW+{w8lPQlKZRf~4wm;POafEFd9!Z7g|drZ z2VKb0I$ORh=p-*liRb+D&Ml@wnwDV$8F>E2(_K@V{ErR9tH^A#k^174&K zy1yNwn-AR{S-_(mH=9teA~{1waS~S*WIdomCr$d5g*;@N9|sYLqSsi2<-E`X9?38g zPgCkqfpcgTl75c3JqzDXomS~}{lE}13hL3wD3J3!jX7VAVW-Hz(;~r?4^zoPs2d{b zNI?NvRQ&rD{fyLdRYk0EmBdSdPkVY{<9f7u-NxW~XU5noClcc%rK*urO5c{hj!V;D z^_Thp1^%lAwo+QqoLx{|zyuP?2%`@b*0}bKM&F$`cZrOp4Mhzxmv>)qU$winq)=9h|Q?!6p_&FxLA>6)}a0h#t$cw1oa1~~t@~(d`wz*wYgSEdA zojY*K-Xyj0aFYH$ToIk1`?c z{)Aq!4mW@_{$;}MejZKd7X*Sl;!0@auyWCFLh@_q;`=<#S8@0LH{&laC#>>2)A~PN z)F40t+Ols<@?B$d)v&OeVE)^V4R@-7>io6&gDLMHaLiaguJm*3gB0bs%DCp^!}2<7 zFqV^wLkJf05(KS}Nls?(6K&Rkr{6NzdliEr$D;L($!)BL(@M&NlCAQd1)K6amK$al zijF#rB4YN_!Cw-WSHheC8XF3Yw-bOw%~}e8c*5qJ`8(~&pnWbfg`0K*Z8>JAN`qn9 zaaH=fh!OZo=K2!K3aexl6@l~gYwC5&OLK}Z(4%lyQpKeOoTyGN$vr- zyHzG7Sq`Nd~a!{W&OedMpdV|ubYCTWVe#ypg+2vCTafT$(O$V(rx)?k#` zJ8m(|Ah69K>WDRJ+6sid2y@X`h`rsFi9H&Fnr-1^`QapR7ns@4tZ=bw*J5nhWvB^~ zVSHq=Ha2l}s&7tKs%uIpJxD@X4s(ZZkJ`lPc=OAeVdScKQ>E}P?bA*gW@s!LR2-dZ z!gwEL!ZzZ2m8h-x`$)Z{dhT#@A?_`~)0=rlZ7{L-q6G%m1Q6z5fMB*2mH>mJ1o+eZ zI_g!e`tnlE;<~=Izk%Z9!`rpvl4by-u-vh1B#D+`Oxjt0GDpR7Onl|P zG?z{*dFzx`GuV9np5x8CK}c4l;F&OvvachAS2@a8eFe@j&67b$PidD}ZsWbHG5ONr z`S=KHh>@Kul`u)vShL|ieE%wETl1yHs_vafvxpI@_y-Ha>9=Bh@!19+?{KX zW}f<;=Lp`Q;E+bzM4x8#(a>WmpO48Ye1ak1WXi2hu{wUldC)BW=t3dFtB*Pq^j8Jh zQI3582Qb5{Q<{YD;c_Up4{O}W?fHu4A>2#I!vucHK;2$MY_hMvaE&btef31poQLmt zQOPvge7qxE9Xonuewx3n8Vs_&R!=+Rm!y6BK-k*A8iYLc=X2{%Zl}+x!`Wb}ET(Mi z(C4}azq^jJlr($6=6(-YsJ$-d`^|7}Ra05P`Bo2+d2)ZXCGNoAI(@}aOj&N$5u1PYSldq z%C!#2^%k)3(p@y!CO{NQHZ+Ni#tE|e*EY^@n_`Npf$S#VH}%<~f2j1YWJlBYoF)I z?J@|m`aHpBT+c>WtycS*eN);@LhS!~f5xL4q{VwvwRK3Jn*Z;r`M6P9Fk%l&ayikk zS!j0L&AUk;&TL!}sz#``vJ^tig$u5*;ddhhQg_I=HzVU27_hieVO=`=h1;pAoT9xEz&<<~bm zU$TE*D%AzxDQ}t#Y5U`pSAJo{iL&Bo-8$qRm`?Mt>YHYtoaTn-8#g>Grm|WY;4Wg9 z?v!@5MOvT#axR&51@TU%rGauGor+mh*MYxFPv|-+%p2i??7^J;_9fzk#2PsYuyo;b zH;B#6H}3v1P&H?$@+E}q=*>K6iTs%Fwvr!oQI2K28RQKN;q9ir=rt}|xJXbPPU$ux zQw{K}`-1#kdGnvxh(gmO-9$qs9S0e2%C%W@M>nsM}W9=}?F2v?{6l+kjxL66%) zbP0YAeJn-~fa-XfW*-h0xB_;E2r~0r_eixZXdJXHpy^s{${NR=vT0eLo9@n3ls<`I z4#iN2HBwtugP)RtG_M+emvVYNGciIl9>F0sT#j4lz+V`|u2<$KHfn>lB(8j6Yq|ei zHsH{I)@4kE40fDahsjK3)cocN#=RgmMKx7~{X$rgJrNlZm>w&H(`5$wNL<@9v}m%u zmw%_Iv$o_O(D?z`s&JY)=gy7bPCFm1`w=mpmq(j#$LWVao3JE3w9jeY$Ansqa)gY~ z^>BsNz!T*Hp=LO-96_fTZ_KLcI$`1HqJO`kq7B1;hqeICA+&Zf9iv)7{G2%(V;OWr z$&5Q4}r)^zJ4uuYIlq90Q6^^yi+F!EMdh(js z=#=SrUW1eGtWjORK5o(`#a?dqz;OTT*qmLZgJOknQ$em~E6v z4UlyLxENkL7(P%elc_38uNR+&$;Lblg;BXT;tzA0@(g$s4P5=L8EY#KR2sVY9i^|9 z-VZ9MNEA^X;i4vVyqd_n59K9o3*4KCk^G74Up&)BmEW=yVtg`C1aeJPFR#5J1$>}Q z%$!o3sHNsMrsR$X<>LO=`-eU*xBjsaN79-eP}4Ej+tkS67IYI--ODXu{k`+#)SMq#QgG$&HXAy;?y}K9{R~Miq+6H$w}b`gUPkf z@ZDz~dD8e=pNfB{w&GA#x=q9S9<8*>2Nc=)>(|j>e@DvQv$9c2f zej@Jmx@tpO$63ML{Hil}Z}J_xP4fQG=u%53Ir<81Y{_2=Iwbd8)Ll7b4(uFyVm@_< zgKGgfLVx=;Bya~Q2Y#j&)QKcYFMtY8aprWqBA!Og(n}VjB`WCBw=hUtuvZLOj7_^$clv)tYDtpHH7ao$7rp>&LWFP`n^Y#oiQbG*BXmlQ-7u^#Yhm^G*B z4Icrg)Fdjc@h8V*?Io_MuAn4PIwC)=7` zMk*rCZ#W$=KL%buD#pr;XVk2!m5oN_Poo=-88UGRcptXEUEB#3{tY^M-Mgm7N-IV! zR9~uKrm5!>9_y#+;_JsyYfW_w(kTtM4}UOZZRYTIVWvhD3HXqrM(i3^sUgSR zRN)7?jWTDP=<1d0ZU==b8*I0AZoj-UU0ok91%NJ4DJo2g$xws!3XvGh=?! z;YoRwjus=}4wd?))>Fx}-nxdqny%KE)K5PitJQA2wBpx^IUpEOc#!-n`YFR+$>#|w z6ZP6N>RHO!CR7dX&Ba-ybdq6Yb+ES7U*3AF!itjoj%otiL0&%i1Cr<7$OxIOk*)-5 zeq}!Jg7IdX*&4kv{(Y=7T>~d37eJ`44|G}N(5i}o*C7>q2Gvv1S?-+5GtsT}o{~Zu z$85%X332vWJ}6Tf{8&hqm|^mDg~kcCmSoFxU)R2ws-Vv=?&aBpQinY2?BFx_d=oc( zoo=Y`>K^Na57g^HGN1hN0nNthLMCDA*)$})Qsc2K_0w`J#7y7ly9dCgqG5`wwd-1S zkbyQOMi#qR%o+0aH`)3sn zv_IL?HOQ2BzY5JBAEx=~_AwHW-gpZ2pbiKTqH-SFAc4<Hs%9CFd71n7;T?-=@(_ zR(+WREQJmb!uZgIV92NJqqZ8}vLM;*uSa~fg%fC#Jo`o5&0D;8u;^j1zz`+lxM{^cs893 zj-T^;Chc>sraCR&GyXdi?w}ot{OnwgVBG0mtp|kYBS*Otw>93?<&8e=x1EzG8wS|@ zV|eO}jHu5g&=BjRtZRDR3p`?^Xjzq;DA{KfV-7A3fncYCW{%akwB8=|&wK&Q;LXdNNrXIqKCPRa4+XtNfsbz?r5~tt4#%6n zY>#!s5X9aH+D@^8XOnmIap>GW1r{0Wmw)&CtCQGVKt7+j1P}>1cP9;>6z_t&r@b;* z{{SI)*k8+loMFb0y@PSKyZxg`0M;UlPM0}~s~ut#TUl7V?c=M+GMe;{iX2`worMKL zOA&{L@#9H|O!Pak{*o~0H6~GRynNmulgXw?&+^=4t#$LC z-)Y`&G4Mr$?v+LfMV`{EduvMLM}VZ?;v|G%alY!U2ggpPG>GbyG>Dc;*ln*!Ygs4` z0I{JbbEY42?OXEI5>9(W^{oAA{lYi@XRLUFZ#^m}35X$$9Qk$wlt+{ZPHu?(=`cI9I=> zjxsVE86DNudlegC&e10O1mqTR#gYEr@GI^7Ee>rI8p|9aDpN!G8v@%N7Y5Zb?r!Jn zC1)%v#IC53#O;?D@;0((rYeN1z6N`_FIsraaBHxN2P2Qqt4zM};F~h$YhcmXRjn6j zM%y{D(W>~6sxo1%iRMJ^Zg+eH>A)nJDU_hSn%UQxIV|cdf`Xitu-vx($K_y`B}LW^ znzOXr@ITD=az&&kY)$f0R8*l!xua8NDE}c$&D5{oI;9|Usr#^)`6_&N`ao*7i5qZw zWNf)0;_uVKk~t++VR;fi;=&|!8#H?5CVQskU9ocdcEIqX$dubL7Tc3jzff38_zXu( znEmGLp-gZcvHt63OI1l@%sV=d%FT>0H`{nah{OO2CM5z6#|8~%>D`^`8+-Y`CL<}6 z-zS{k&iv@b|Eg@t+V^+q2XB1d9I%_fka$%r;}*Bq)bHtg*M@pVMB`2a`pzx*qRpy? z4o5VQD@%1&Vn@jD_f!c~j zJpLcy(kHc0Ii+@}Su{^7dF*w054*QZckmaiLPgk7j;dGcF!bN!UFCB-yFTCadNu*W z_$yg^#3kQYk5in(*ex5=H32%+B% z4WJfTh@kCQXH|#^&T+*9F!lw=iu;h!}@z-3Y5QHkNoN0ERfL(_lh3ekt0(wH%(p}pVYA1G4r#zFVaw`8C%wjQSZlo37*!n)Cd>A zicrmPgg|ze9O}!z)?HcwFK3RAADa290^ZQ1&BTT=(oT}QnnHg&L5KN5)jkyX5-;S;=e;p;R!ekk;i0o@qYtJfMt$MST&uHwLsTZc&v z&kU}}nzhWBkNUJ+nLFeG zsXCr^&-Sq5$vzFq2#!{66!qisJ`~^{W8kl;1QWf*6!FzKPjpUoqr%n!?H!!Jl%HLGcn`Xx|0*fFY`JT+X*nMZU{3A`kP5$wGnMCW?M8}X>EcLhR_K(m=$H5h`*G%EVk^h>iv)ujd}6L zQxFO&H6F!JLW-_(bdeV;7KtTskj&$}KJS$d-5(1)bYTmDw@%B-j+$&5`TPGBR(^B& zaqn(;#dSMGQjffY%BPd@^XVR(q^JD_I(FgY0c z8Qc`r>Hc4&QfRWJ+t@Iq^nt{pveh0*?Mby8q|B%`9}ht)R5NtK9U*nlXE@vPwe{dC z5ETJS-mPL!hL*xZq=SucG(r#dBI3!WJVhb#-`=RqtW&sx{2-6_KjN2n zyWfA*!wfJ?=%t0LGY)gGl~T9$07Uxi%F_URQM?Dpha>GhO@&@G5hX-xkZqx(!Tem)Ixj&{P68R+iv0ZDdZqOQ14D&|; zN%Dz*EvV89(A8^-80G+D=# z5MCB;e1H@zR4oTI_OcxmM{{IKc>T0)6U#dTHz>?ik;lUJt$o15g21O&}ciG;NmFqd;=_Z`VDw`zLH7-!p)+P6u)WP$?{%dlkw%FXd_R3apW%52WfBKAF6u*lJ9dbV zK{(~KT?5Oj;Pr2yQl5siIhndp9sJGc!1we4wSJ#T2;r4UCct8RnuvToPHrVp14>%D z)^?}@c(nh2wV zUiKI<<4;5Cdr6N&8-z&CSV$^~XM!~fG&92AuqLOVuONx(cKCi+RZ`ML_wTW8ml0Q0 zf~W$rghnewyuE70ZVxcsk3+3Q^U_)K)OGt`RC9sR;iT(&FRFw0Zh|)wCSIfs=pJ{| zdgnAwZ~%R7rj`pDV{Kk=XtHji`I=0X^v$J1&x9e|jOFnCOVTrxhivrI>P7KLvFO}W zb66c1Pu{yx@i!)gE($UqNQAJ(=>=n0%eVe09R24H>M@<1{^-C79C?wWl4C{LpKv^E z{0jgck=tgB!tZVhn5x-;>VO+Qqu|YUlp-!X9WOj?YF~TF1z}Crb_cY1%vSuf`Jzk! zoAd>%egMk`0;qa!U8$jd?>Vci&>2v98pc{Hk_UC6ePgZ4o(1p8F#VEesoHTlkVmWV z*LkgijtL%gemfE6Vq_(&aT92TeN~KSn^OMf)1sz4LZ$ukWPZg_>8!YTY``F+zD%W5 za*$N()?4extFT*1t+7OPT-dNuUZ(5+IbXUjD|23TQfe|z*g&1M+{;{^;QWiGt{B$% zAHyRg2`451hG9{=&&f=EZD%Jd{$KINya%Eg^@9!ctL6&Qqv1@F*;LpfdwY{Vr+&xq z+@Z!r>%)6?lgnPCtu>i?mxk*TQ`e_Pw)B+-)>I0Uw4ZnF0mB6!yaS>-r`RC^$=o|> zSm*dM*^o)9vXpV2>9#WPqfRO)71>*!#sdBQw^I`L+AH^rHfpqu@e5q4{Zl8VPj4md zbaZ346rLQaPjBcM5&WN4n<(2@J9#^()?(_)@ z*${is)p}C#OBx<3e~NU+Qk}4MF|2t6^#$_t;!XccI${3!wHjwHo<&Ihz=d@5!Pct_ zXKc9!ZAYOi^;OYb=rwl1;D*F2=GHh+eR_u7NTIi`fO=1QFm@%BYd}AFqXgk1$ICzM ziz85NAlkd+mEAj@`yJL8qeHhf(p~+L&D6#5F#2&>j<9PQw}{nasRXD^SGFB4x+U(i zS2B3tUHzxIZNMM*fq}2irTTX9G06FUl@q^Qw5{tMv=6KwV~TgJx;J)h-P=F^j7EF@ zW>}^@>1y;b zN6gdU6eCmj>tgPmL8%sHB7OUYMp2h6<1=D4nVzyP@0`fmcXQD12cJSUr^~He!c@wP z`SaT=*-I2y@5>>mn!bw5w4j{S=$(g=z8hW}5$@x4b;Bgvd0?m(Y4Xk@NNk`Usdi(x ziDlY5>2pQ!p^^Xp6hZ2m8w}$E?QiMYAXYESe|Q&%Kzl9s-(IKn>2*dXBG&(CDGtw) z4R7tA*x~LS{upE&+{23evQ}fS>IA@Xvic`;xS_TYsT4hTIh6kh&Ve(?>OW=Q6t3an z1*gy_FdnArJMb8}{J0$)4ywnUpaU+s^(`S9vuAjcDmnVq|7ZE0OvwD7&3zgk4whOT zrTI|%?5F?v{SW`6anc&{LU+<)y{XduguC2-aQC_JzfL1mo#nb{bDKOiE&a)SpRQ<~ zl&|~`4WA^94k$i*9|UDuQw++n|IY*YKN0YhKDGYexjy6S#4i7zs1PaWygvUIAsP=R ze`q?E+f~HjVrjlGVB+AnoLQBQA^J_>=(DaEgaZ>7r&V%(@$hpXKL;6f&Su5svh|PkE+@hM`_x;IIbDfSu+!?kP z0`nELD$C(3sRq%moo8r9NTXoIF=jTXHbZf68k<{srG9P{87tXY*|Au-NO|b{1Bo%Wl#RnoYT>V+a~4Yg8Y%>TcJ7Wo zxtSZW5jKy+lLK5VTsZC{9_DITADe8-lodIC{xfL0Mx2?J4;6+3x=(z~$eV)u-HD|> zRM}9qgvqir-(9vAxkE%oa=xhDhd&e=<7i6ph=KMJLWf7Zuz+Lv@oR!q zIxye&i@=T1>0<-Z8)ln)vMxGNTt9v_wo&pBp^o}%kC*lUhriPsx9BOjmMbQoLZesl z*l*E7Hqv2|(|B5!oMyj4&w)R60s8HJC^)Gsh2-2)@y26%Zvh;q6ddGklIsL@cQ62J ztol13jvM%@PTd>$@+*#A_#gvo@+)}yNnki0)G4$6hd=pT3rYvbh{Hc)y>@bONIu)n z$Tl9RRi{1s9~pc78@leKS*69VyH*(OF?fCqd5NJ`Q+-t#-KEDS*Se?8OjB7X$8(}l z>sePnKpoFZ)W$vyG1O{y&1b0W(aX{!CQa-8-$M4({(l!T;S-I8kvwX{%*5zc7h}1X z{;b%wUOVF<^2Ep5E=~avV`a3;^8*n?X%E1|LLmC(C7nfBWrFROon?|66e=S4J z#rI0yI%sYLWm-ebUay#tupK@dXPCDU?5Hz68e`_ww~R(z?9jy!PVraI(^(qxc*>l= z`xWCRBCM`Tvx#T@FE386Z5srTz=JHZrerM?pRdas=u|TLMw$E zz+#*K+zGUFYuzyNU@;CMiN>EiJ=MTm=y`~UG=qxNF)Rb=^=`3&!HtW@Y()4KnQ>(o6OQ&?zatUkHF-Me{hO<{cXhq6Y;&uCnnjN>- zl@VFoVD)ixQcbG)!>xmXU^FS35?ZPW37WJ)UZ|8uY%DBxQ_<2Bcsc$8?K2}G{|oh#XcsRzwqgZR%CP~L+F zAj1ykSojihZ2rHcuzg(5>5qtnkG6N)&TbKpEq0XYZC9u<3hc|k1(%Dtg|?5B&LA^I z?15+UY25f`M>ieePURuH`4ZzoXNIXVy5(EAkb00F-}z($q*5Q{Efl?tmmPbRkX85x z%yQH)b6)HNDv$%y*noc^6>o#tL7QmD;M4jjV*&T`pk?;XZ=9HtwA#nA-{yz(>5?AX z`llsKjVC*l$5|Rvge~w+)GOXGq9nl|a->iDz(tE$$0TbQ_`#VJdN4j+PZ@=DIz26O zNKoI^smq>JNvo43oJDucou=P9j3rlU5(=7)AwCF81^8^4Ksv^z`a|r{8~nFj5FjMf zleN3^Xe|WKJER5foQDeNT{rW0y=Wh<6M{e@^TTuhY4ob08icGj}X?=UDJ#2Vbh)Ri7I1G2F;|qr^)Tff~)}j9+h! zyDQga)AB)q4HI;(!2~2%6wMtTnvcpBm5f6W3AosD+Cui+kTYO(~ zl0Qd$gDa|noNw`SS&e@?i)wP80gDZ1d8I)Qd{B*0%%W!4N>o{+{bUiL?XXHapC7U? z1w5U#?NLf?^z29wKr^d$Svk}9^3osmITiRt(KH|G0d)w2QtiGvaZJW!Po=MJSl780 zaV91%P|{IeK0B{^RYC&)9r+TJewD_a2>U1E`0Tj%0n7M(OkL!Jov;3aA{p8s z;@lozqG}5QK5Kz>;i2C$BIyy-H;mK7*c#U`sLpYqrvvqc@2DyC*`dpk6nXraX}S06 zEsp8CwKN;^s*|@NsZedFR2JM-H7o#P+1>rR_WaI7Ex<%giGP!4|I0%Q-a;1qJEBr# z8^=aV%z|^cYZKyV@p!?^Acq0&PVD7UZ|#iW$>IBmF?L^rFahyB-#)kh9-bkd7&W5k zVX_u6WpC4loFL{(Zz8z)z+P*2XP@-AE{ZA*V2Q`M7tVzytLQf zUbcb}uWFVqZTkACuWOpU3V4uL5RnhAYfLCvY1)l2ki^{MPh6YW+f!g(wK;OMf4;-F z<);*P^|>OuI5mX70mF?|ix?HO^#Z&?_{s>QUW#Wq%k?jIA>a@6to}R8YpurJ!-Mfb zb!(H}m=M_x8q+=!J@~Qw)9ol}+$h`q-oW1pWG_JinBItkDj8Fv#{E%uz2^Z=G9~w+ zLYSOI&m|no{z_TD%I9jl%LMG7i@6kM`B`hQY9hI)9eyJG=oLUs2dfRuRz`LI-V-Ng zo757#!1)S%*c7HJ+{&_hH&{r8GqB`_7m=5Qf%?2=L*UymmN=t5obFy z;vTeh3iJO96@I5XBpv@n`3fm1rHDKU<8u1M2=HbaJO-uy$#{6Ex$faC|Mdx;<0qUi z%_&WSG!Q>oek$hb?14oYAL|FIFbHznDwd5-yOiF{blZItzyPK1Yk<~50?)V8N>5A+g*zNNK1t9c$^V`BkHiN#p6xMFV>TDavG)TqQsNbjLe9+LGi|i< zGn4c)>r+!^6v>a_+v)hmB^sFjCdx=(P$f`k%J_R5EfLHCQ+#UX_|Q*Q zl{pXLY_&}s-eaTIP$~Uy=SM#hMET)LCU7I8(oal~XJ!Dm5PnDqf-~4s<#sh!jnHB? zan=U7&=tmn_XhL;L%v}nI8G4iq-MPG#E<~a_d1Qpdkv{{qi1y&(=&_7{Cu=Ge?@yj z#(Qzt7r9W2esMxSP_anx^wfs~;pu%j(oW0|g-`*t%P+-6+NwlnP%5AK=R2R@MDcmz zGbh%I&gp+EA@;uqf9Aqwm|7?-p#zP}l+H@trW}`JMb`?v4ugO9bzX#nzJ#zcPyDFbP9^X&wlnEcg%|C zu%+;t?0NbilXSh%+HgPTexP}Hq#`L8|D#DNZ-i;Pn8rPc*~vM0iuN=}Vt+uqwRLsW zR-x8^UT4%<0rXmPevN0niJkg&Fx3GxNUxr}6Er^{?db;gE%qJ6-}^5|5VP4-OXjfiChP&%CroiIoK54BG4dU9_r5)O zd$}U0_8)G=ENTTNjB%eaulyOfP@nE6nts=}ta&wtl?vuzYVuqU3E zS0O}Bb=QVh?I^1K0Zu0@3$K6tAtU#5#CsT(E#$ewFMPO8APhO73hx`=s%ehWht^UK z1zAZcxdDM$ywdHg+QRA;Y>3ycyLW8xmg@)_vV3vZyBE)ve0Q3Akm9rbg80P??S=3F`9FJ@$K-`j`e4~dMvihblH|nMc zWIg$}Yb$1|S$`LwXK@GFz)4XZ@*jV1tP@HH&c|&tg zQYCX5qg)yd%@J?T3f}2?;%YGrSp*?qRBN}DBR z$%gri*L#`Mi={34JL@tD3U&7dYxW!9{2{HJ^si-bKi~OwMC*q6#K#}AFc}ebGCgn? z;6m1$*P441yZ2ce(0gc#poEI+sQ#|$%`pR>UyjeGpYQkqN819q-T9?jq!Xl#Z&@4i zrI~TnK}1AqR6wNn zP7)CT3ssu51VoBd>76JFp@$xN=%Iv!5)x9+m;b%by?1@zdhWO0_kHf0H95)2%w+c2 zGyAvqK4;HNwZK_u4&)BI$8u!(%1>B6%|QAEe=iz-Iu%`W>(9%k7~n(Eru@K}uoK#c z&%gUm9quK1Hck&#JDZI+`n!kK_^yxMk325AIGC${Y$DGv^Xex7`I_6>FO_z1=#=qF z2jx0Y5b5>mVD2ZE>4uvtExoT2Vno%t26FUD__p*boiTDksy?r)+FlQdsQTPn9bff1 zL}(7!(jI4h)%lcIB3vIrt#At7+sq#MS|hlI4D|B$PSUKbtmLHhWvWR|H~5;gh`S~w zC56_wPS$kBoxigm6Brm+5kmD6y74-WM@;?M)8c36b#!zd_60I&zNt#CX=%1&KVDQg zjTC07G})Blu}E;95khXd(LbfGuI?Pnwstbf%F)rW!g1)bkY-4oLB=iP7!eh|6-7V% zvk^VmIom6QnPzG3Gcs|S5L(9<1zWrBWZ7-f>QL5ABe=SGMMZ@jVXD3m+m$4p`{T!t zPTz>e7;XW%doN#pJu3ilpQ<|_E2i<-dv|R_UpGcXD&H{E>74h)H&GBeIf?x~NGLI{ z)P2?S<^0mp(u0<$sHoe*q~y4`ES8*{T=GnFaCe>OLSo3~r60A%IlA{BK75$7vxLJ* z!@_o7P7UQ76=}S2?q&0MxXBq)YN{GR@W@O|JWZO)O2}06FZ5J$pOImINe<)UE!6ZU zOvR5BnRUO}$C)@IrXFzOF zI|ZJkqv0AwrOIwo1$H+lslTf6PM79I@}Se zkR>3oDRJtu!C|Y&1>iif+!pmjuDITBBke4huF%7o+SS$dwk1+iK;Fj1XDYeamQLOX z^&2}z5c2jKyRuFC9m&hpDI#SESN|TO0N>{_A;?=r3ATR+xv-`8P~KPcnU??^&X->;tUqLSnFeXgVRT_>410&T%i+`K~8dSni#1C<1hf*(+H3c)TlD0!f z?TsHt_N>MXnCRwUN?PX5Qg_N#xeMUijDr(yr8dnID|PQ{YcWqQ+{xrUX%-cH_-Eux zmz3_@m!*9h(dTfXh`Ta8WI3H{JgwED*=l3IH>Q4DpCs`&S(ZBp=(Xq<_$jIN%(P- zT^;cZ=~?Gw8S}3bzehl%_ljCUK@F!*pT2RG?MwB<5?>xe#fqEN`~O#qFj?=50}dL0 zNVHj*aHX7>8_Mo8Pqr*kH}^R4xp_aKZ>_(ANT3LNX++LH5l7N6VXK(eT`38;_o977qoxV57)_4g$ z7d9#r_SoW|93TJU*s)`tDdHj`RYHod#@ap!EXd_J4-E}%%>9mBa3kKWwO8Gv?&Ql_ z*7W${$L63&D6?T57s)Hm+M8i9kbyhxuX@w$9nkRTMg}n|P){%N(#4Bo36e(b(>BQY z`InRIu_#_`-_U_Z*Opk;HY{{@0mLs|3PAccQQ4d-t^u{tKqEl@&giLnZ&x;~kB*G+ zONrlDw!kDLBy5b8+uGIuY=MYZk^#3&vGLbgSjpu_Rn?8jdhh&ZC{y)E2pEizCdPW> z`gA4+CnlUmMn-C04_uJGa^(k&M*9+MRqxgI;K2i#n>R;x!5A1@7xa`5235OGDy4&9 zEwayk{H$@uy18RpqE|6&6txB|_oUjUE4$bD6KBS&oiQ#;T}ev8WEacwm*E;gq$_JP zDRR~oZ0I7S?0yt?J|fS3R_@;TlYu}E0$pFejSJ?6BZTRUOdriE?a`uOPC1!4-UsmTf%uyw(! zG(R7eIn=O}PlXX@G#UeU@*2x#4#L0pAX6k`N0pnonD$Nmbhly$&`OKb@6VU?UzX}W zc;H3cy|zUFs>sgPe9h^4L{Ua|pvc|e&p)mQiM6&%!x_jB>R>ayi7tf+0v_fw%uG$k z*`s@E>%%F@_G0g=J46j22<61ki-du2`8XJ+)H>AuM*iQbIx}uYR=JZ$4L54@?yw>w zBEEL5P=%Tu1YN&wBiX{_i35}1g~i2D4Z8NG7&d@%u1_@jm+_xDGZ8Be`r7AQHZeUd zIwnswW$n%kl#|7w6WlS9074UT)P+)JFuX$)-(idEGxnHYv2ps!9*YGV6P6Iho&tff z4p=rA?q208v}MwElT%ZLXvYfNK}p8gsy^$Mka02*D^8u^7A^~b!!+n!?zXl$YGx)T z3+)m!jM~~-fDC9{mH<@q$?KLqRY%|`2fU3zustziV3fgf--40ryX@wd{*LQts910U;v?I{cNVPJKS}u zZoqA-?geqCIenSO0X{eP!VFkmUS2i4^um3n$+I5Y;OpFAl3MGUnyE%6!1@|kAE5~cB+BrpS`7Rq8Vj6q@LR?gg=wA@- zkCu{`uVrfoy+zS=z&Xar#l;7~rft;=LL+@wW3e^H#sVrtab z+?sEz@!POSY1H=ZS3-s~Ha1R|!_@=%${|B}4{O+(qM!QM#Kg5X?WW&c>%pR;B5x)l zHPsOWWq2TsL2_)Bu)VWWQe8d5Rv_Aw&8!iXzi^uB16hUVTCk18$<}c04Yp)v@5IK$ zG(a_BtdO3j1xL2pTaJDoV=a*2yK2^9 zPX26R|3VFXIRdu5^q$q|C3yDiQO2|#bp#A7uvLjM5_8rHlPhj5Y>~sH?w}x`!0m78 z^3Bdx>y#Y5Sl#NOTNAbJ2zoJeIOLkK`mTTmb_LD{#k0p6eVI|KR2bSfG%#>-#Bj%! z?LGA{)XUcZ7L)!nMBSwMIHd^b^wiQ)csIBgGl9cVcW{J&2LDgAJL}}l1)7GplN&!0 z8dduj+E=kN8*!Xver&aI93PpbGy@A_?0G(EY;D!{7w7F#d&&fqN^e5h-pRu9(Dy|A zmb`_q=q-<*)3v^My;!kuvLk~y-KacoKE%CSX;8zO@t$Mbz#I7SN&^@626Oy&Fo_4Y~y3jlT5x8qu#ga74 zc;Aqm_ZG|qHwCp^-C8b40bQ*qS8Lw~uW=StA2bBO(2xqh}@%Q8Z`5sJFeA zmX;NjRT52hjLxF)+ss&qA3uIvmtnYYcXt%JR9ODC{@MU77IbxXI`+hy za-x*(+G1{Ta2&1v7p|K%{Lk9`du=wZXGX_Q-r~_Uxp(&dd8v!h-{MYx)_r`>EiT=E zhroTW)4WV{GC&bNvKIO6FyB{>I2zSkFyh5OQ^0*T%(5nlY#RpP2~L?Cr?Lgj z9myU)tU}5}iv!b4rI6=0J+uiuPu@&s)i>6}jJQj}O7+Z+1#3bXW1}MvSOmZYMkB3a zux#6u$=F`%hS9!~1**%orLM~NEeYb{4VhM@6X@~@cWQ!Prlq3=c%=LV`axeNOJ0=< zV=<^0rClRHwmy+3PUZSb5bg=9<8&&9RBknk}jknjBrW8VdOFPN0}&MD-`~tOPFFz=~wgVJ2#1m_5%ru|XUw z^dz|N?|$!xR0+&yQ|oojdtl0!pMiVkpHY4d=O;hxMlFF||2XmhkA3G^-c{n(z0WdS z#q+@qbSZQ587W?x>#{W_P$s3K*mdGuP=rF~TH1f{GC)TVg-y`=fyoDU+~tYp+tV~L zt2O5arQOnicik%+PF(0^hkKcu$>f&CWXet^13k7C8xj!+r}(z~k!wz301>R6Ggd58 zB8f_&(csXr&|(t^ijkhsSjo}H7x`yIp?P+Jecx%W6cAg`0mtv}CHuETEE zta8fXi={m$m|y4T5I!#KcTlzpwH9l^)qz;?o)Gnn(vL4e}cy zTcmgmWUKOF%O~z;e%NouZwCj5p*6((bIbf2aZKLvb(F?Ab1hO;M+i?&wF~S8EuJmv+}jTh%VeMg_83+stOf26^-?L|Wk_gj zTNh5b<>x;JwVPaZlFxdC$O{-B$mI{k=FUPAdx06}lH##uiPBj%GwkVc1Sz0OQC-mn z!!;>fQ{U>mS#0M*wT1n2_|FvdwMKP#n8%@E}^tm)LkC0wpMb z5*1v3c?@-)9&TSBB**&BXk=zGh6IM&E)0|nY;RzxqC=21IYV89$-hUJz$PlM>&}46VTj-52#()I%mQxXTvw@f^jY8GXUM z!Q-7+`wk*EJxwnO7O!x96*XB>hW0GWPj&QleI<~Rpox@2jSF1yp4y&LIi8Fmom;iqvHHG+G^q_ z{CYsxr61Vuo0PkoKxi!0VlrV<)>A$igst4tK(48u?CycqM5RYcFtOvyCBXP{qh`&} zxUMr0HF?34wHNebpH~Uec*XsQO8XzLJej@sgpz!>UUN$|k&S%!Wz~IBu-m+Kvd=O3 zvSZ4h7*~S(gv+sI=_Z34`O~z<+hwiQOW0k6{vuIDe1*Um%|dq8CBQU!RS|B#6j%9i zN5Pf=_$qAO)#rz;EB^N#%|*{|fC;NA+8|-?1nRJQ1qjEd?)Eiypv>(&(5k6H!A+}g zHz}cDYSaZ(5y_iDSz%56Q(Xnm26RWITD8GuK2FouJVXO*;%+l*oA3pU(hGVEO?ooEZo0^OjrSo8S!07y#m2!)}b%7)@;u z`9rkDfD$_fe4DZ-kJ}sP`ojA4@+NDt6WI~Sn%*Ot{!`@t3lsm2jMtjv{yaL90_8m* z&bm6woH>E@(tiegsrJ4On=ikD&E3W|#5`EX*Pdy(l^7ExsX71o z+3oq{rsI9a#dKrl*_S!96P~1)%x(XG58U{d6sZK{I-w5Sr5}VI+1phicm?}5e4bn#OO49gMLuiMwc5C%S+8mF}n4)lGkA;c@05J zP&HMJ2kI%rNh~W{7VpEc)$r$YprO``FlyDIk#&a^bHr+nZpfT})}_Ce;w>e)YNHQ0 zSV8A;*CFXj8<62jWbGVLs$Oi$&DyAu?lmK7Biuu&bc%#VT&N`ki+e2B&r`3f_`gv~ z6d954mlHt*$@*=m(xsUwAZMrIVepJuiWoDN{=mGx%z{$VwO0N0`K8*ZV;h6tTvTGi zoA_`^8}OP`k&!aAgb~^_NP6X$DF9L-f#u9j|AZt3Yq!HCd=8bZe!&C~;uc0q zyknnrBAv^kOp3*yZlp8hM{te44>a7@*prcwo9drN8Vw|YoQfTT;%!yl#kfh7 zuQF4&9Spv#9|+2nFOwc?whWF*#fmm~ZBE}IJuEfHc;-RpRxBGuf@1?eHRY6U_XeIl zVtcS7NDG-iLuw?&&!`O%{E6?1%HN<=Qi@Lnb$SPxArtBMN;7uwJ5M8D1SkR=S#N3Q zW|5b2*elQf{+9vkCh#9JV5ghiPHCNvm`hF;&RXUxa4azK5WSK3#OM7{t*}|mxU6h# zD~?Cm=dOPHGZqIzl_%Ue{yFz_XtA;)POXxzIp}j*m#E72(i@fjY03Z0>N(zPh#p4l zznZ{Vxk^>|p=t`_yAl8s2dNy=b({u>3Lcut(z}w{-##%h3-4^7-;i4;E(CmM*}dN^ zV`-id;S8f7SsC0B#6p&4vXubO(-aoe`e*grHQ!aFjl|1LkAMa;MM3Sl+Jc~9;zJsJ zEWHS%@L-|}8B6^@Gs#KRWJ(sF;?>2nG{x=Y`deC z`U4Wh^G{&b{ahM-R!l4S0T~yRrE!T)e~!Fu`GDeJT_BswF72Wp&FVQgX*3s~A6r?E8Ba&2P$p$Pcs$&1AvUZlal~Fi^R-55 zKYqcl8M$xjR0pn|vr^5d*G=Pk@OCLH@QwFvIc)wbcjT98$Qec6+05(p?8(p@s8Xv#7FT{5`}_J1QimIyl~!r6SBkcf_yx><&lOxjQnm@icTySziT*- zfXoGTu{5)C3Fu2%$qgW94vRIGG)@0Iz4FjE_K%9^+2`DUKQGQDfbx-v4IuiPsuhsi z8jHciJf=9X^4aBf5$wwAAa>zm!09{P8_?6AM$nP$b9Ju5To*JkVoi#^!;=NC0QS+5 zONmUX>tQw}qbyP)v!0AGA>$^Dj7H$jNRcPZKwg*Qg{&T?_oH1L<&D>)D%`YDpa(%* zxsSQfUJskPMTxcafk8QCQdU@aO7A6-I|z9YVQ2@Np?op2gDo?ucdK#Mu_`*d4!x53 z1uS)3yvg0*QToou74%J*P4y)3awg?0mg!kE4s91hlbp!lO*aI|sTxr+ihXCn3@kGf z-Xp|Xvd0T`(zrpx8R9B6jRq~ z2dvLF+vIkaI&3rrYkD~0ih|bh;!Dn0-})-|V6imbz=MUXvOxRY7&-z3V^M-vWCxk- zhoY3`fQW_ydG5Qa&0?#HcUkbu+wYs|1?-D#?g?Oa1J|+~CFG6tL`gx6XmlZf!v5t# zLkUM!>D~|R2eu_1CZZM15fU1d>-0t*WBBCZbQHEfHSYs4%F@bPL+5Pf&aEnlj^;N# zfsXI1PY8Qi+!GaDqL?S*g$}ZaEeM81>)|hEz@EMu1y*61O`$!kHTMFOr~Y`6pr?=l zx%n{pe$4`CsQObczlPhIUFSg*e$z}QH4fd46=GwaKwTSaMV%(GOIXZhB{3nQ^FM3G zG+4Tp=h&ABjVLA=Pkhqe$u>-t+pLw7-iWWav4`0W}v7h5DMK|%dW$*bB!-+LVeI*4QxXxo6XB-E>1dVWC>Zv-}m z^dt89?h@DBg|H%NVyUZ^G!1wzua9$X$0z#U!=FHWJMp|EM4ofEJ<_hB-|ITH6O6h; ziv)-j1q{`c@1)fR(SHmR)mxO5X;|;J`!9{Ucha|HcWyx1CgH8NOMh~oq3t|FgI}7m z*2eh}qn=-4Tfg^}uGG!D63-X4*AzKi?JL|CH?<0?WmrXl$rZR>4r@SXcSvaw=_?vIs#LSmVWhjSm zFQ54b^S}ilxSw#Lzv%;!R_FKaBX1SZl6=vi8~ra+!ney)s%i z94AC@Y|f;73?`(IdbIKs;j5(ku$@~GsMnR-{@Y!4J%hd&|LzV_U6`rJeafO4&NDG= z^HvFA1cSSuqsf&ioszS4dkLS&>yb(lF>XW5?R4nbvMf>x8JXKw?S(ySw3wzp!lvz~ zit*UY+5^@-gH-uF)eT^!3$18}Q|l~Jb^+kEA=MpAjy)X z1m2+6PXLP6rc7`*0Z$Ym6#~vP);&|uMP9-_XhU>Mj|9HOJla;E+LN+>@-yQQN*ki2vH6h?DVJq-gy-tYloiPA)=#~h&)pbt@qOs| z{pO8yv7Qmtx6DEGU4DlmvTcil`X}xl@^$Hox;KRJ5hftHZdT1-uG9?obQ?ni!@0ax zd~p~2>(mFIIFtJ1QpHGCSzh0gTHKa|jb`b@5lvHk?3Yte+enEgpqwq~(sg(snHbz; zOl_5km9fe6)D@L~)<*Zc)gU+e-Qm<6MiH{nQ8&Ne=n)l$kL7{7U0Qf;$~B{R<9I%9 z?+Tb6?(G)Bo>}j3Il#ttos=M>yTJ^vK~edC{2nN&JHA~+s+L~($gTdX3y_e8$S;`s z-_q`T{2GkzA}$VuG%6~d=XFi?vQjoxiE>@TUI}g+$n?leZSk|8TH5d5ziLS@rUjI( zAJ;1&R`<}5F<5H=TMlwi+m*q&VF#NzC*1vSHCUHc4q}p6WoYb67zOAcEP!Yzqo=D) z8q_+Aaqv!GJ0MEWkwE&{GeC1Ie)WBZV6%20voeOia2M${V{Y(feZpNW<^=TzqEDgH zp+d#usZEkzHB>Xz63i}NXJ}MwLJ<{0@GJg97dF9u;#MYz#&w@-TPzpEh%K10pGW-c zVMbP`oo#M$j3&kwaQdn5Teo-_)KFG2$z`=KX72P^BfLj$OxeMgXIk7YLeFeMid&AO z+*g8<6a}{iz8rJaU*KLTTJSS%?_*ipG&)upHt^0Y)tQNEksBqdC;>6+iAAgXFo^VLxDlxUQDC7%LZ}WkuQQe)cB~CMIYBGO7jDlQcDzQ3?R|Twt=r8|1f2^7L zlvd zM~!OMRr!#<7@IijZsU5x{!9hW7`^(#(YgMbzw3jSlIFP8bqjZQcB1=!J!K)hDy}!X zjnBBa17p!+`KXX`*BbZqn*EaVo-gqw8()V$brZZYpWDOmYxb|o0shz(rK8ul3S5Fd zBfPa{z!gnJfG@;~i>7^YZ>E=4*ozhdq4CEvjccgX#0lja< zG$v!9<<2n1p}_BG32-go8Z5V)C9Wi1|Wjc&3g>=(%BG$rtsbQ+1+bopizOr`pZNmgu5_n zKia>kC6!WR98|+gF%4TaA2Z?4%`g-h#crboP*HRIKI@d0gH|f^N1=Nd0<_oiM~<@* zaF}jJb;Rr0@kpt4cS>$)%X3Zt%6v^-(Ls-7iKj?@ zQd#o{!SvMz15~#Igf|-wswd+^ZrAWm+E)HSH<$89=2M^2W&`Kj`MDZx*&ud%GC9UX z%)j@RHkU}!wrA;Y0$@$g5zvTTz0O5)iPavmS9%JuCsXR*!%K>`A2YAij;;Rgo|`%H zl!dkLB3nEW$zFeVW122bd;zojT4H~lYvwak+HK36j9!NAY44^q#O_Bt@qAZm!hm4_ z&PLX8Y~reV`fuVMtivWL*Xe!nc)r?UKqlA|O&s{+OK+S(Bxxf60P0HNK z;DK>EDgGDq6i`fVu0#!D9Zx=YHy{VT)AV)!{u}FP<@o`xzY_uh4ih;BdFjgVP7^<0 zm0mr{#@2Uy8Pc}3MS?uOs#z<8c5>e=+4c|K9f_ccoroM2p00>ApdX-W6uFwMtZjE( z_XU3=M;8OP#>$eHRuN9_a8TofaD_8$ru!~!4~s3&Cc|8tBA85nu3=5m@8fuh(k#gL z$?h|l-C7;hV!Y90wvn1TPz-oyG6GZ53E9Jt^nDZQEzTbxP+AnBd?cj$;pYgV?GMoTIjLHc17;55jeDh>1d6v29V=$XxqJ;2#eh1j-aT0mOtWr#t=w6-r!FB>h z6u5!aje8qqENeo&KEvMbE%0A1?pLM%kc*r4!FB!G ziG$YvuSc%$K}vhJ>Mr-j%kB2kxOjZx=F7Y9T&TuM=O#XWAobUQiJ?#^to3#02jSST z3b7OeI^QbT#1t{@ro6PX;|;I_IJ}|VzWHLNqq3$gu)si-F}Af+Rzd>kbh`Wl-{K%p z4&X>f&jP8MnwroF4)1-gIi=E3e!qOfN8akgMN~kHKrV%+N)zOwr%UuwIgGh zhj@})nm77xHZ72}U z1jj*mLxn6(WN(Fqa9jrPY7n@=gS{X4XB(GMPr4pa6q!$EB+5wG0#OH`bn}6@_$bxo z_&G8AMW!TC{OtYPcaxer4f)O!YYB)sFFK7$YdSV@rL=u4h$g)h^YIs9t0q+6387rEJNSgOwlF4qw3okr9 zcBig?@QvMlHJV0icpOeq9c?y{b~QthgyPI>a>Vlg1YM%sPiZFPUPt5*Qe50~SZE93 znpdC}=Nn|RrYV%{ibU~F$q~>~d3=hk4N!ZYa{ffHkZ(_QSCwhr_|Dn!THusc#sD)O z(6iUngRnqtfDnw#iu0S#XcmguQv^Dnoq{?w(=t+m_wNNg$tP*m8rh(?yM7F4o}yHO zyfXu1yFyB9HepyjDa4~Zb$NwR1?ctU0XQZC@mRi9PX!n?ZiL1I9 zoVlk+xe}Wc26Nsz?<(oq1t0GKa;_tGUYod${bV3~3bX@Hs;5-zzjkcCtXGu@nZp03o;Y*$|5lUfYS1&qchmJwYwEDM zX!0*E=7#@=xHvlJ820>hgfW-rNiNS50-h)S`cmE$%3Ygx9{6|!7kVe%h`#>NrO)K^ z#ryxCBtGCNf@>if;Z(Y-{VB)>BZ|8<##;pCotB3};{};Al;LLIGu;*HHmGYnu$D+4 zVufuIr1FJdNiSWa8aASgWJMFeHGc)6t|OL$G9mQ#ab$zd5VPC6g$M>PxIpLx2!jV8 z_LD&b3~{oCN$a8DkW6G5O$8yE!|apzU@cz__C=?7gn> zTRz^m+;v%=T91w>aPeyCd^m9N7204hSjGLasPD>jpU?6Lg|j|9Z%)tGwArFv@ZUBU z{kriXa$g$XyLOrCG${8Cd)H44*QG6w+qL@Y%Mvg(SJg%L zqHEb32}lhKIqKxqsLz#>Fg2IJMR(~`qI|xc5sRh*4I(d=VV&4jm-2h49oXZJ-kRGO zdG{$jRzsi`l$~kzxCFu2IAK3b?*Jp4R6x}AnwE#GnyWh-k}$}}7&?2)4;B-$=$;Y) z22m&TU9d*1hQtl_&nXoUcHzf0L`j%+*DE7d&=VngJW@=DOp8O>*pG&EfDu=1VcQtn zoIh#e)b&b>7X&?ap-wo%cg29&fqiL?3+@CXzXe-&V8u+GL5pQ~l6=A2nBOJO=n^o| z!ck}^IC3M3Zq25vm=5UxgSKmhv9Lx3R%LoO1M4&l!|O6JZpCbuZWr8WI!$MjAcLFQ zNh3+(+OqDXR>HjG7i+L2;T%I9B0Zro+pdYjdV7@P8_dIT$H{(#V`=hs0!H@xp>xO` zscNki42Wy7c6vhs(v-oO;I36TI{0&jD{RRwir6YX)ZPqfy|o~b*@>N)wK>}BBril9 z4_vTP>1XbMqi-^G1>-h%ycew0#=2Rf#;5v_?zE(9w`Ydi+{lBh=*j`ode**yd8?ta zH;{WyKiMR&5-k)W%&JHu@3CX(yp`NisJV0n;`(RYB_)>1|Pb2+LwSa7FP|Nqe95X@-5W?I~Pm$?f z6X)unaO@tzfqb?#Sq^2)?s7v^qj`7b!tNBHffPj_ymiU~dCT8_``ZU7w2)X2E$em2 zBuYu_ga}^c&XY8_=AB=I(^2yknJ9$JPsrkGH~5I%;&;=Lj0wge^)&xvXX%V9Y>2-2 zFAS+2`M2WwzmdVlkb&|e910x2e_~;)jN?uQtwN>BD;YJhlEWpi91!i_B*;2;C6@Ky zCnGFP`QO!}4b`%u|4qGE7U}=A$$!lssHN@u{8cTPzo_Xh2gg-`fAMR0lg*ZW{~N6N zZ;P_|1(B}9Ul}ETz9+-?;m?Kmdl%0Lu|Fl^pIzh=`Vh^YKNBsJ3Nxl>5a94t>M$_; z-okrT(=-@! zjtcj~FaGkMP8ctL_iL*+#GA2o$DJc7eOgO;#8a`R#l?vK^lU)p?YS$f*EV0&mq~*t zNBFX)p2&OyM{|}bht_#pWlqkZzu0KIC`d8xoZLwoee6DIWpV!hga>_w-}?o&4|4D&p~J8=4lbXiJ8 z_`L)O4=ua&mwk4vD9kgqz7z_5Ybhm{bJI5LgObcBt*-6oueYwp;i3n8jk5NL1u7m^ zdqYfhd0}38P!prJ&hU>aA3WhEt zot;?zDLx`!mr7S++z?fVa)fhNi76|atOQx`2~r-4`(UCu`%?U z9hc;^^9(ybatk`E3LbGzH~iV;8mcnJ%fRiwn(rHG+7@!XfW6C-+5qunXnK)oowe@V z3(RLJG?^`aeSTd>dWrPk%78r5t?0HA_aWiI^AvC3sU^a z!|J>;t4d_=8*OtxVWT(GgJxfDg1&uyAigmU$WV2uE#!lA#?w2edy%=Ebd#}V4e8y*v>{Xu=C=~J#f2fLg#LAxuR1`|$1-b#Lr zH`BZmm;A#l-a7{AJ_$G!dV=)s;>pl5=SSpQ={mJ>uG@P@oV1Kmw}vsanKwmn5ltxT zbHvir>{vv6!=Y7e68A{UGryUn*utmt#1@bQw6^gjNilyY$4; zz1W+UUJNa0x523Ny(0!`>!IOU#v1(XZm&)(I={QSMlQBjJE~s5+&lAPh@mM{J^vM+ z?$l0nj=ZLguw?IaK7SD@%Fz&s%8H*P_joXG@VIpgb$dQfeAb>oJwo$CSCdx+$K?Wc z@3}?Mqusp_4_e-!Zx(O;ng#C7iuiv2u(h@xnG(zWYBv82&jtqb0xy^p@xjtUKuA?n z9rf_`gB+Ee{mlKv^B0Fat@-z5b3ioig`eSZKG4rnZ0{0mSSX{eRy6n^jT1CrZ}-U@ zQEo>as>U`l@oPBmV}CT`7QQO()evWk3|<2P*0YC1ZuDFL|^uw zmQ%hX0o4vZ{MNc`=qP4B#dO$ge+7?n>YxJ5$r<|AKG9aM5$ScN8$}iGU${FaC(Nfo z>ejECBCH>7yFG0-jVgc0$4S4o^d^pTfxfY_*mSMW>d?e?04#2&)DP{6HMIE3ttoM! z{aDz$s99~Dlq0FRQb}(cE(eZjL41}#+VnMUbG+-7Rq45Zr%10b zXRWT+lFx0-NX5BK-Krh+aS=Qy^6R#RoObh@9HQWXB>S!KPtjqIO|YcU_ApmXyD#@c zS6MDB(zc}Gu@@0`f4=G|)?bQ_Xp$(B0b-d2c1YQNk^Ns4DC}|y9-+Q%NRa$)?p7=32bK{XlJ@~+o%jdXu z2ea7HvB+t|q|+l3$zZqCNIl{=4^9tm8H;c+KETvBU8y61^80CC`p}QMrE5C+@yb_2 zYMFx8Wx<&Y<(s-ztHU*ov>@X#{;Z($b8k^xM|}D3z0o89J9)kyX%!RX-6!KYjqZw% zq~7mUS?}M#C!1z>nQ!i@M$M%^Kf7L;e^y7@d=49{eGXR2EWmbzycVtN zSwE;amaX~b-Su-qj~Y(UJOPX{7e6|tlAAeloFQZA-Qv`!o2sE*{gLsUyI>=KjOk~oeUDe;Vs9I?VGj+KzWW4x5Zzyk%6EOKe*Kj0y@bb}KPp6i*XuTmEiLR( zo{2O#MlZ%x>>9Zi>uE8kPt=kIA*wZ3&$e`*^5yyS>fo5F=$Zg6>sM*Hl@xgk$%&qfc`v9|Li+7eX__UorPOHg0E+I*RVp zJ=7&|Y$^4~AZ;KQNcL(QyO(@Iy!+P+JPI|Ly^^ab*nWaTCOfIFOcD4bd>3zV_*1>k zR#$uJzClmVP5hX$hj1vUF03PJM!)z_9Hs5j@s9k9p=!MIO&~F*aj}Q-$u-f_KSc0R_{fCVCUQ!AxhbKapef8JG;5NplhX#z_g!`)}KiguRx^7ekZ z^Q%ktakSeB`-QT1l@;h6arTlNKM4lt9`%kA`BT-i!jGjw41B-}jjP+g)O~j$I!Etz z1i7?sT|9kn=;U!}qTyjtF#mNt(wob6-(;EWw%5J*r*c_BmAUUpXMw)q(OAhh@x-Xq z@GB7RS@$Cq8>-eT#rcy;`MR%N{L3SnZbuCUwFfITJOZbJc=pvC(^(fDoEGeVUHO%a zt$%?-i*F)j&L!%E z1u(9F3RO?lIQ%qSuMQW`ZMp$ZUHf_N$ja=Q!#ma3`rkS?qCyXyPprZxJF?ze)%CGh;T1hD;D-e^a6-@XowWb8lTwC3bTV$v_q{nuw(W9Ke(cK6 z3t!Do9MO=xAHnPs4ZF2jyCN9enCkjo*gziou0B>Mto1xA7DWf-7PN__vtt82S{eoL zJzP_{d1^OLNYDY&rs}H?!V;~;F!$H>*Pl6s?xC9QhbWAWIVzsgx)MUo_dD@Qp^fuY z?&vW?{WtH^41V?&ot=Pk4ib-d!7(m_r0uq<=sIMs;Qdx{_M{#=Yn+C128d%Dnq}1dYDe>-sYAG zdGw0s>F#J2+4*g}WV&Gk>19u%eD*~h!=(DcqxU$qFpe{HV{VPNzOv%-PnM0f?y4l@ z6bw3y;LSERXD^vs5KFDzASPZ6=YCtb8D~`DnPn7nB^KfU-^KcSBz1oPaqv6fk-Rt}c@!P!NTpB>KTESOJn z`aMRNNeV|q9u3yD|KX}YoY@x@%)NiwzlDp_02on=6ICv_d@&x!3ZU6e?EUV)hTsm3 zfxAtUKkRH=K1rMKZM%Kb`_9VgJ0s<;8C&AF?g@r1*uUB$*0=lceC|_!^uPij#r(J( z7E5Gr)HnsKh-NpQxsjS0zEV$DU2#^pw2@XMmyF&ww6N0-#a0u@11c%1m zt#OA2nx^MGAKtm^-nlbty|d=S^r!Axr>p8z)!DVHcAfw4I%2s`gePLBR;>U2*p+6l zz%|T}^QDAYOTNw9|S(&-AJ*PBacmp=2_?2*oq z@O_?i3~=>Z(tG|_Iul`5NZ=QK8Rl{A*IbvgiV{S}uTd)>#OWq_q*I(;G;!5Yx#ewm zQ()ZJeimdfYGd?;wULz78_7V7FA}MiSFvcCT5V|%za(7$y$?}wR4(6aBu>#M8}=Q2 z4aVhh|G?c71@UY{Kjy10XbAQi5_f~xvlz5jEspycWPu<1M2tPC#4?^23|n=UT=QP~ z<-+{jtkplw2KmSymFG+CzM8l^S69V(UZu+-=^4ypnH9 zQT>JZ*K?Xp*3;F0-LHiCqKZ;TEE! z>g1AwIiaWZ`DocdhXr$xwqGk*`C~%l0s8ng*YA{-oX1&a5o?I_L-!}|5o#DwU+DVX z@kdm!lnI722#*+4B_=DGc*_kkg$N%pa}Qu<^n|X}eIhIQ*e9qlaP!Gwy5|{hAxXkJ z_Y9OF2nG!u0))&t8A4vTRV?C$N>088w9&Ujp z_T`J_l)TLXmaVowYQ^HCy+)G9pUtq;8GZ|@j?-A)+5!6y0w+Qrl}JjPjd1TwtBFa6Ij?3kzt#U1bzydg%n=0f*(_ zmUt>Yd21&?WSBhl2ztD^2c9y>HQ$mZsa3bag~pI$X0@LF(n!pF)Sve>rabr4h9s2v0B8UgxvE&bq;W-qfywAx7`)bsgPn z2TOYA7H)Vw9ny5XnYhVduE1J-E77b)7xna^9#-aUu{NO@w_HL-8J$%#@rD-6_dEWN z^%JLk=U=+7gBc?vA`r`g!uY&qf{XqQNm^# z>Lr4yzT@ivrnI3$^Ccz=25e1QZsDdkTDU9*rN%oFtK!Ta&oW4#1k8RREGe%pS$srs z5L{Q(%C8kQ-XZAugQ}N*nf}psmM`Ui;j8mR6PO_{RZj=3e#bUe;?f@=%D?j)-R zU=sZd^?!StdE6tH`04+W z{h3fj?T=rs`b+uxsbFunGl@57N479L`+y-g($~5Qamo6*_ITD(seAV8fR#N<7cQ6}8v>-P3+w79n=HH811uK_Q%T?}on6hm#uXyFUk=Kr=1b zc#rX9hZ9iahSK6}oiGktOJaJIv`CPrK!P?08Fj7njMNc@WLhTC7DI@6-_D*D`o25_ zP)7JPQ!++=j=OQO0+MdGZ`Ea8q5S#rY5aMDela`ypJe}hyoCy*BI?xYUAT|lO?%## zOX4K^N-l4r145~&RjF8X+)aj5tWZ`2uBl=;(bfeDjeHe*CD)HF_<`KgY#(0yxif-6 zE0_Jp-FIKxf@FmugV#b1ltdJ7Fi4K4n@F*=*jvmlEX~eA&p=?Q*f;f0k$MSdPCb!` zb|GVyXhCx2B?Q^+T`6~e| z(s$*7<-k4J+)V3=^7K_&4CV1D-&=lSInL{=Va*Y);D*FsV42GR4>=78?`J#9s})zi-w12qpWRU>!!^WmKWE;dw%-a z8oHUti_8O|ePb(O=7i@+E;;&6Q8~rBM@+hSJ$$h1Nd7vZK05MGM_eNGQ3JF$$C_@E zuvvNbME5JGwWk>rl=9q|`b9Rq?kQ{*y?D@w`>m0~z_QrX(9o5ewDky)#^7;I!p)ty;Rq6 zIi8D3%4TxpgdP1E&Fo?*#dFNYEWaEEQ~q~uc|xGmvVapyh+I^esCrc4HSW>U2Xd9w za3y#reqT4`-yxCQzp6IX)lq^L31&!!d?U#m~0-WucVq39h5n@W|?C*PtLK zfe1mBECairSAgbA(C+mwzSlywj`<1;?uk#Y61 zC3bm_`jG8-Sko)CNWO+ge5SSWZfK*3qp$6=~One%$~QDDZo+J%6O1o)Y^Sl%V5hIbVXka+6`@G#X%4?)WEE*qWYu zc9XB(5c8*wF0Rh`^P$wGEr^@J>KEI_P?brjm9ne6K=|PvkkN5o2!@^k+cZf3!OD2(EqqECIJDy5-L2Q;>{tRzvH#F0_^va2*UU%O zEeuql`2gIVHQytD1@9w>8pyOm$YwWMRU?5$%1isUIFusO3`c3yNh&pwi$R@d7w26H zQdp#wNuM%UmUMB^uZAg2&NF0rY^`&b&+kig2wIeP!2jf2$MA7J5@@L)qC{!1u89KV zJO4XBwJp)$)cM7q$>HzW{?HZAy^yRKnrmx;Uk7ewU5Cjx;AUFqrdg+V_O6C^JA|gU z0&!`n*wWmT`xfqyXSg5)bY`8wzuS)aO^r;{P`d=(1mt}N#rFWBd`u6R8>oOwMQn(jw&HOSkYA)8%^av5(r`tNmp)~9TZ zctn)-%n%VNwB-TktZ>*JcIG>NmFanM|L(o5M7A%L?qY0+9?K790-{0tqv9@qm%7rQ zCiR$mFqdQI6eUTq4?alRF#lygyR8$c*v|~lS_%oD&tzmo7NG6pclat_sE&6ZQ#AP; z__}^)ItqOIe5%NQ-bTXC_9Pr$rMo-~;VE&c6UMv4r|i3{4O;2ejNTnFd1s)0GNB*L z#Qf~D<$IgFknD2l2DjZvBor@Bhf^+gX?Q^T`MNXKs6ByJg3dyiEbDfBtp* zI_1rgXYjE%gtEEhqa>53Q_E@Tk&AtpWAT)FqQf6) ze7cL0$zQVvt--Pe0#!n^H)^>=EensA6}!b((1~h{o(F!TWAP`Bm|vZHt$uc1#TceY zdPz1M>>QD2jMO}EZK9~&cSu4&1M;`AgGp4RlT9s77UMYQePhPtUp|RBWIQDz$W~T0 zy+HO|=zlS6P_53{d+{&hfY1tDyb%?b@s_S)M!PsfrfUb+b_R~;YR>e?QZG*GJByQq z-Mu>ZB%%uc0%A7d<|~&dt7=n)JrWZ3lL%YN@Xqb=R7i#I-#vcW&gvorO>{}PO5lt! zw}8&@T(NPQS~S&wm`=0IqXLt6E${cDX|NV^FqZI@l(C}j`uJEJ0<>0>N!(PT3AM<@ zar3-o|49C%Rb;=~yhU4RUM>kFPPEyG+}VI98|jtn%iSit$b;+SUy&2iaIPtCT~lJL zs0%OuW~xb?Z3~(gcB6m3Uz#`WPbd=9qY5WIiim5ZcCFc6ExqcFogC+{l!AgjOQ99TW8X`^*mTq>jK`1y3!ME7-(LA@Ra;RCA3S$l zZ^3VTEm(!i*U|C$Dn;BIZC>M><{LG3k@QJ4$};^3zpL)Wuld|fy==8vw-oKrU7V^J zM|_`BS!s%fb@Gl)mLLq)kVN{AIgQnFHZwtz`l;(WG8K4Qx2^Lp87GFRLSuR+z$<9p zAGO#eC9dhSwEB>Ffh=lj;zmOH%jNgQnnzF0$|Pbk5YWpAC27d%JdRms(ya~~r54mls zWqD(qI|C527_-2$VfuX2o94M%ays$X?*Q=Kuy5Pkbu>Q{`zh)Oqx4Ou;+sy4sz4PAJ!e@IktWP?ns7fX(A)) zrpjXF&C9a*kD(kWHH>h-6xJ!zmW6b zgSQcA|9w`aUj*x{-=(TiaZ2m74slT&lF}bO`|&5(ZFl^B!~2DTA?^!D4Dwl0<&SR7 zL49+_-0b{BtPCETk@9to2+kbl>NDvYW3=i>R*1r6Cr zpY`JeZR`0oDV%`deLfQkmiy-lGg~wBiso4D5ts9}x*xx2#-V9Vr zvvBMAurEQZe$G^!%WGsL4N_rE#4p5Coc3?6+Do3d@Zp1GWQ&-U!9un*nTyy2bDs}M@---CRn8LwIs zlE=Hj&q@~==Oy9o9Bffxk<%<)f?1qGn{mAdo-EEJJPU_iCvSAg+pM6{_lbPA=&KqX@fQe3>*Rz?Uu%pcbQ)f29 z(U$s#6jydm^2=48#k||5vm?cdqYVv~RHGOE5tAFXR|-VZr_qjsFS8Bm8SWY0LyTT@ z_II2z);de8OMSp3$X~Qb)tA;>m|RC;qJQk5PQR2fDdW?9+n-dhGHon4dY63)QyBNcWe#^%j1< zxl7WNnJ6S{y>uAs#vPM)%MNyYlHgz*;88Igi2L>Ur%}8fmdw;) zqPS~}eTD{yGxXpb+B{u6dcW}VXLxH(tg*LkjQw_9X*nGRU0;>5p4?mUHrv{R{%DS} zo)+BbsX8$^_vV)ZHEK2N3XfW!tpii$rJ#F`QQas}@@j!SNr2}P1MUhR{Vn%cG+wY( ztu;d;>RZV8Ab#^9>gWAv?&$ZR(SAb;g(y=0+>xZm2n)$!BY`JvTA*iJy5e}et)_<8 z&w9vEXIG9-xz$x2$>dG3j`&w_ci=CW9R=+{R32wvziP*+rfR$PV2r%|6q+b>!{?S4 zv7~N+T6n<_M`xqR>Y*Idvk*tJ@w8K(&~&4!bLH#DFgBbn%+A}s18{X7WKT~OS}47o zCsu>4n&+(N(OqU#9#c>~jFZPCjo*SD!fYDuu1baXvo*@<72=7dwR^Uv#W9c1p+MX_q0Qy&sP z$-wh@uX*9{hO;b<0)mcPHu8i9VpBpVQtS?*0~!TR|$AG zld4ZBoWVF836a9(y9OT)T4tJthY3D1$Wr^8GP`ROOK+o{gVofVwvzjPOTP_E;^vwi zuYDQvz4n)Zsd~wpazu5NeRwOp7}g&H!^0XOcZ>spp&M%zQoH zxP+`=?iZWzm?A=KAB{i2X!HnOh4l_v=rQ7#A&r!OjTx%RDCuB9PHSF8Y&N~_>N4^! zxRG4}8gazD3I3j<$nX!W*nf7*x&(iji$$`F)ZkWYJmsUd6618U+P{c!jZfG{(AZS# z9=?9|a*b7Oak7OCGM#}@&N&vh@f{-z*~}^``eJSvH@B?A_BCzh#tM9QD)^_O-L0My z`hmP<{x(9%1I@DRTeA+cHKKhUF@?3OlNbbMDIDd}*0w z@iB?S6B%L;D~gyR#rBi`&IZFZ3ff=t_ld>7JC7)wxVj?}CN;&TRNZsR^7$=3QuJ%5N*SIeOJ@jT?)q%uQtM*ru^yxT(G2}ZTJ589;2*P^TQwTdzy6W zGfVDUx~EG55%UN9LyMNl{9hg#2J;tGSM?oGHtANL-y~t>grY>xvKxmy^Q-9m8bq3i zI|Y;Vxt2`#99P0`d!;gi(d}EW@x=GPe+cp3VXJE_d--Q5NgvH*lDsu-VRy!uKkhR0c1UHKMa9}ZnNs&4yw1E z$CrEl|NkqQ4;p7V^)u z^Lp#`j`VIU_ygIL&sJ93CuPDf`lP(iY6*NLBn$uHFy1Loh~j?CwP3mVlNVLPWF4zf zJD0>;`NKl${>vA`u-mzLT~`5QG)iz8tt((M+ZwCsT2(!dLa#*u1do%YWOSMcJVS)a zy;L&yK{mRNZk$-@mzzI*na^WK*e|3-shgI*+(M|~b5D+-S<|EDp*c_K)jrQp88J8A zfe7anG=8S zgXl{y`RfzP9vwREZ(>MkFjX>=`xZ(k3q9i0v9|JpmC*K@kNOKAFe16>m3;ATSh zOx_w;lz`C*l=W@(c?8Gqjx^QDa=o6tE#BaT52=d!i_<^mrL%>cltx#>EcFX-(Y2BjDa>N78IOT(wSVte%xoBD|}%8!~dCGJN77TzI+Hn}k;+X>A$B zBThG7jvH-v^Rc3e6L91~&-U4Z!4%TZuZs25t=bMpVM#|sVTo}^A&jKUg?6hVq#Imp@TnDN-%F_tYnpmJ=4dU>` zHvP0VlWk-B)ruRA{0qVI&$}i@suf=_Ps2t8>bk^8xCSfIY$1gtS0GcMJ8caCMqD|1S#9;Z4$i8Nqp$-KVz=Cc8ez z8kwCJs1xMO!p?%{-T}c{PJivr1TD;Qx0Sc-q|tPR7VcCm52cxGGrbU0msLgl#vk1q zltt%xqx%%1?WOb+9fjc|Hf!iHnv>0>f1YWRLYBWOOSVi8gDfvbsWwV(xGh;-x@&JI z-d8W(eeM)WzsPrR{CMr&F}LDgec{RjlZtbM$POQR;V~=2FnhgOZ5n!Sw-!U6&R%?< zIrPkQVO;0w)MKr!TzS`zb1KgA1>xx}qVo3?IE}Jgz3!!)++^zSxCKEey_oF^xeuRQ zLp|DxdUqz!B50b{Jdd1=$6k^A$Wfd&8);`F*hk4H@YslMCU($37ZbiF;Et1$tDsys=TU&T77@p>z`J;_@AUm&6(X?2K-tc|S zIu*sVg0eD2VPWCi+S+db28yY+wl)-5vfo}&@fwg$uku2=%mc#ZccNlqrPnlIZ=IPk zT~>fu6*D@jc;#i4lP0Ld`%3qIX?C{2)78O2)mnQRtZ;o}OBqz6U9Sl6gOXKF0IJ4c zYGg=tzz4dQ)YMRG~07ZX^*{e+5cRuv_h<> z(STfb6`;PK=3M;u@09lj+w$@|nfV^|0DyA_#-J7!pKD$Br;5Tn zexX$&P(7N2p;y<}gN=@GWB6$L<2@+A58;bEJUK}OfDPXOoqKPx6NbdO>FK-&L#pi_ z_X!v}DCo)F-rid|^!T{Se2aUv#b!?k$zL|g=Ys$|$@o8jCTeJ9xWj*S{l`sc=kv#K zO1EQn3=Bf(|2Z4_JoWf*PJI8{%YoTY7bouP^h-sD7{{2jq@EP1OS6rTPrM(Ey!f(WIG%5kozFhZ6)@cl^z$*D;q6tV^Z6@upC9MD07 zk!yI^w=B73@gIrn%RGW6&hDZF7Gx)6-^L@2+H$Hs_j2n8K-BZr#iHB^5svG{t>cku zS^h@U0`uB9aVH_(R=*!pTSmA~8D8I+sc6zHCoAhxp-@z~78c#xD|3!#SYE7>c-HQY zqkR+uVqGePhS$h@$=cqFKP$U#?jgFbMzQu2Oxj`kH$;vzaIgc}U8;g7KRP;eteo`9 znM%4F8a{r8_e`&6&NUFH+snQ?Jn5p%Zv9Pd5YjIwed;Au`C7C>n0~on)TdpT(yQap zN69@~TjT^Op#v~B4ocnj27}AijUb_mP^z6_PMahiAYs%K82A6rAOHK#Yf2q|$ukFW zZ?4l_!L@bQ=YA3g;}XT|9oAC5&7XbhjH=K_6YT2_&=Z!mOinDNR#QS=;Ru`ul(5}r zinT=q|Gy&G03?(@UH!G+Pa~Kv(2|p34*ZmF4hXM3h@Am!vcv!hr8AiS*W{V*3YDfCE z=@o|e6#mUm*)>CF?>ZGzk9MJsVa}sINcaMUo@$!@Scec?UVzVaCSJf>J?UOMsg3wX z8b3XtYGsP7BPh4IQo+9L0T$@x zi$#kudWe6S^em2%M_-EcUYimjbPCA}O`G`^-aTm7C;r7CbGy;fXLc&Z>y(`j0l|_j z5<6w4*?QiFRQQ8%nqO?>Z;jYo2pEnHol3iH+qh@@=dMIG%I@xEQ**Dq25=!sPYIk+ zp#p&)KE3|XYSQT;H{-kjL22R6NeeE=KDjOwQ|UQZFwVvp|8 z2`~4iAD6{9^;9a!z*+;@!5gLZFT$tWfF=n0c;k%7538}WjBCk@-z=TQ1P9Nbc!9=^X1DH@?CUj zpKE>XdN3U#h31g|R#;Y@=WKU>C0N34*Yv8LYFhM2RMLs^SX(ko_P3+6jZXF@5(}h? z{I$`7cs@?#7!PN{Ed87fU%=P5!8)dTd+}!y=X`kaPe3bY+gIe7NSHV^?q+s!DOZwtQC3W~g5kX&Y4x%l zCZt<18jm0kJwj%7enua@6Gb1tT(kI@>OzV0-261&YLRTkt4uwOK-pt#d!J3Hknc26 z&!JtL73FC26jn--VP8kJiF?QEcC2Fhva;h=Xjhbk`K{Mopm|4Ww+~Mf9;`-4sP{7d zc^Yfx5Ld)TM*pql{;M+OS;zN6P!%i5UQ55IU>W&CMhgy<4?pn{RoUWzK1PUG$0b=6 zxb795@Ob2+z};u9NTT$&9F7@Cj-zx|Wa!E9{YrKp&c8-Rp6|a(X?8Nm-?))anrx-y zD_!`iaN`Iv4;s4EMPCSrKPppA11-pS>Ziq~H5=eUL}-e8EgqV7`#vBVXjjDV4*Ib( z!2YCgb{yW}@wR=>OcGl7URM&K^+93Z8{Dy-h)@ps(LH1q?I$SevDZJiIxQwVA?%*_ zUQj>jMrzg!cCA2W$oal*pivIQ1VgY0)d$S>YWOLF;%rVEqdn_zGr1}YdLiI<$K}-M z3Ly|b!Og71dYZUK#)(M#@07Fr5AB^}QGLDa{f_+FZG+v_CX{%2P?p_;?GnM%mXhJYoPX*+glW ztMFfk{#%F1#Ovzths~s=#XSn6vNuPL`*xzM&Y~b8t1NViJA=xFweNvRW-wnShfOBm zfG7nxZBo1dzt7D^+`;Cl*SrpLN-1Y29Tt9$47+`o=v5SXu*H$+KB*YOo_U^T=Uq9m z{+S$`O8dFI8^N&T4U5#V>0DunO9ZTeNB|D*yqDS0nnR6{p%@XZA4Nitq>q5kSjsMt zs_;LQNR4o5!Ox=IyoR`+)VLl#?2OfI;2C9*I-cCY67C~D5bk%FI$_nxQZBB0OjK;C zbqQ^4H~J6H|48FpME)Gvz_#^%XMegWBF`Zqj<@N)gy=5Yu8gWV+jJuv&0L;dDfev> zHnN;w$*ldn@o%r(erZ=ku*v`MDRsLiX@=J@D%=ku;7wg0qje!99{QT3eeXvbt|Ko` zYkd~oYSdW@6^^`~RU0ns{Q|qeMcZT!s86ww`TI`A&SWR5HBf=Np^tPeL*NK(^zZxH zC~+lv4_y@2NYkIvo(ZONk1=q_3kM6&Z{Chj(zr9=vDzKSH&WW^%UB{2qqeK>- zO2WP^NC*%tqn+=h@ojS8B88^hZC&?zCdoGG&){XG;p#nHKKYl+wl0GhkfxVkD>_!up`xdt~)q7atw z@~M3@TuH^RuQbdMYxm-8#cyzRWWX0$-(B0k3dj z17$uXd4W(}2{hN0{9TqNXt+rsgGe}_QC4!t)-6bRnonw z!9Usqxk6LgWJH8;(Sk-cqUgo8<;yQC3uApg_JJa@{gB4b@1V%D9~bqLd2NOa7QJ;g zHE`2wRVt5b?Ah1%g5DkC??w)ElB$J9=>$6P%#*ZY%T3vw zLx97*;!qJ?v!T2OkVAUa9{HS}zVd&{hlTGn+Lj#Hcr$JNj$eFJkio}XlH+;-ZE$JC zQIXAs4q9_iA3eLP@uRJFqJv-V{b54p*K+;pf8*lR37cAc;I^6Iec}7Y&=Ztx~Yip*4)ZK zjXsoIU;j)+fQ;^lHEapL+tLbrXqVuoPaVZ8gwVw79Hh2tU0&#bBT+9oAm2P>hP8_k zS}y?|9=jpJc_p?i@jcRF{8)4aN|3xzeZp2}Po-V-j!UTEmgk~HYhmm0yl>;waIqn~ zZ4?SSDOFn!p(yZ&?UQ4~VF5+2 zShZp(|0B3ok$fvR%R|ojWYgQ|8N0kIb$Nwx|=${(#N+4y?$*_rV$88S^l{zs=_U zHZ9}WLu$-+2qhjSeBR*eoyIcLlKG0R8J6euk;Vt?2&zA*mTyfJ%9Ir+Zugk~@Yt~h z)iZQJb7M*!bStjt4!T?&k2L*fYoe_PHm60Uc`=o0&)NSukoF>m9T2lk}Bk6b94A>p*u^t5|qS& z*xr=xb<^p$Erte}BPTlX>VF8})N%1cSx@!!- zJ*Bs~|9XpCe}#69lWS)bIjh;JkE0jb!(R6~#FS$@DAg;Ubx@kW<{EYE^<`!wYbZi& zdS0hg#}L?QUFZee`5o}-Ylio9xyVJ_=G%ccJ>R&*nKu`FX~IKb9vhIK^h|A!x=4Kc zvj5sC=W{HF^x0QD9e$DlL}UW$VOc6lL+I-eYHr?XX|>;37y&A+thW^m-bf)i!twT` z9r-8EZf9u9NSwKp?}lzFxow;^l&#Vk60^6h3l+H#^4VLehDD^4W_zF1i0`W9*z|dt z32eL#b{c7B0j+*;13|Hg514ivnG^YGZnvrnP0OoJ9_wf)f`rEPR1B)cZ>-qwrr4G< zVBiW8r7QHdwu(6N_mkxZDwa%F3YV{kGY(3^M#?Hvb-|crw^j%K2R^X18aGog_0G&< zM07CqM9(>0az*xD=Umn~=L13A*nFy8X9`X#KdG48XBqwa0gAr zd;9x;xr8ARC&6bWtqNbh6haWkMF5w3dSW6Qz^#cI_4W0Ab9Sx;$c|NQ)n3OSuy;!j zPlV|0!|{Eq$JPGuk-WTo?X|zZzk#SxbzUChktnd^Rnrg~OLBF&r^Y^0etWXFH-7i0 zrRDyM_0P0l;o&bVSfRGIw!yb0&cI&40)mB&ZE6G9m4YWjz&lVQBdG(dfpyItjF(c& z);~pmVNYJIuB?>(o1UGuvo53#kMMZC~4rVz4SY9qS56^Twt9l97B5PZ7^WuW(UzOH60+6@{eD8jk;EU1i z++32Wr-DK_Ir{o&@egIPl(FZF=~V#cTYI-O5~pqI6=HU(KwA{Va(_pBN9C+Srs`YYLtN6k^xaZT*?gZ-S3otgNlg zD*@i4R=b${`J0N>uc1Sg05kHNrDgFq?FK0L?Ci|K*_qGoxte%->Xds7L=%4YyZ(X` zfl17&t*WZ392TZ@EpCd^S5{stzQ>zv>fhZhBv)5gFZeeyJdAxU4;DrY=&;|~$1G$Q z7P7FE{r&r{VwDvQ0OThkw#jVas{^{|Pwa-=yu4e@_ps4X3$I;0JYjM1nX;^@si}^+ z_PV-!8Y3H<(Hr!Zhil(wFXk_|EdZ4qo^t#V4mCApRwh9PZe8z;q)MU~yw+MGGcq%0 z?=+8VtyM1?7l%@cDO|-&XEF0V#Ua|XmizaA*9?6BzYC!9p+zELc&q{<^ z{#9Q;^ZGWCQ{Qi4@DA<11LYi#fg%tWSZXg;XJ+z$hlVO0iKs0q!ve&i4_2tULu*IJ z$vaVi45nW7ee;kx8LeOj^dir--Vq#)H!?cs|Xmo#!GbN%~Y?Pgunb{awR#xUX?FFDCExf$M z#xm|@^$Ouk=U))K=X$=7(f8KCj`V`#lXH-JKBD<>#Jx0#9){j-lgxOU3ougKaopQD zPIf+dr@=ha`oS0&4ORdN)YtXH8hF$-X$`!!y855g|977o5E85FbdNr7?nOReSuy^H zWz}K&f0yI`{4c<=&dI0Hz;?}HvEicRHKd*T6Vu1CA@dd6OBvg> z`cD)^X22i6H+1jXu&1O6A7zJF60@cSy*%987mS7UK}_$x#)hTRg_franv0vX-u}-8 z0l)5t0d&PT2?-x_Dr)NcasoVofV)+jDYQ%Tiz~38pmI)5&R+odyxa;=4-5+W3s~20 zYHB$i9v)LOGYQ)604+EB$&)8v?d>Z+%gHHsc6PoK7uN%T%70f@^lDpMt&yucJ0_Dt z_|KkIg|oA=^87O~HWplTx=Kk)<6RK0Z3bOiAH(SfH5& zK;Pz|`mBcuQ`fuQxp%Cr(*W6-&3!B5{EgDbkAZ-pO?(?HaKH&;aE-7uHy=puTRi{> z9gs!w?VX*!b8{Nj+ODqkZ()F`<5$cmzrDS!gRAt06t`$XT?HByssH}{8-^k!Bh%b4 zzK`OcH@-jpSO!5Gsn_oD?p8PK{PlxI6)&>K+vuFK`B#wdM7zOy|$+fK+ON=zloc!N0XzY5q<8* ztL?Uf(Md@+eK&`PR%)J-lD^d=saJ`X-{D7#^$8j;i_6aY?uJB?EHk$rF25=&M!XFk zrb0{apj>7{1rBW0%j4tYwKbu(%jlw_B50UvEBfO6Jk7ePa_jtDHMQ@`E8-3!BVb!i zh2C!bA@Bg;aC;nJKrH85DtvdhzY4anpk)dHEd8S6Q%&vM2dL7q^Q?G$LV|_Swr4}{ zAS7#SB=f=LVRe4q+&nWWsbXuqR9hJe+gtH!YHA9r)xpuEQ2P9t`yaqB?rVJF=HX$X zDUyId17zCoh_7&1h(t?A+9^zOgF|wptUp52p9QCKEY2n7!$*JaVaWT)# zG0p6V!mNIOWqnNz$XU8XrWGBE7pOT0RXPExUS8SExY(LCPipMG{onb_d9oX;S+ZX2m zh)h^s$r*8Yd^G9-Y9ZiVQb2rFQvar|?ppp|QB}hKiq{4FFW;h=J^}7jURGA8HUPOd zGzWsDg`UXkkwx!+zsbHM0f)?e5#YfuSU~@Sw_XMy&c*-&n%l4kcW7HTbHoq_zT_vJr--uf3xQDwLOVQ)M~c4Iz6 z4AOG0D++x8UZ7oJCt+6n(%&%`L;%W&a$oDfygl2L{rs|Gy%mBmp8ord+iLFp-c(U+ zjpeK&Fwrx!s+WE7ga9s|V+-JoIS-Z;6-5IsT5vC(m#jT}ltx}wKybH*Qn$w(&8(Cm2SjiuXv?2^x~#OgzwMi;`YAu(V4nk+dg1N+ z`&%Ba{I3p8t|uG>Unx7J@`2^VB>snX| zocgpL^*~@-6=*#ND-qY@nmg3#y8rZOo>EVw58zjd^!eNdId=%i(7-lopvox%wj4lX z$A5}t%1dLwIMW;2U2d*t({1|tpTISb>1fT)lR{Nxpw1$n7GYH07t3rZV8BRPb>C0_k?#4fJEJX40JRREIzR& z1nac%TTB%ygY6eVb!_bH3i1M&M!jKA2YgB^R#ILQOn9Y>x^rt1=_hL+s;=pP9egn1WH^l7ozuomjp$QQY(J?utv7H9Hmrq4ht<`161vSJHaC`z^krt zHuP)3=f@ocK2Ky_oTIA|IjgtlI2;Q+}5;S^U)Ko`{Q=uL@BI&SnlJy>k> zMx~Uv-tuqA_&n&{)DqkTCOBX2s+5=LEUeb550DSP=mD!+EdrrzSDk)lPYK!lb{Zjv zo>wP8HxR=Jk(Hdh2X(fq8RL{u&3m_AyJK0#t)q}imnR*t%VrGkf}dq5N&+VP;Xp#7kR3D1cSAzCr>fGVJHUJ^L@Ae!8pr)Pq;oo+{p% z7Svi4_6wkk8m=GS4Kt-qN2`=Hd9O~^I{ist6(HWs1J8H59QtimUJTc)i5$Am#QZrW zK$xf2hwdZ%{RW;5JMGCZGo(_6==@up17q>S$g^9k$X4z)g1P{!G|QWv_8FDB3(#ZB zij{W2PZl+5#JKCx>yCR&v+u>Y5s(i&!HTO+>so04s~4BR!sn~Nj}DB2G+WQI8&Te4!}FvmZ)Gog_o8yB~MWVpzd2$qwz}Yy5pHr?cJAc3e{Hg z-14$*_aMsx8zkWK8;d#M=>qE`ZFzi$bI&;td|LRSakRWrHuCqG2W{5PIg!^4X-|hg z4na`HCUy5c$X$zH)a#B{Rs8(RY~v1q6ECgov>o=+_3{Gvt+hiI!L0>PN5`G1ZlnRI zIDLfSNuXDJhNbgEbw!!YLd}3hFzRK8ZbTUm z-psyLh;a8+x)|2%E$H5~E8uC!RW-1lP)t6hi4CRTl!@T_+hYKoMXa^qKt9b~0#4FO zwNmR!QNYjWfgVp zq7NZ0-5nCr-6bhVDvh*s=R=2d2qH*HgNk%Ww=_sfN`rKRG!LA~`@Z}AzVn^E_qp8r z>_6ucy)K>@Yp%KOIo25Wn5=ov)#n6LGa@U|;&Cnn(~^s8ohEnN+cqqW?gX78oncJZ zbXk*^dK&F|!Pkm-Q@SyfKKvJ^7%NiD<-R5OVGQ>FSzz~!S>;qRtd4Npo3c~XRM7* z%c1nhrbaShH>(1wManM~OSgJE?Ay>sj{=s?g?{pb35CH_-(T3?!vgNxuGmA1I>TUO8+HE z{V%?Kd-Hse`nf*Ga|6cbnk>(C>5g}xkIM)j7vVlG!GCvBY`QS_Dvl!BKN3H&=LI#HUpB|@$d)bAON0|_@1B=z#Sz0psf51hEvSp#I`Jag z{yUY&wJOg(q%?0~9l`n0wA^OxX1L53TqJ0Z5Y0)l_0~t3y=?rT*iOu))$lFrBI4%S zX!e&8K}>T4KmX}1@~Wk8#^=l7aG)*9{vTArA^Cs64*uxl`?Bg8W-v8Gvi*9oT4J_v zqTnkT6!y4ACRJft+7N%FyfLi2)2g8jjcv50;6>T%dehkhsywRa_ph#N7p{v4f3(;= zAI{Wqoy{u5Mmm5^RBdbwW@goX*(>5djnN%TJWJN!o~iumIGbg=(ah#DIXwIMtmpYP zo6pp(TEm8YhKT=yq1d@Wmbb-CM-{APN}O!y(u-`CX#ZT7v~|Zii}CL8e@RpIB1q(= z{AsF~P8m2HP43^w1vvpd_y7GLfLw;P()bod&-EweA78D<_G&n;a;<;l+mE#zwtSH{ z70o?j?e-ootmdkuL?M1D!>l+#@I|YrIHD-Jbl_t-3$+37_Ums^ZI$?4h0(7|(TZ2< zU$+jOd)*A*Sf=QA^nO22@J+b9%euZ4-v~ja{m<@?yOJ*I^&HIB(bqc6KOf$iDoZ|E z?HK^^vq|ypa9R4jxP-*r`|(u}dO6;!mft^_Mk40@n`L-v^v-=}vadIuZf)zwXTy)@ zJ$K+?w=cXiGcyL;Pwp~)7~Ed>?`+>qSD4YWvMQ~tto#C1gNF&2QAy6vf0W8?9)&@| zEtAA+r3t#OKJvfgsqeRp{1G+_j087r-S zFl^1%mgR#YU67BD50{LLg-$N!?eVcoBiA~rs{QG&yP*t`kAQvJ+?d6fiZ7EK44w+y zl$DifuVNf!IG^tu2>F~9D+X7NWXi`;>h1(NhgD!5SPW;D^cNNvfBmGYprC%Vvbw72 zHxlPLG&tz4w~)Z7nh)~wq|Uw;nXZmGo)x==Cf!qaAD>1(@)Hzu5?5sBk+O9` zK^_{4Z{PiP-rQ}X^8jl1&icnE-7J{yU9)wO$Q{?@_2~{HcqFjmSr#bcjyb2OZjG9~ zHBb9M^UvpsYWCiKU7Y z<_`^34;UvpjgE@Ce?+p@yy4^yq*)K=3S?sm$R=H9ySE9FEy;oaKfm7MGKmk$RRc)S zT6f88`kxl+5zK~keEi;2K@SWGEF2O9ZbdS)-U_V03zE3?`Jn~9HOtI7m@^q)#6Hu9 zx>8-Z-13|gY_EEHaPHh(o=m!dIfBVy>2S=4n>Ve_t6>J@F!0kiBk$5bc1bu6jvuy$WYI7XFpwWGI`F#C(Uiz71<9*dY`YcO5DtrX)!b}Z(; zofzeMv?A-iAF?PYAt@MbY5*oPYX$@b%a$p=LAr(ZT~mUI1&C`;)(2l$`<_y5@Xeuu z3Cp$PwSjE|d;5|!+it%O9LJyATQ_kqa{F%$S{fRU`uh5|MVsAsw31KbA|lkFvM2t# zC|C5{+|LK~$A6IBwMP-KXe?|VR915H#UA3x05 z%*?zyX2y}qWfq3klj=H{#%J&|Sg@{^EYo$K7~suj>AO&Njim=ScH5zn~2T5{KmWrpQS zdIV@q{(kp5OkAUl6eE5FaS>g3AymOCkO%*48PtG?4b1;JbpDTO+<(!B-e*Un8?+{U zv=Xs|mmY`{FA!Uo$Zk%O=_Z04kx!3>pYP4sT4K!LUNpSm;JDbta+G<{vOhk6E`BAQ zy`$VLJbE`m2*a}f$1iBvVhLVf3GP+~ew}cWb$yjUP1Ma!zCUHNLH-i@)glFHt#qxI zj*Bs@^;+_k>KFgmA%d;V-TK?r1?Ljkjfu;bzvMnVJqnP$O{DZ}HIl!hnD_y^vyK_s zNbrttwTNiS;5eR1zM7{xM{Eh$3OK)r^B_KGIY~0a<7TlxSm+;L%{|TO4Np36Rs9-j z&rVox6M45uMqw!v1>L$;&+lmQe>C>Hx;Mxr-l%itTfl8i@2#sa26M6NL2FUvTUGDW zULpb6Oi?`RI=0F)v*z%CnZl{2X7jVfkMEl=&JpdC8rF1%$Xj8JY`c?w@d24AhIcf- zSHB?Xw~AN)o@Iz0MqeNjf@)qLFm2j!@v4tpS9mST3KLm(<<+(e`(r|9 zbiWT?(6V8jZe(?BpY(2v>en@%E*j{@uH71k_VPTtUOBcudRDgS8doKLH4q)3c_ODV z<&7MDXL0CQzW~$tbv&z@rt=k}AebQv=VP_}A}!8$PJ^LS-wVZ%UJ{*EXhd*`(<$t{*Z2EFLzK_RQUQa2}WXl30OKDut)aZGIv zE68TT&NY(CZq3*vsfbOMtxI7&mvB4u-Nu|3Sf>iOUUotQtwyC;&YAFnMQqD*UHusVHNV`J7z(NzFjhX{z1!HEG7)U` zchq&dz@iVxUBvR1m*^oMwR8@wJ_;tXEU8Em@;YLHQSMM*QMpd__Gk(_-t>6kpB6Zb zU2_hdTe8odVaeAs4`|;7m_C*m=00oL8d)tHa#3Y!{d5o?d)lpA`71Ye3U5Q=^eW;u zyk;}ND*FHN>n5o64h8e_`Wox@mPPQ_!9nW<*mCP_YwI224GcOwUUUHy`0teyUL_ZV zvg-K%qyH0hrvbZ}fs=Ypoc$08H;uK1j+>6MlCYVhJ-f*(M^kflPkX0-5KB=BPbU*I zTXQ#RQ*%pe2Qk`%##UNt>sMm5+I-5K%1+YeR@P6wUCdv2t7w>c+nNczqLmOw6ZI4Z z4cMEznNWM$+c~%jdy3Kiqg`R}`u<}MTIzq8xY>%)KDj?3wT`kHwX~y)IW-?UCz}~3 zKPNRm7dsaZuYiC6D>XMK7bgcNHwPCt8<&7E54SKUC-uL6XvNXMD^ZtM7Q)YEwXGdqIYM1UIsWT$ z|Iv~EXwqE9#LZlso0FTLjgya!OHhN8N0^IKm{(BmKOO&1qyKWavg0dj3$Op);XJ}T z{Qo-qKNp{bQtFnQ@rgncJH?xVZut zx&H4kzA_WGaCEUZaTB+;H?cJ5aB{E|<@k>e|EK-?XRm>$04L@6x0n96uK#;<|Bt-* z58VHcH2=>=|DNQJ!2Ju?U%37Vfj=_->s^20`XdDX$oQ{!{e|m~5cnhGzuxs1u0KNH zkBt9%*I&5)2!TH`{_9b>Rcm0Lyj}Z7HjL{s@6T zGXCpbf8qKg1pdhQuXp{0>yHrlBjdl`^%t%`Lg0^#|9aP7xc&%%KQjL7U4P;FBLx1) z_^)^Uh3k(H_#@-L-t`x*KSJP-jQ@JqU%37Vfj=_->s^20`XdDX$oQ{!{e|m~5cnhG z|EYJO{l~fwa|f{40}57kcrsONLm<=;1(_!rp6R>uUg_UYSCJ2=(i?53Ds?tWSp-a= zdxa4wJJXLwwH4H5`m}}JXl@j9-4tx1RmQa!e}DYphhOoF(B+p!1+vfJ=_TxFA=P6j zV|YmH+FP7b|BQzx%WHUlw@Lg!pGM&wA}uYgz+(gh2v~T*hJi^-`!2NoiHuAor(i_H zQ$i$U9Gt#yOVqTqy2Ru%GLO)MgCindnK)tN#IyeI8M|krFR{qSlDC(ebQH&anXoA~ zYNZ?<9d*c9{ovTr&QjK7>Rt>4Np!wi#ZUEbl~Va%z(o_XeFF*yqpbk}O6h_);0N=d z(Pd2$tY#(YiKXZOE0j$*i6Iawzu!3T5)xp#cC={HCS>GbeW7FmgR&D)_88y_ZVv=v zQD!6APaHDL<{R8Sdd7bIXx5U0?#(w60m+#P-&P<-AtNJWywVw|b z@)kWK)W`8a6@*quXl5I%e&reILW?NJjJ<_j&r-}bxU-<4q4oRiHn{H?bEg)^y6?}C z0BxERz00|YPs(Jqv9PP1GLIfGN+YEPB99mu=@=Ng8Q17?`|0gI6hg8c<{O?WDt@C1 zxG@p3;7*;hDRmiFn)s|rRhB$T0pzB71~^({fVKsVhzJ>2BJKHmRDN$Cx-~{$bWp9w z1~wdtX4WjcC@PTAKn-zsf=IUd!-`)cK!9S;Dz_k5{<&AWFk!>zeZIe!z}=7smeXR| zs+p6#kt;d?QXYLH)U;(Up1ynZpaHujF*!LLh&bxY5yIt`nSw1)ROGc`Hz&iMx0f3w zv8TH;cxA1(4HFdu$sA_j3a7tX;|*nsMW?5ekC*5ZmFQJVfmOdFjZnveiL)8svt8Xe z=N<~Jp7o)OXdu}_%fo}GU+d77%47L9F)<`g{Hk{u1_oL^hJ*(RtkJ%Qdj3lHm4(Gh zD3PJ0heyqtj-4IrWSJ3GsMPWy*RaH$sQ>MyWs#Z0?FAj!&1CiP_QxmXsvS$Pn+u8F zSF7d2+gQ2M!E_2PYl;7#k}G%gMvft0~<1Jr9is+Cm6ew2arkr)t$YPM5<0!J>{_+30f1 zVM-wIX!bpY3)41ah+NnW1qf?&fL&vpz;fVU>+88-t+ds60ghg+!<(2GjLx2(M$zy` z3e)wjjKB#)!IJ%zm9A(`VhpRvViHmThZwNT{`cN2QG9$n`*6aC57C-MS|$K}LFhg? zP=JZKxbU2F>Uel>4IDk=mVH1Nd;^x)N0#WIPk8T@Wq?Vws=_k?77lazoY`%<2^XybfsuAF@Z}bRq^vsSkRP8_(|D&+&p(HdYphV57baAlnEbg&TAv%Vlyv}wFjtOg1(22k83nu@0@yr7%{W0^I0V$ zJq!u*>eZ|12R%SXD#L$z8dEDGDyp(@W^HZF1o*{trFrzc8Bh?5JJ}efV_`u*Xg;T8 zP|e&uix6_Wygq0>nl_88pK!Eb5fC8avG`u@?U+U(=8X^5<5xGu?YCSzh{AsVz~qoA zHEfO|GW3L-t#zzzvT|F-*kbY;b~X!YJnz`i== zUMCi;hE2qN*JoXck6(~aTD*~?TL`%GyZ^9eDjz7Zb%Q|Y3^c7+^}eEj;p)g&NXQ1PWPf?QmLld;qe=DY^5ASEE1)|B6_3+qoT)YG@py>)MqO%Nyc)Q9ojr}34dZ}B zlr9BWP%i}pWY`uhEi6od$9m+L?Cj1|5sP>f&l5D#8TlTCs!Dg*Ewu%C^rXXB{b8rt z_=JRd6f9-+tbBYE``gnqPitPkhHu1boONuS=a!(Cke~u`P*7sh8W2OcT-TMF?ryKw z7N$M`tpbCbkve~vuv{$p7ALPAh$X(T(kxVrMijd`;2uV4>NAN=5M_ zuE2sP-G1}A;hf6=n-<;)aLZ51A1wH?I^)6Gf8E>puhuU>5N@1!G*Ya~GcY1KtNuc- zWYT8SSV;*3h;WXy`1urFgF9cU%VOJ1QJ>pXN?bGJ7Q6L3+)y#S|cGlX`T&YU`h`(tp z=lk=~&_%x~6CwStRzakEHq#V~6=ukUtUAW-c75;YF@x1gwDLgkz_caQ)z$T<7`vA+ zsNL7DQCe@!^4R-1Ghb%d?42|VI<-^ng49^ytPutD$FL?N94?xN-w;H8w z-0(gb6sQ1VWiA6-Y*-REoRpqRa2h3g6MH?=XV0qbW^l9o&Qd4BcM3I&IPHJ(Huj`m zBYEsjn?TLUsi@+FT-URKS3m-7r%IRK2rQJ__<-~&47ArAw!$m?R1w->=ZkS*hbz4+ zxT?y^!(R!iD?qOz=^DtY;oqMwH!m;e$JXv^nH;sHE+QitIXR@SdL`!Y`_DLzPe=#`2@nNjvb+huGcd4ob1yZ@4Ch^PHVcMd z0ct}G#2<|MDU_IH-ymS;71_=BbCSN1Yh?LkGf}v_{=pFmk`Cne3h6MhGwf@qegod+ zk+B1=q6;V&rze%ky&=6Ho#K&#g5SU08d=n5*9(D9|Kxiil%}@zR7&dgyeQu6&u34b zzyV!cW6z!{D_74k3Ja6sF({SqjNG0KOE_N~n$-4he*t{O zdTkL%Fnn!=S)jm15zv}w>MY+W1GKP&t3q&qZo+gSuHfxYqrX2X(j!j ze+E+Dy4&7k$LKe2WWoJbBK{r7pv8eu_4BxS583Z@d%}5ut+ozEeorxY7J%ktjO)fw z4(MjmMwLAshlo!5nI#4AEFk(O;#-PCCpYbPu{T|Tz@}g0*4RV<0!JB|*pTLiEkOQ$ z2fOl&W;>q3z2O3&xPpl+R4`$q1SH+I&rKXAzltG4Ferq_P3o`C4;-ghfn+c;#6u!L za$Jv`g!>iB`f!$`yB)YNm4gH2+6C{Tj6vxWN-gWx(jTAGh>1}QB(YVI z1N^3ehT&SrT#Yqi`MyrA9~}t>lH2xp-yS!)g#X-@{o2FY-!=DlYiI`$7rf6*U+rfn zO?W2Sf)Fw=XWa7vbxaX(%+wStHf$!v62G8^TpQcW*06z~35m%0SR-MpEwNFlJ#7*D z6Xw@Gfx-jb1s4t?(R6Eo1SW;>ukyt~9C-;kZTsE%MktiHDb`;F1nayGR~cDZAqopS zpG=U@^S~{Sc>rW?qk&A}G9a8Tx|l{zXVCQmqka!Vd|2KXuO?iqJmP!%v`YI=h3a`o z@7}#*T?9Hd6L}l0zL%9hX2~B`{ic`KHe44E2SVY$Ha7I<*R6PySSl(iHi0_j1eYr@ zP#pbfpq#viKRi5KTlA(*Z@X)hAiv1siR1Gx8U)@i{r$z|;wazT-}&qNb!4RLJp-2{ zLN98N_6JWAr;JQ|8e9F1hHi(LuY8J&nKhk&0wrc-WTaLP*jNxA6exht>MP?SbZUCd z6xqq=J^STki5uTqpuyZ|(!WlcZ2#FEsPl|~R5UYeGRs&A;xv$5)$w1qSg&!c0`j|! z60c^@PAbX$meM|`kvn_PZ&`VM;duHkgfYu^%;ZD`5a0NB?_L9^SnNKxXjhV33xTlMB=QF%PtS?kQ~}gUIZ1_5Lr@~g-&IJh|N3uLO5Ly{Ly#OCUF z>L8{#be%C1nVe7C9_Rp;Zgr0KQqRT{AqBTD_YzhCmTV0Al*AEGz1mO&NR-uBe&j?2 z5F^#E&JZa~tsAIefQ!gFb!>%MxPKqDVw;^g1NuBp!n*rAWvw+L7L=&S(*n^T3X_6n zs(fOqBHu1ph>X4fFoMzpTx&+go{LoG-Y`g6FH|YK_~FRVAQ1d3#5 z&sd`X*u*w@YHDgyTK1k7AS>dq-!H;9E{6kd&7j40R7rUj?DDWUP{f!cdjx7UEIn0H z`nq!i3aN~Fsfbwd@3?q)dkn*a86s25`MIE6H0zAOxu<<=14eswF4M8kYAKLr!BEAe zZQ2b3-6Of8Gp7?24*l4q;8Y>kPZON_34I~phMygbwEFSsVH%&U#pQx}57@Ehhci$b z1TF`}R#*0F7tdy8cxMTa@zFxfdka%XtvbmZo0gA7W3Mtksbtvj#qa{gSk`=&Hs9F} z7zIV3r|PUBHteW}%JX`!wj}L0a1956MLKr&A@1|fMy>uHgEmI~mmlYUDg!aI+QK6Q zTET%9LiyIRP;??a8;#GZS>1s8#%^T#4DI{3{3>A3h_`5VQrk)^gp49;)@*gCyHCxG zkphm{*?}ctciB>2jt#1u8de!gUeXG%hh-z@)^r6OsKWL>YA=ZadD^Ng$#VN=9=vz5 zu^`C&BWRN>)oeg{KO%)HrvN)%#ec)q>; z3J8U8`g_x&k7kqr1sX3;QqegGBL|42Nac+Wr1i@Nz$u&w=LZL`VGo~ zr&WMtQ0kZH~axor8#<5(+3lS0}WM9vY*jSyKSqrcJ&u^TpH>0o zE;Xpq?`LU%Y;H*!F}O6dT6nwif)}4L9U8V6!fU%gFF>J0DG^@P^$6~oR6+N?5CX)p zBv#>F2#D+YTJNg)EWQ&rS|r>P%jItE8lX(Of9C%?6KvobKCgKS7#)oI&9y>{&fosPScGvQl&*SF30*%>!=q zRgLWwd$OO>@~7uW^1yDi-qrGRZE|hdMV<5N;Wu=SI=&EokT{m+cb}{`Z1wjG-?>Za>h3n(8vCdcTvFWI`&21Icw$);;UxUy-g|%D`&k=M6>cV* zjOvvT9yFcA4w#ey(L6xO9O@IKfM|KS+t%~XcCv5E1D&bXLK{Aqe5RKCPK`0QbgC;C+pF#vTzJEe$Ho`ydSHv`~{2DnGclyNk+N zY@qIXqoW!%_pYpxAw0A91?;u92`Z9~*ALLkfpVGe`8-t6ZS(ECKRMVkL<&ehzZ{~l z8p(!hxmZDGHEJOTN`CENVDCLSKR-Vk=+!y+9eV$GC@>cY>RhwsZ=n}kpR-sywCU*R zoM-K8mm?W7orHsiwBC^N9o}9ah|I<1-IKAOUmpv5>_)WsT{pb61*{aopwXkN|2+%a z!4{BW2d<$Y8&0q?u^Z4BuCNi7LJq4lbpboqzCf zK4)sD!u!;w$P5U-V?4~o?pmU50@DQ^Jxvoz4tFqfYz$)#}T ztFX>79e@QvgP?)k+L?D-1p;t1kuWgPY~LXg)3;eMpJ-k+a}*>7Dym=IaT|TdM`J`& zc$a^CAcs$?gqtmJdt#3E4qE#h&PwCXx57gzC#L-g&7ckg6UGyK{56xeYD{KMYQ0gT#|kE7FBQ@E+g>2fq$efRA#M zte_d8M|D_-m>8ivKno6rAF{&bi@`+-W5uzdR%8*LjJ%0#e*$O52^ZSXKO3;jruQBN zn~w;aR>H*T?PBVq>}kX{49J2#ErN}4a+)Rgsa!$B3URc4w zzAN6S;ZsN-o>p&)G9Kdx2RHRw!5>G@B;yoopk>?SPt%1IyCe6!p8sZ z+55M)7?>_(;j>zl_8i*8DYtNgjKlLoh}w?{<6LCT}- z6#bzvF<|ix)A<g2_F2VLS&F~?s5z`4L%od?{HnL z=7p(~20TM#K#N;L_ zmTuRM>Aikv=ld4#I(^=LLl36=UQzSJ;bfEmDSSPQ3Q3-rCj~-RMD~kaz!t}aL^&Os z*Z~|ELy_=`MQsYlmm`b_wEXT-c8D?};!gRY`p4XtUAvF4ShgjJ0)0D-(S}rx7FFT( zRU=Y&fBAXm>AYm-aeR{sn^u&VH}XNTsBQJ4#=g*{4G{(K z_j6zlv5B5U2X5RV+ljz6rC^GV@r}@njOtbSKgPejLrtf zep^^#xY~5-b1*F{KkR|qQwS0iG3*iC!_`hd7qlS#1xQjH+_u&!%=SlNU}1bq0Oc_o z7)I1di^9sYEM$v2`1C$F3k+;3i}&gd@tXmHZj{pjPj2o;9%M&p@v>A$5Yd?2Li5S0 zzuI=?T2vJBvI-}mMu%*lom1V=jNHjBm7XmG_zjiUGymoi{1&soWJ8`~yo0*5Mg{i~ z-qRl2$+k)|xmTbxIdPJFD4O9D!bi9qwL~Q8RPl%;_du(Xo0B^?>HoBZ$CBGKZT~X;x!I|bU-@crB7HEVSsj?47G@siBhB?z-)uDKMn1YIS>pR)uBUa}p3t%$N692S zKN(At9{5SiYSWb%paR9;RO~RNDqm)Lo6hvj)JgvQ+c%|mf%}f|3D*z-fg_cfUn2#b zZ%xn)Fk(4z(O_h2kH-+GU}(NKWKODRhf>07Ji?sjTxp#lbqE`GTj7G9lyxasyhUtM zxw6)hUyJGF1ibWvFfZ0rm#+QHZ3q=iWi({79QR4NUP3Lxpaaav*FsWc!E`Yp&+p{C zT+o9q$%57bAgc{eWH z7W$6n*0w!XKJA46)SAhL0P21yntqmrAm@u#>^TA4j z!zE?q;%MwfG%W6`)4`#F^>YS30rix06uEI5b~?O8&>TOQ$J?@5ygN|k_5 zE{hfqoOD+dDSjqRo09e<>a^`=hiPWl6`iCa-Dtg7UEb!Sv+5hurB72q!&KOQ{Oz=* zQFm$ZeT~55z8T{xYra>gpxhKio<1?ner8(M2`OfKQT5dNkqu$6@C74lzxUw_^{RS_ z!Pa4YN{_eU?Cb)B49u&O>G7m(h&a?iCs3d8$@#$O$b5?jY=j zSS=%vPM@T9oHTH*Ty7*}YB_O=R@}N<^o*md@@X{&RzgHh*6%|b2pl(9IzsH_Yfhgk zTP!=^KoAburpnQxPnywU?i5YL4NlQsE|uf!#MTc$3LiqT6QoVL)(Mc=O@TtK2XoVq z2O>OY5whTaT>Ch#H`J2MJf*Azr=%UfMR|`_A@_Xd6WSZam;(;}h&|Q$(E=o=<3h)N z9j(YGF-m&wk|A<70IB9Bqjmy9ixYt;^QU98hz*a1Lbtmx!4S$Z!EofPWh4dhbgxR? z7)41ZAZO{PD)n{*J3$XV1Z81G(F;4+pkX}2F~RxniXHnBeqj;gMo@f&-kB|Nq3YF} zb{r(BkCi#kqx8c1-_WGQ+hofa-G+3BIh*FuIzFC^#+uKQ>Kd_#NBYSxjh#Y*jBi$7Kq6uxw4$Ej^&$<- z6=5h?+KuyYfkP1Aa#`QHTfYZ&^^XrVIB*DaMv7MzgD{Ct9~}0iMTv~vU_C(Uum%cWeSM`pFIG!QN0F}P| zY=QpVX~BXRB}qd3qm&!9_M1adUJQnF?JIkoyc_>m5K)Jz@ON~S?+kbOiP`hKwf69? z?L^1uN9f}@o-Q;z!V9LuKKe(spyD!Y+l?r0bGE&=W+d%qc8Z9O8L-9@^=vY zqzKeN7v4g+8|R;wdjUodaQkANmTGzRvx;_@ZchQU*iY7|Vv@g4J2w90wG zMB1b3anf{FQ4oTzR->6q%suINf6GySR`a)ld{owCw;{K5?ZON&e@xKU`aDos6@LB$ z!q$oG#_<+f%m`XyTmZs2v+>jC+0ULk7dwYAAR+gC(u!(x;=7(Tc!&6s1;3JJE}vw7QCs5sT&4EiP6Fd08{>r~$>b1bI*{=XEq{1? z)hZtRHAEhLoJcIgCaoQ$C#S1UI$G;8-xm&>5zY1&QWoON4I&|F$F@#=kZPu10us)bm+A()=66;BC_JuypH@@>A{DMt6`1Y>20x zHBEh=EC{PZgZ{EBO<~%M?G&tdbd{Xf*;{m073g^G`Q@$Q@is@U#Cpwo5PRfC3RzAh za9>{%aQ^{_mG^sC9J~Wq#`f*LL-T4yD z$VLZYdO2H;T0v3;M~$apWkZWO&_^T^_Dy0Ae(t#8;>m}$XFNkk}0=E|$Xk2>zWIF;1*i^+{vd1++ zry*6Jm{rrhq<_JA*yM{`ZpwN%>zqA5&^DIQ@*&~v3zQgLX5l@S%6=zK^s3|+)|{Z7 z&jG%gUl%fZll7T?uEM^kXf7SQU!Q&+T8BgB7U`a!sQWbi@bFW2TS!@;N*SE~Jedx| zfV2_BtTAGP<%9AvCp7k-nL;wBK&M2y1b^_kdaSVCvtyI#-~4WiG02L?17gXDTuuC~ z(*e~O`jHc|5A%v$>rD^rjq2PU5~ri455f8Ska{){ae9z&UPyBhb&|Er(WG5bHYxZT zolTK%Q#JIXwKzUL1mQ?(C`9zckYpk^9iu|55{ceO0)91qA~1)Tvz`)7(-h)@HfMx1 zuT8#(v^gYBK~QljII>}oz4NebDo=L9Cu_1T4b>Diq2(l~rfya;+Pn$D zVu(Fk6WlNk>WJ!pj7Vv~@cQ_3Pmnh|{9{GBGqwO~<(Q^zPV|&9?T{!DiaEzp0rh<3-0{pfLjA7ei^}PUqQ*B?<$^2%?i?b(D5m)XWUQO2c7>=J zjtw{n2f`4my7@|oghk)4&Zx~vQ5<%u9BrQNDR`$DpA*S8j;b zO&Cy1i=sqRuI_ZHQC{d|mpJ*Fkhg-}?sx^<;i@O2bduOeS;@uK4RmSJOY+V`a*(<0 zs-q2SwfXvGdxW&J^gXMVv6T%7qx;0uXnf%gm!JDm2IHDI!VMN#C=jJ$95CEBQXq4p zH$$3;h-0|Vn~*Bt9#!;QI6My?Mz*+*^FgRN1#>Q$`R>RiW)lNL1-@mPU8@DQ>Axs$ zRDRg~>IE7(i2u&Sq@mi`i)pAoBH17i&4C4WX=!*hwUs*|lJ$D}Si@lWl_;YxPA$3# zx*eo#edO8FQd`B&B<<>^5W|Zs9l2MRR@v_J$5g8iNA-;DwC_Z<%bjW$-@FD9CMNY( z4-2*qh0DW?D8y8*jZ|Y0ZVj0vf#+fDP-p9iN2xAAtw*a4b8h=G25y0RNtaw7b3u1a z*1dRQ> z#c3STUxeY-kA1jVh`f~?o&jtTM@gmKS9*i+1TMA!%^fuJY3ue;K0k?CXRVVrmFr?q zt1XFMb;?_&+TgEESn1u)ZST1GFtsyQk?;-!Bp@v3a9J^s=VW~>=$aU|WI1u|IP2-5 zV9u`e(n((Y^V;JK{oInJaCtAdsq!!#H??RrA4Tnz{ zF{q&1Bb;msk@5gjbh+XAdg61Mw4Y6*@njM2LxbZL`$jdEWoQ&|%fi1UmTlP9Z8I4{ zb$r#_9QPOMU%jtB6ih^>45PI~Q0kL-Quuy<9bsT&@Rp=meYa0##gcSu?c>&CC%`ai zyTu0JLg5R~pgwE9Eu^D)T2U<+mK0scLkI{9M0f1o1E=*$?=GD98gvKL$O8!aTMZ$Q zrxT8Fg*C2KNyo8n)1FK+RX665A@NFwcmlub3pPIHljrj{I1u1>Zi8n1F5Sad)L66zg{M#=!>!7 zX+C75;w9VG;(C`@Vexf(qk|yfkz7!H8fE z%k&WL)H>UGxFS7F1|wga;Qqy#*4cznYeVu0mnl{`{P@>S;HyB5Dy;k(D(NVt!#eWq zF}*PR*~WH6@)jmS1>PS8f%<6;`%7&6kWe_CB=PAkIhWLUrw&qi$orcO^=v^bHF+t& z0i6Q9-)H?^gVMSLkV1JlFYdJ0;Ok$j+5321^q2f~@f2}sQx#Z9HKKFWw zq%Cb1ecCpOH`x(bBnu}n38f^JOStg5_G#}`%huxN{e}}v7l^O91DU|f**n6=X3K+{ z4>fJRFlKM$*C4R(`Z>!Yyfug;y#=138285yvu%t2oFkfmD*0N&QBbL5;Q_BRWwNyX zRa*KWqu>Wi3erK_#!Lj`RT1D7xpyRI0(vRM9u!U@EKO@Ur6cG5c~7gAey|f$;V8N)^G5% zZ&BYQA3!o2<}Xh+-Oahu4FE(M@og1}nicgtC&4F%7m$w|$%R8nl8;B=7}=wz zcJ{9{K^4YPG7;}ns9~&cj7EWh>BzHfJbn2f#^;WuC9ZU7+gk;+mnoT#6yZ_HR>*_% zaYs9~EQJ7VlvQ)#{qmdBAYFu@Clu)c)BXByrV!Wqywq;^9&!>qiP}T_GH?0TR8*&> zCb5d9h5=R3gGA8lGHbcAI=2hkOq;n<*wOs6hK8@LG1|jj@^jiBTdbS4P00AK5Fi?C z-qQ1zCe*autF9j;Qk36W(q(+-No%eM%t|fRlS_^CRnrXmGBfa&R18k_S#DrmzdNtc zks_SaVbdw+(zd#!qV&cNqjQ9Pm-B+$g_)D5dY?QA1R{HiXypJCz<2-YxzU7Fq2!%7 zDZ&y%s=T1?vs{A2)BYK z!{=xaWm`Dq)eL!p@M*1dElq#6SShLxg-uU0M9I|(v$s9tw1+GgF2Uce3N?=wDrsV+ zR;N}?NnD_P*5A~BIRv{bI&sCTzCidy=qPE!IR;~N^;j4ia?~EAtv6pU(-;L+xZs`f zDz^Tx^CQi*Hd6Vw+#EzJgX&LW(;Lu4Z|KX{h&ex@9}cNaohMhdzf0*o$4ImkN2GpI z$b;G|4lXglcy#ONj|%DHpSF2n?_M57NxAEI&)a!C_1KH}4BTo3A!r398U5n!;O3~chDrCdc)9~u!T=|(9`86+7 z>+R>Q;7#*h?iAST_&o(O>0GZvHBSjYMDh_sM`?^-&fJ3+~0DmhteXkK37TS~Au^|XH|aIKU-Wcd z3adt}_>j(FOETaApO6#{6NoiOplYZ$$@JnjFpNJ@F_YcrXF8XF;8TX?mm+=XdifO9 z47f%*O%0n(G*H$)vP1Lbew%wDgil`~U-Lz@ zFVn4)Oe%(+6XLn8FFnX!^lAHOn|rxF@6(_4eIrV9!!woQGP?xfMbYKkZOo&(?}Z?d z{%l89dlGq(+LyypVtzQktFQUhE|(UJf=s+&%*xTJ3ylR@#K^_DecLmbSk@z=k8m+v z$vKMxlu^+}2#|cFJY$<9hU|FVQ0KOpaMgH9K_`{*%tASM0g)M|Le>O@-S_R_a*1** ztlqYfh7+YS9;b%C3;VyiJIkmlzi&}*LOK-`k&uu^x>FiNq)|XpB$N)>G?F5z5{k4) ziF6}f0!oR3A}OtOZ{p7P_aFC+GtRjm?)h*&oa68V;AZbP)|zv!>3W`*>sP^ToyvW6 zwWA{W`z$Fxc*FH`BDxnntBvqbbj>_$Y)PKJH@~}^M3GwM-DnE-zg={`S!(Yg1-!-g zmo@8;IrynhW7^VkENUAWf`}+Tr-y#{)E7@B_&B)86lz-iUwW-yD)mcrEZ_SaygWmNnB$0}~cWPeT1sNoIxfEX7=s3hG4{VX1-{ zJmmfRnR99?O4X-w9g|J?g%0#sFW1iL29uN7ELT?=^wsGWU*Og&;& z&Nlm?hfaQ2k^1q4Y$<;{8%_6y2ChV_Q+2Z}-xI=w+@i7iZM0tVYl3$KF>`FPgv>lq z5(xt(R2wI6ScvZZp-aBeCZ{MXGrs?mJ~a;O?3DIkJKOuiSs$tk-89I9YVr2GLR8KW zR4~nv`5`L5x`a7<*_vZLXA-stM5U3VJw-aInLY5znyA>f4wK6((Y+bZoOJChU1~p> zUpPcre9ma0C+=)MOC;&12N=wIrX&0z$HWN+nzl$)Q_#>bG!B;#kMMS@&uZ z>7fx3e@n%&uh)A zIKKDQrn;6yx9D(>Q);cj!D_$1l;eFYk}zauD$jBCx@i?IsS|Cmw(X>+2718oc!c`t=5}#EbwCfWtP2Omv2mFElkx| zxk33@4(Mey>XzviIgB>OcgopW@SarYllS-*{hzU^XqBq{7!r8RabLD3KAGTV+4!ol zX|~wIS(vXuPq#o`)^l}Y|ED7xeH1y6U+op0N=++i9ZF4w#W?o_x#9KVN)OZc78QPf z(73C^+W=E^AhzmtPhOOYeyT*IohW7Nx3mGK>fk)xP_JhCbIBS;bNsh|KO4qQ$f8Z{ z!lwEgc=1~IB@_&hQ5*x^i;8!1buw>0h+uh#9Y;U?+cA+%ydMVF6y*1tR?JiF@lgZv zSp~uQd)t|g2Ns#n=AXB+I?%nznKA#cC&#pk>Ojm%EuXR2PvvsXV(3j{cmv9g+BS)uED;=ndx{; zP&greN!y6jV@SGdfqUJmg6dFj>|8{a$LE~*seR1)ZSBf+h<Gbl#RWG~Adr#B zizI?GkTEk_K|l3OQE6Kp<*mLPt%I$x!>rWinV^)b5UL!?=J9Zl>Xe4=^a0n6p{!*N zi6hCYmoq=0xeGmxq&bp_2_N9Spm8b|3O%L0LlpV6Ac0m?S;x-8_SNORw2D}J48e;8AXF(0EMsoQl z^=l|4cD^Uf*>K|=h2|i zfq~N>@vb#q{!-DffI72wG#e%BLZEL^iBbVYaHeilCjXg~{-qICw=hV=&t>tIec2Qq zAGxD~s%O-cssf3LZdIX@qv;Yf&RE8e8+eqL1F1yM*a{!f(8*@XVHl~_&~&<=u5skh zW@+?V<{;0-P$C^Z3w;_YN#_W_52_YG~Fkk*sOeC^v#4H=*ONrzg z^$cR0(QlD!J9l$Uu7^f);p0U_Xoj)t)NW@D=MDt-81gZd@9wl*jEd}uprK>nlH6b> zN&c=#ogBXOTUooSn$#m9GSV+9ZI0o2)PQ23<+aKfMnVsr$jIX-|M2xLWZeHXv|gXF zPxAln1^91b^8Z)vitL=523UG&qD}|_Xd8Y$=uZj${rmo-vC`JHYJe)p!3?mqv-~Ln zfT1t|uBoV~P^h)$vw;3L5<)Gx%-QnW;^JQ&M09m^OWhZ>8h(1MO%MYA_1NTJ3|4ey zrSR>H$wlC);&yg+-!FFqkbo9dIot05yWSjQy zPcK}7sZSn25av19GTnVk>{lp|XETS388tp+>d)g}y?P47*)-sRUGOaPGT39@_ctso zOifFx3sCQ9gmwgo3)vdH0kGnoHFt!(9LiSi`SL}@%}o&bw7huctCqS4lHgX{{A2SOHbguA`X-kVm@ zbQ0&0J>NhAmBF`a&-K^PPdUWV*TfN?9xzVhQJ(Vh@gzFG~6Ba3E&|EbuJA5S_pxl)=9Ce&A-@G9FK& z@qs&*b*i1g)69^i-(CIQ4bMI=101r*9iC@Tqobqaz3|F5{`KpqnyG**07zh?V02vo zs6-K%z|B^CMhk%5wE6&Hpn>r>J#L$UoWUj_5HkgN>E-q2T3Tcm`OKnWW4jdq(BkMV zRtBFXCV#HP_EWM$BKJzWWE<{ zXg}Vrn+d-HaDF&&cqrJ*jzaO6)=~iPt_qWZAD&z1KMs zk-a@w3zF9HNocNq&X6;I&Z>U&z4`Ro=T}0i@HOl(j|b~UE`Zls@a=0r(7)C=n{&#^ zO>K<gwvcuC8VCV{m)l0;LNY3H9;uaa{+8!W|fsCNfUI z6X=3QgLfVb7tbfX=SYh%()$zc!|_atJX6gucXbhxplJ_zbD%8};a1I$fd?WNlnBfH zuY}+YhXFHU%6<1v1D;817ia91rUfd2=LiOk_%q;1?!wCz z1F|m+7Npi{+ublQ6LR5E>f$F7Ftl`iz-7TZWnSl|4D&cqP)MkFZ66q=o5-ml=xqA4 z$S29)!{^@R=2`+$4uJ_7{>MW^t1qcRs7l- z0k1qWkl_hhigGhw5I_h#8iUWr1CAeG%Ii-HfI?WPy1Kd~%;<-ESAZm~@p%Kz5-qLR z_U&FYz1W0H$ov#-3?BS-b#+a$2D}bn@J<-aHi_dG7PiP~g?m;GV8g!!Kg|XVO!PcD zvZwj$q~s6;65KSc2n6&3RxL6*S_!5RR-|k^U(*3L8jVKO6|aTupTIF9qB&4Pi$EbvWwc{>* z34orUP-(oVt@PX6j5xNVLkVCIYcOw!`yUBIXwNi!Hj?-DEr45A0KAS>JEo4>6(XR+ z^6)uOZd6OzjvGhvy5s)=zGI`CG0@`l_z;O!7kQ0C;bo{6-}R5SoQij=t4MBtJlXq+ zFi2+Td1{Z8* zM2Z1=m@=Rti+(5o%>~n{3~~=0fFdi^Ft`D^rTg^h6M|X$r2!Vb%s&XIDvWsiAiGob z+qb(TDOnKi2ILul)1WAf{@4uM1>o7V)}__v>bRT!&C=cdslXiI%9egLh{2UXp(4l` zy)Y7QHWyYmQ~~KUT-XW(YR9nq^Hi!cd-mXL6)pbNBZdcG-Vml~*@~&=0Jsc1BJR}% z{}cdQ{ApzU#My4W4u$J*2}aog+?!2seURTw;&DBYX1|@@QEtDI#{r}n zM3w+aOxSJ^2|_J!{H}n`u(GmF12pr`3$m4o5etk{^E=??=U`~xsdzvNW65eX*}`k& zme>q{ogH9R8Lanw_(sx`2p}G}e>({P1LI&&TEVoko2V6l-;Mxq$r989wceY|K#zyQ zMe~E$xHMXH3I26)Xq!^U!dpbV-eVaX26RdaO{LvX+e$UeT!g~0n`)8)VxPAg@X46| ze$B?ig;W~30BKYvdV9h9a6WkmvP#5&(ET0?!0~1v^Qk;|zy^pB&}Q}`4-XTK%vvF! zZUT#z`SvX?2wM=Ot*?$Ic4vKx5#f&@Ne{u)_dA%0@Y+W&WktAvs0Rtncp?AbHjtY5 zE!%MK4$Mc^m_^9-9uF##BQ!mdr@CV4pF#9MQh=J8S_=a3`5n5!<&{2|4nceXs`KpG zEjnuFZLKIN6EL-s*Z*tv=l@U5=`ACUkZ4d|C7VO#Fd1MR2Y?(g(C!=@9Hn#^2$cdJ zOWGjNm;-E#$YPme5NO~?c)e+(H)YV={xj}>6&!os$;$2$*G+4uhtPDdpmJDi+}1+1 z!1)bU*xvSoYwaZ0#9ZPEj2T=*eBl3i8yY9C-{gSU3WK^6q6=}$ssA#c*)J>#6xds$ zVKCsJwzjtT(OdVCD^fe3WWuvAulk0e51 z$Tq=ZfZ0Jmn&NAM5Qtdqj{QHfCi z;En&`Hy*x39&t`8BAOT#8j^58URGO&V9fS4S5#DBp@3p5|6walbL*AhxqlQ?flwJP z?fOUq&xr^haP9~asZ_5gyS#{x4+1<8bBsRP`}+*4fumz|+o!-Y%#{2kCKrD?U@JS_ z2V^3^+VD0nZ?0}Jy&VwY`JK}NnSDAuGCI4*$ItkhSTBITVbIY2Do1=#GVh!DIn6B=reqUlj}r2|JNj4Zv`alz{r zQQ*mL^8Ef-kr5wKOhIDBob9d2e0b+^hI5eD=E^BJr%TF~EP!XZ{wE+>K#!%yG(03e zTwJkEiF710#k4D*t-T{Ya!#^~r>PbGW2 zq38iJ6&Q1EPy@xtGIZwo?D%^Cg&l%180pIXIlBMxbblLS%*N(sE6}gcfEb;H`a1X9 z_kB+&;6WrpTx`gFCW{)*FMhxO%*@o3j!o-LB-9;qFbL%B>^NWokyIBoZbvuW1AEbv zxH$4j^dkMi(GgOg1BV|J5rID$fN@01a40^b9H9uhVrFKBK-@FS%TFQG&3$^ozICLN zqmt;Og-+0XE?!b}6lrKG1Pef;<_E71$97_*O9c7o}NxXM5N&5B?=YTyAqJh(v++|nZNu|5fl z!aw}t^EQ9bcpxHV9?VfCN2-}PM!7CHv{G>VkuXTpY%hFPgm5~&xXAwf+0&;t;P|1Y z3r>l9i4coQls*|@5c0vx?^Y&C_}86KQVk8 z(}^)V!@NpM<4snF4@B-rcXx6fJs%&R03_1GD%m6$G|F|L{NkSEgKSS75D*YW1KN*J zl^jaAi9DX>U2kl6{z?LIZn^+Rh1?OC*?oNwB*Ne|m#&+_p}8LI*q4E7r1KO;9M#Ff z%nTEZdTPv2GoLxti)eB1IN%x?8Qn29?(Kt>C=Ps0C+k=HRr2D+i!i+uO-B@$itONqRo-%m4dO5u!@2_b(`<(H?p_ zU6rHpV7bW7%*<3`B)cq#i-m<1WdrpY1eb7#I}jhaop z@4rh+9L?r}f`Ul%1J(oUQ8bv{ReWM%;!cSi4(kD-psf?*B12x3JTyb*ZH^q5GQNyB zRKd(6hl0QbZV{{(W?;lqJ7Bi;=f%2XKz@Z|V)FBRpQEEADMKc#ldNIICJu5nBy&QJ zK#G}s!&?q2PEOZFAB_dU1$>!bl);CmUBIr4h#Ln7wU42}05iK21VP3N$HfAW{@hR~ zFE6iaE3n)&SR&Ok!$6X5@Ztp{&l8x9ckbTJ0vlfxduZ=UPBxbwlKY?4)omGfx3yuz zJt?fwdnxdjqa*h z!^_}q-`!m9$TQh(^S7HOJod#YvpuYUbHP=!?^MtiBQtNIMktF2MVvhTBy@ zk6=(0bE%c}X*;9_xO>-x&aKW?NM`L?yPxVSh6v3H&= z4lF~hq+;LDCNxFNTSbe}+n^r7Qu z`1(T7qHp>uu&+LHbcBSCm{nRPCg@T{9oxjF{PYU`8j8HoG_bESh5*4WE4{lk!~%;) z`J5q|_fjs?^3V`Nj6kIo6?$*(h|rRLFmEO+HYA2Xes=TrZB;0`3t9INXA}$=tS~xnwQna6|A(HC@v*UX%>gC5KCMLp<#wco>rwr-xz=OghB0>%Qk?U2H z+mZuFcMELKvZ%)5q8|OMCf#43 zihw_@^@xuWDNR7H1(j{`*cx=Vr`Olx!2HR~&W_(5$EXU<5RJi2ity%H6ky zV}V}p?>ZOjqk1rsmX?*Z!Ys0Q@Bq)<9kGTbqC0IP)6(dnz>R>6E$lo=2coqOFbKIU z4KhK>&i+bSEZ`{8@$K8i4ZuEQoF*$@6T-sIJ$m#Aag!q5R5CI$75b3xX1=7?uU}7*3zUVWPY^Urra|Tk%Y8?p0NF`Cd5x(~hAgRMS39gx@|6%&-c;?Qd!9v<#( zY~F4BA_QyUkQXm5G-1}Hknmw?$v_)j`N4w+PjR-tnK(0XaRH6~s~uJklu*(>yToS& zQWj7?-Ae47f(vrT#6&S~gp(oRy&XMLcb_{q0|F!h5)vh7UqRK3h=%{^|AEaX7An6P z=oCWEL2kLgYDE6vJ|&T9H#SWJsF%^Mq~krm3-tEjcL zHIToAtyDvYDhn1H1Ox=~FeFh(3lWy71`{s4y(!g6wv&zMjjb&O7(dYOdJ2=Bg@c1Y zFHeiN;tSla&6T1OD+tmy0ZvHm3li(#ni{b$8FJ40Jg5!0^wwjgmIUPF-QZ-Upr#H3 zd$HBpM4gIr4j0WxS0TUCgg7+r+q=8*Aw>$;PeP3P=fpcZTYvt%Vrgl~FC^3sSC6`x zTv=vdyC2qnIw0qTg4Gf#`<}i&p_SQrWuXh5d>8UfAzdNuD_P7Rp_~dIHYeL+Cp13^UIXx71h7A@}Fsk2hv`nWPYZIGB5|Yy)nzL z7YQB_3jS`6MRYFSm9aL3@Vy+K-+oa+4rcwuHce@o%?d~4%M|gYu)+t|uf?1s2Rr5k zt9ZiZ*`Qly@~3(hw&evZtl3*|@ai4+aKF*N2p~JT5;kpuk7F!ZQj8#q61!>gZu0*tX0Q8#78(E9D@u=gH_M4_RO&s*06`&-|l+t z2A#tRVsO?d8TchS5njG$V?<7{hA%#j!+Ql)Qy%=8Js8h32#X#?EOhns{KltP+l)N% z-{c#Y1>Y8} z>D{B2NzNdHTg&&Q+o{FNX=RDQiC=$c}BXPH~5 z@X^y#WesdYyfsIfA4V+PEk(pGE00?q;>3HWhMVID^9H!o8k59R*aG8_O==vrsMf7$rr0I>Xb#MO}AB z9X0pV?Qyv5)VukHuXLurNJ<+xSY33NA2|wY$f;~hpdM`C<=G;@7JwmY`q@V`W~6|y)Ji;)IKheREQ#~p&}v?C zl&|j9UpZrb3iTz^%dBY~eMPoChs{o*`vJsi8X~5K1nn3uURRo}B;I%*RoK4Wi>qff z6|VyAd0jfCcP$+^*mf%^XqpMd1?dkQ@`Zg4j!+aLL}OBSH3&pKbIYI2<+8_xdpy_L zdGJ8K;;3c5IsLVueu;EVc`obpnXJn`WxN;u(vR#vTZ!XFuHR4NRp?$!;W+&gI#%D6 zB7f^Ou!O}Ub5*8I^PjW$lskcE$dIJm9k=ybRf6#>|h!!cdML{V6EU=4vR(PGUg)_=%Mj@|GOB zEI4nDPsa6)b*3^BXH!?Z_^g>nW{kR@bBVlrEs0&ob$0mUE9GEcRK^@U&cWdS6_Nha zkM#>oM*e+#b9|)v@8a9m)1m^F%)*v{x4qLDbWEcGvV8vIL(Z>;#a4#;vi?ITjs7R> h&FEAAwgM!7A{{tas?r8u3 literal 17647 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 CBXyGi diff --git a/content/en/host-and-deploy/host-on-cloudflare/cloudflare-03.png b/content/en/host-and-deploy/host-on-cloudflare/cloudflare-03.png index 6d4228b4a489c7a3cb8f5255bac636bd3757913b..ba3daed29eab0e9a35d5c7db60c99594e968e3d2 100644 GIT binary patch literal 30347 zcmcG#V{~Of*Djjwbf;t6NyqBgwr$(ClkT{qj&0jkhdZ`y+s;}2zTdg`=N;pWbN8RU z)~c#mRkJkfna>Q9mlcD9#)bw11A~(g7ghuV`z#0s_9+Y!0{CL8uYC;seQ^?$P=*A4 z-jK$jz&n<+h`O_qovE{%fujkSnXR3T39XZnqlt;FlewMq1$Y-P7#Ja#gs_0Jd-~~` zmvWri`sLe?Kgq%}h?>MA-!q7coBH5?jWR293LfO(?;}YTDdLs7d!2T-9-l2PtBRG) zA3L7b&Rdk7=~$ip3_J*Tk%s;G_vM*Z zA}|nmn6i@~CIKEoeWj3zfHH!&TCtE&{|ax!3XA`f@|H*<_)o-P6Y4@;?aJByc7OQn z{QP?H^}kd>=fRV^?UR#m#S-DXscglPO0P8Dg=-WXx+IviF$jOn3Q^#*JjLbBO)m&^ z&In|@Vx>JPbB$I|2tw;%S7^~fRcRLbDlb6f*5q#{3XiBh=}%MK`8%`VIdR@Yw*|q zlXkOx&dP~%3Zzb}b69u4H$AoPf9)Z%4HgK1a5$PSu>G-NLA-0vetCB%QlYBn_TOaB zRLzQkg$0a|-l>YcHt9eTsDDG%cP3n+%En_>Or1gYPb;RIe}A&&%m1qoku5+puY2dp z*=k7^g{W!)P<}g6(7!@~%~%kynEneZ9S0(A92%PV=@dWiDvdlYY zVFcb#An8kuwnq)`xWtebWgtYfv1o7*HETd!U_=lKCI@SfO%RKkrsTiAGI{C|E5}W= zrl5#x)W-D|ybDWbia6H8OP$-!PoxY-xIAgEkuC>~nC1-}9p`+0V3n0zPZKb=r(jyA zZgHG;BCW)>Zp5~HmU05t#Nh&JQ!AK_2KD}2yAK1MAJ03F>M^e%p6qeu2T`YJ(7N8*-SxlGwW&(jA@DXvTi`}eaDXJNks*rGZp}x0 zslq;bM)u^*8kFQ3x}p*~Fj*^JuEZiHQd5%d?wp8>KRwq2XA7vc=Re!RyjU?X=p3^m zcg{DV%14`6ni3oSMC>uS>swRg7!eTqm_Ufg1l85@`Fws@jZ@@XT~wY=INj)q45CEA z#Nv#FqLf;kDqJ6r6)M+C?g@be@faH~Nxr2i2`nlFth zbvTGw2&g0{cHU|h)wG(CCkV<2XW4fcdEE-L(@B$2oIqovQ0BX*EX>6iriA^aIy!zW zs}0DrxKo-z%CVXl*yp-VOv3(P3*D0By3j>ktd5SWVra1h2QJa*w)+PrV#SsvuTd|= zTreWy5QKM;Caq13>ksUYhfLC>NU7g?QU=drEH+y+w#G{9W--N?A-H&ZIBVY5k-TXz zLhA&AiWsR`5(!TX<|ib~e0+Pqw(Rnt7tk1*news(yT@+B&F-4jI!Qo>yP`J8)=DyI zH2Ctd8hswR618-6t235`raVfcypA?>JSNGdAbq$q)5uzpFHH4jEt=4uJNMQea5o)G z4U|ynJ13>2@vMR@8s_gQFA|Sr0n-naF?ol%NwJn^Ih_@KZ`^Cwg&YW!5H6GAXm^65 zbaI^>Vy31T*WVk4rE;0-17Q~r0U}4S#%xT+4Cc}~+A~w4`}q-_$vm ztY^#|%t@);60^f)3D+S(OnPRr!^n)1$1r;|%iZZ%Qi~~8A_Oaw_ldBXGAZ4yJ=n7X zHGN_y+00oz17Z3JLAw}B{*u3)q;R5wuqAI`Y7m8INl>0`<7I%8iQvGstwZhE?R=Hv zV(j43_hreh9coLcLnvha1BZdP`{mG1_r}-t)T=7bqUE9^YmC(+1Rih8=dhwGP1nu4 zZRAD%QT}4`#dqgz#G`7#!McLY;84EGLLl+M%kE}FNG95o@4eB(>Y&T_zga_vsyw<} z-B+G?t$r>rI~TJVoYfTiWPCguUD%;>pZT1HGwFsrcwLymNU!Gz$*eE6X(pL9S`@n# zTQok@F~L_oyke|xL=YU~VZZ-zQ=568@alRTdvtZ-_(-l~?t?oK=Rj ze-94!BCx56Sh#9cjeZd*V3+M`B<-*VcW&kXt2+cw*SM+j@ehqO}4d?Q7` z&PsGgos3Y&7Q)%J?}_;oE5X9T)60*{`zSkh-(a%xJAAGU`HjGViQItC|29IV@eD4v z{@232F5UU>U$V)#Jy7&;d4`MZI{RK{C4`GXc4B;H{mu9syFOAVjaB>*4gn|;raAt9!7TD+t1gmB~al(rF%(PNv#1Nv* z&Mw+>P!I8G2U1fc&JK;Oh}jrBS~9l|d&8r#ApCTZ7IF7R6^NvM!3kr*0>eSqB9Al) zHFXreaW|G1rrDyZR+--{Ey=&MC!$k9twWcy#2=pp)#?jyx6(;|K}1E9b5?qY;455& z{AF*@(DGNaFQ-RRd8#B|lqE?34`0sG8nH3AcUS8#B2O4(LS$~bq4hYnq!UaHL_d?C zDk_zfk6g@*=HQj$q=+0DXEDxKz>JtWxN9AnmU)HiBl|(f>hTF|z6W;xho0=fxCjlK zPj^}gTrUq5+IuPb3Cr7AZXHh6tS4Tn>W{}Af_(5Kw6c+}^_eu~@N)Y>4gJlmX4NlC zDW?#Gp`rO-%XPT2im`E6F^X>?erejMi~LcDhK5OC8AtCmsz5(ZhslP}iiD#=sG}fD z7CA##RIn)NUa~mO5iGD(`jJrT@GYZ!zOdZVWkyQYvYJCDd)mmHsaw;G-r4CcLmvlTkp$7-FcpWn7;&kV1@<5C*Wt8%W!IFB zN1>Uk#8{|6r>pL2g$E_ahe@sJ=9#>9L>0Ae7Z3B4G#VcfL(uUG>j!^P&$;V(mDVU5 zItk7+tY`?y6u>EO9j@p;e!2w3w}#0nu?a*b#BO^tHdY+mjo#5Hh}mC$#p6V4E=Q-* zVcs|k4j)#erc?g%RMv8TQpLyVhgS?cx_tY2D7aBeF^37e(&%MDfv%yH_h-4ov}17F zm}LP(<%um%f}c;Dp}67B0J<9z>y!cgbAYCZbvcqNdTg3q{%md!GZ%VZO|bfoDI@%z z(`pxH+IU}nvDTC9R5x_Uh^NUcJJ)p7O4H*4E7kzP}4v7t><~R2K3T2sN(S zSdZ8_uqm9&>Q1=*B>Jq>M$#)W^uCv$pI=9}0sZdTV-%-xKdsbP`q#2XJ}=zV(Hb%S z+zj--A2u}}`*ymh2Q5$|-I;lX>4I1jCta*v5I=ty_B)c4l{Im35mH$M>vWJkus{SP z%l7PH3#)=yNb$Y-_fnSD>T3!I?e4`yQEi<|n~+_p9h((p!EtCXCkPp*ptsiV+XWug zK*?u$Bk9n7afXnMk?ct{S#M=TOFwX^DG2MJHjf{mU&G8{i>_H!fMxk!3Yak^VX``- znS~fJrdGUthsry+pBN8iLHPC43`Jm&n|e~)D8EXr=Sc*XGynrOKiPM(;S9o zBuFZ^(ZRAnNlR#DsgEuJCrdTutP!xw-hG9-+nyck7rK9F8;PET*KWN3J! zR^v3FOj82rSKh;$59^7Qcz?q3cVa0RwpD?R8x0 zX*u=nfK+q-ET?nP$&~}2H8vkTTdvm<8!@_uD<-CV3}Y?BGk#5qr9J0e9M!m?u<}hL zrqzM=$5@mtzUNIeA@BU(aYY!UsWGVNbyPX!Nn4r(q`raS>SSOVnDW{-t#}o%Rj5)E z5fQP~ar2C8G)I*v>48#j>GaxJG%`t@gxG5|X_}q4FkjR3sFxFaX7396Y~OxGD|%JR z{WI3h%W`u+cXXbVd0(6$Ava~D_GIK2l^- zaBqU2$JH_!x!IWHL{sI@=mp|(R^E-#fpv(kGF;m+{hYv7q|FvDDrc?*-JSUts8VbU_pIclHT z+1-fKPFLg78(X0uSq!4&jN1$S*_!qgKgD;n{`%#0P;;x6htp`Y)7O^vn7s(aKi`;i zydhUzcMxd}3Du{m8fE5;J&_+|U|09{f>NXpKl5{CILYpG*Ekf*M+Bd|0=j2Zf+SdD zXlOX6xkrdUIVFFVGI`lV!`9m5t1;f_&Tfh&_isYtxM}yr)z0_L?DkDU4ZY0#a?PR8 zLH3^0uj%j-Mh>~bwe8lwzlS(-ymUP^FG8Je7v$38>vAI0b@uxL^Pn#88E=e?`hvs+ z&9>fv47pIc8@IIA;n=9r*pohO6_=J>ra^I|@a%-I_w@7!hlXmTB7vy!Dk`!OXQ|K% zRmP66EBcbyNU>=25I6LEm@RNU3(~GfZB9#mlh9R1{K_jTA%j#h z#75ZIXwD+8Wvb(FZO!%NE0ncd*1+R>rIEHTxVL7X|1C83B>}_!G$L=#Y)*0xYTf5M zjLEd&v~=rym5he;GP_BeQ{ho^CFk%s+cl(w*66G}>1N^UCabGTvPL>DzSlguYr+ZC zReDajq}29KxCG|>^P;Vnv~V(tI4(i3EYx`^BXn)u5H%I363Rf?7*`1e#DXh#chL7U zzymd-CJzoLn&WRkQNM@%IW)-fTjYia-b$0tNCo>i+MkvmA#rA<0(gDJfh71*IBW7D zO#S`#|tBy+yQ)M6`cGrs$?7vqh zvY2D-X!Zs8TmG&^h;_PVHao=@P2LtyM+P18oAf@N6FM@Z;_*Z>(Z}|YFdd_47~@gr zX(9>l&IUVGZm~nrhbZXS$IrN$l-V@cgusvBC=L-c)>oA^=6WrBC0f4LYOtI;rta{# z+7_wTJR75dmrMwV?b=g#^%KaO&Yp)i%(g@XAS6Mk=8CW0)n)zy4l^knKFAE+bKZAH z2E!K-efe)ccR=IW9S3F+${Bl?m9VlWC@CrT^j-8894`lNyKnl0j?RSlC|K=2o8P1n z-pDNw$QcJ7taw*mFw&=(QaBtCKb{AEK3yFo`&`JU%E_U*MM@Fc3Zsd9%rf~rG5WHc z%f?4RM;+kh37YN4v{<|zoAov?*1u`wldXls%ozK+!uEWJ!rRS%UCerFb3#R!$QUx7 zA(VtS`{TnJxEtgo@f%BY?#lXI_0A|4^ktfgd-1*7j9_mQ@?&E(o#U&MJ)9oiJG7iT zD&O=|gXLH$3f8NeDoYH)gxNrRR!-Fu%*R2MnZnzl88GjLmW)8fu$|GALtUFMOEMTWSuo?O~FzHRTyQqq#x2yzTJJFUd;S$w{crnfwYczSUUeB>pVj(kjJJd)cy z6)X5wp9oHeyHQx;IGBpA>kR0kOz<~xBB5sJ;cV{LYp>InA2z%-ktC;AHMpI#eujfS zgx^y*gF(qyJ9<)2HQchw8~s0~rzO&`$1Yi>@tU|$UY+U zUo74oYhw*!9=Y0>WdhT{=_?-_$ z3~r{xWM^3K=}OWKwy+N(SoW`P!=U48fwPGe*^|Y>GnEQzfo?G@)HRNA-Tm|I=?K36%*f%$zd(L zu#-%#wz@AENO&ceg;1c{oYTucQwI++(0Vqgtg?)chN@m|5*P8V^qVE*J#8>4c~ICg zm&RJ(6FeZ|KYeGOBOiJ>(Wpn6Nq)KX37kc(zNj;rO`UP~-UpAs@(x}-oq61FLg;;r z+VSu!XeJBntJjduV#n@^rGbB~h`KB$$SHZ}`dZ|Jg<@nlxkMe$X8IXrG|#@N_#~Tv zvxTmnw_BJGfT*#U&E=Cu?pkvgWXwO`pcf%YFr-}AZWo~as5Oy;FDhO2$2pnGQy1En z2!$e*&lBR~jB2K*;PNP(du+{nr4WgtN8XWvow1mNV~Wv-@AfT)EUWlE<3}sRpp8)B8VsY04+ z2*$XcBW4is4z5&>gVTw4r}wxC58a6`4;3w)rfCNPbs4fyngIp7Sb)tMH!RG6T^6rk zb$`IK-v9Ss_QF&ls9AGJSSF_a@;&KpiBhhUgT@2}`F#UrLvFGTco}`n{XTZl`qJ27 zqsR`<;P=EXwlO!&=9Whrub+#A5j^0$zSwAX0TF`#8O$ z-BBHs6bkep(635^7tRh4+WGJYg{02O0M|PxHcp91=p%dQxaS*Xf4bJ65Ma6 zJ0y`XBH=h9{^&s+$Ypuq-K1JrUri8G%uVZcL&)gk2Olv%my4v^CRb%o1{-1{g(_l+ zCsRi7+YsjUewL?l35;Sy%B?nPV6&FP;@^!giNI0qs<;Y+3S5+PEYH1Dn0>o;{b(f= z7V})1ROcz6L%pfO2fb3WH98e>BxVd{>cH>wW%~E(%D7y8Yi~adP(3LYk< ztWiV1xt9WI+G&?{pVu3?_^VdgOo2%{!|8=rT8wJs2dj=;?J;j}sUq&ro$7p}fr_9R5EZD|#91utSy9&}p>d@wY2DbNNnsp7^b;`~_% z43LrDG0j z@S6vhx{itSmYKW)TRM!$oO_-w>Zr28I%^)V)ZWZ;K9yRZt;iu|i-~c#hJ3SWb7A=s zXs(c1cw*F`!qCcTXEAecLvfcJhg>qqJ&gzAoWf5+&9GHt4({WR^15;kgkrvRb#?#qbIq)yjkxsv`AWb*ysL) zg|g>ze&{Qf;Z*UoKSM2>wucowXjxGY#XXR_V)E{+WXQ10my5sx2DoEQDeQqwRw#pv01PSd- z#^GosfXnEM-9S{v3Wj%{-LJuymhzb2E}w9cm&uwsZpLSZB=PC;`3))z5a_-nyCx|I z1^c_YIP2TtyjBGXhV#<FU*u6v`1Po6MfGyi702 zeX?P5wL-&>gt8$Q%U7%r3CAm26EHG%S}7}bbcbx|;ml}A63zQ0hQ|7hS(e0}>y(|V znZ9`f&qPo4tAWKtopU{WwL-la&bPKHZR|*Nk+e7V(ozS{Wwra`lj1{BFVHg((YF^Br``}F4K)R(gEw=>(}*u;WVx5~4n2#9H}?s*k!m%S zpSkt^?4YF4P$)n(kAKEi=i3}wWSGag^}x~HXyJ(NBwzU(GA5$n zVHG|(WqCkKXi@8`uoXU+ii#~{#YW>RLicZ>$k6hcD55~(>BO;01*W76~2_SmDp9R z?X0Z^-6Tc{Y4GuiXo1Z`E{A{1qFJfOCa;_@BrXB(i@6Dy0n#UBH0H$a?v^+Y+y+n1 z*Zay@e~@sGlekOS^mVfJb;4sh*d^sw2%@%E@R03Ubk9Hr|ywtX~B(g`+o zhRxw5ea2)WQt`m$*7!)_7{~iw_IDi8iR6=Hbpiot(Wdf?R+fuFaxZH7_;}tZ1pBxH z4O=wyK|@0lS)VXw(a<kekq}7)%has8S zWbCDcikPda+~?X;#^tn?r(5W5$lCFkZLq~iV^<|aAAfDi{&(=7LGgMOF-mp|A%Z3P zl%_HxO%(Caf$^dA&$22U$9%oHmaA)=LCXu>Hax?il}4WphnD}%1&DDN{Y?z0`(9e< z#elkq@P#BW1q+S+&!54o!wL`MtorSN$TQ_PGo`L0;Ovm;ZyvvyR}kH|!trRz=4G{D z#-4@a5ziRNYcy##^f;=|ScU$I9rR5sM9(#zLVnYM6}Pw1G0FtPzOXl-T84Wvh=CXO zcP&m41v|xvN5EZ`iKC31v;7K3Mw(6+ts9!i633mMuaIV=J;t7mikb<=!q;yHQSU!_ zQpj!NK$M|r6#$?|iG`jdi;ZU=!sh&9M4ChNPS_Ti){YP5Tl_465pu@P=3+udz>N(hY%!@nG2v?;&$|18 z+`*mH_q0==s#p~RP##|QV;_lOFy$61#b;52X?&xD-w4I3-x#P&u`QH(j(?Cn2T#zS z=**v%iDDs&3LA1N8GTmR-W;96g+2|7U~5_{i<*+KkRBP|Mo3FkID#T19*>|rG=KT* zTGZi8R+!HtZ7a*VqI%j>i6^41jVXX9ELFf8OnGH;x^#y;!kvwWB(X?u^I-d9J}@@< zox+&)f}EEw_D>$336z?in2FihQR8Q9QQ_2TGh0KApb&qgn7$%8qJ3ziKaw3`;yUo( z#)D!lq0J=|Ie7}9NVm4WjGqo~pC#QuhD8{?79&!Xw$1R5xeN|_Cb2{wxOh{Q?A%c# zASNXS6Q2;;l`qZNgXWm`Nmy5FSVl*yW;XwJv#F;Th%s#IA{&YRF|(n2K#QJZ<*YCg z`(8+EA&Qt}Zn)8DQ@(oesXn6F4Le#CVtyef&V9Bvg_F7}c6@nA#<<6Qn6as*mN53V zAeyn2lGz+mDqXTKGup$Y|K~H;vS$UP3VN854$CrNBzzPqS1 zPwjm7en4o1a%`K;SG$#lK;eOyRCG{vBA%d5f?A24+5)vMMzw;^Gjq{6B?Ea>9RByI zsOXimd)*_MvN=id!2}4rJ{yqD-bmBN=5Dcv4g!kyHvsms9#X!%+=*sbilE6&*yj8-5G7`I)Q4q!;OF2V&QEhuYJVs z`~vA9a)w_=C_GV8T+Cm!;MSrI?6N3qv1iI;cBiAeeH=KpX$iUQ0lOJ9$mp&&C=s?d z%0@0<7%ltm#tM$nn-YHU*i|2lFqY!Nmkvie(zijHiGLwlVDa_va#|T?_Y@tXa7rc- z5Dew5N`i|F!;!#17t>ziWo+u``-abt*VBPe6oa`OUUi*HADao^#_^(f92Od$&wZn# z%PYUJhYuXt76=au=T2;UDO!t(X5=)yk$NE#*d&36FUIE50KAFl69pRyxat6cj==vX zvFHCB3H^V#LH~b<=&zvTchm0l#wwbTu(6@Vj}940`muB8Y3EWCi0B_3jo|C+OMwdg zkMIHzXeK5ug3pBv{SiAB#zH^wl&F#aWBdS=oSy)3h*AG9*z4=-q&YK1f~2=k0h3hd zdUjJ{sPn)i7H7jS$ z+H~j5J5g5ffwV?{@!VFs{Xc=*8rK9NvV~Sv{jhAnZqS6|2V~F9%`M=8+a~I2a7KfK zOiV~SJ39gXk~lI+pN;T;2uJ=v{)B`Cckaxxbx|W&c?#6SJ5PyUfz6SynDk&By3v9; z&HI@4On1Y=#f60s1&U#^MgLe=su*IB4hi1g-jhepK({O{Eh|0WQd6;&sn9-s`h*M~ z*bMjd_=t#z=r38&TKG>utMFk@5KQx$Ed&C-cUd@bV6!Zsn}IV|r>&kK+o~B%@YlCD zuWDn#(6sK2jgL}5A@gO({}giS+IIT|YD(cjC;MX4{P>cne3B039SaRq;Prx9qd! zZ<2N3h@J@x6e+{x-GGKd{Sv$tkSvH@US6h4a%x+f#vu_VVAlWZ zZ`<#$m80g;1x%!tg@^x8vyP7~S8drQy~{5D{sgyk7z#Y>K!yGaaIDT9TYxF{@GN{d zT_B~bqQcS-mLM4UW*>Bpj7gtn}($im}C&-4bSF|x~svc$_6=67X zW~B4^WlAN{UCpWKIozLWfCVEEjLZ2wD}ga%N8Z8$+T_TP1qf{|&PT{!zkXGxK?j3{ z05`3}0&CEuW#A88k$NkZi!UZWw$>OrI z??gmDfq@5<9@8em`7vEp)qw)3q{oM@kG1oT0lVN17vf~ZHxVOPOm=%hKn=xn z$2i#F0KE?l4ee~*%3B6lnoU`}asNgDs%&ofa;p~rN+#hpIwRj-Q#JO+J?)fUF`3)X-5Lon|m_cAg zGeiC17+8RM{`ac83;VYQ?ho0zMcvjt$T>5jZVo1P?AiaR5aWlg@#E#zG$~yl?XEND z)X5!BXBLrAFg;Mucotvu%u(OTo#W9oX)rt<6@oJAHtQTYGEp?hX$HTC6`1#`pB9ds zC4tR@cK^y9pkKC8zF6XbOG-)t^ule{d2%wT|MDuseUl(n)YNX~wd}6m9yXf1s@mJr z7j(TM{oYRW*t+!p<19OR)*)v0y0?ZW;FZ?Y#Qt~$@ulj1EOfp1|3;&xprti=zCGg6 zh9;li$*T4|4-m$J!z3P+PHX!)A(g??zM+*}7(da(H^l7p1tK7(I4rvQ_UvENu`%xyv2fvAXeTj5+7$)_UcQ7NN04RK{-uPP=T&kmRhU`G06?De` zm#Y?w_e5*R4|P!>r{5F%rWX2%^i&*cC@|q^!Ty|+aw(=~k#dFNI6#KlHo`XnQm5S= z3797HlG(X`nZEbplWJNxLYj9^IG3o{SWw7kj{{C#|K~f$I zZiT;7Gtehm(Tj*CFpCM!$uf&tuAl2cmy(#Kf;5%bZ@6_hmDkjY$+LYu72tlR;?BF` z*l)s}Wz%g{m3zLJgHII{7aKt;Eu$e(NuByNZQb~!*8MgS7JW=xc;GA+Rs*4io-CM@ zBctCRS9LsjI2{iiR^rFye%g;1%lcZsIapI>GFD4J*eN7oG3Gx1*FEV_3A3&~Fo(F? zu%YQS7V}9$fcOJ)+wc*yx2K=r``~VAX<^ThO{CL-o|S7I9U1vfLsKp`yh*b*a;z3b z|Joww?x*|Z?xB^GfyajKVj^w442Ku=DvKP9zw|Pu+#92&R=03ZctNn<(-+)QAR!S= ze|82+em_RPFYK7$&dUswvo$lE(cD&L!h{93J!oj?RA1@(s$#Aua#SVst*4z6cRY;C zsrt;_Qy1;c>lzx=F7MwXJg$~BY1w}RxJ?0=RJL6F38TJc_tNf_Kb z_x7Djo}(}jn%z(_TE{(IhF6dPUEbYQj&&O)F}X2iH1!$$WzPc@zCoO0K?`gxzH{G| z0irQrc64`l%T)D)KujLjyMfZ|D|GZ)po#WiU>4+;}Uh>k{=@81l3Ef-Vg zbRd@N{D4}?N)KK#Cowd{#?idroJGAE3U0aURUM$fPj5>d-9|SkE{q?AyX(~)fMlA< z)E*=Ms+!(!$3*Lj|7|?e)3Ldw_SbACe+{Q(%E;ZCb%EK@>s?H># z9=G;+KaSb3=pyITnpLhJoBjunAo&K%%Ax+@h{ou>g@W{ouJnwXwHAX{5^E#qJI$JJ z{?7TM@3=Lq5?~Pt2y|D_4a2!S?P5GeW`tf0W+}G$Ae|$qHa)Ag*?j8E^9|lu%yI&f zdE`Hn7qq0HmXb5^EzOca1je;n)86d3j4=>?@FY&S``6?|3Q2N|F=X50A@q&vYYo6B z=1c1vn^Q1QQgh6rf;*}+8hnP?7|~zpq3jC`W^@GTQ4OcvC6vTQI-YOUDu?R$;(9~x zxrxAve>*u2X%G|}pf}l)WW26m4|k;}HHA+>hrwdHAbR}ig4!7VDad$VlVL1X&N>ZK zUs88q+Z``)`WdsDk0%&v2vzQLB-Zh@I!PvWAp*S>}*$;56cXDPijHc;7gD?ubzN% zn%NSEO@X?0Z&)a{Y#TZE(HM8j8=flP;xpGp^^w=$2T5f0R#!7Yg7?yHbGb z(Ym`({qSbiMD0ori1tI|4G5NhsH(EFrvwPk6^~+lhQ|~T!sK=Ou7WLa^5-H26aHQW~EDFJPFlqehD{ zPs=ml{P#&B3HUjS@G%pyNVQ^nxHio>MkQ?zPYU!Fdf@;w&Ojn3lN`7<>&138+ z>{Su_OxdQek@)+vG6TnR>m3s&5bLlFghT)f1%rhSwxc^%{1gBJ$_+iwT3)-CDu7f91QzCV2^P6+n9b13O9GF2C>nX;xpq^%jk8Je?|AjcS(PU{#y^HrM^aA$>N}m zIq==&O9_}7hDt+=eU4#s=}oF@_=w07*9=3)%v73Db80uvTrx9j`>V0g_PrCaGCKZB zT@s3_)6AugpMs|5@0q2i1brYzBc0O)u;2xxrAK9`G$x8)78V}YeGtGpzYlD38A=z8 zyZ~=59~%Ry&Of^6a*{PKxLuOze0f3&*KV z9;$(`rkse4u_NMb{j=8cr`>_t3TL1JIX4p1NovZC34&e0pc#oF8|8f}{OR_P=JKIR zu6f%m&UjegE$8dOE+m+8t9qi%+Tf`@3w??^cs|XjzMlhCVIx-hq1&?xF)BX3tf;7H z(umK)nj81yW&kjVXz!e8>QLu=-SwFZ8wjJ$PEWylt#4S4z$+o(x zEpz@+rbl`1`L++oz}+)?S=d};>Ms06pwf_rmHg1_{b;uXxMbTjCEa;;@TkY89a`eI zE`CQaSI)Un`#Cpn0!u;Fm>d3kV3G==&(Qv?Xz{pQE^yWpme$C>lox_MjkS_Y{9*$a zeD=NA-oT~BUIUtvj%R$UBu{5Ya_(-_g^yfI^aDqZKxL+na_YL zIB~~y^uKen+qfTWG`2pI&EwI@e~sJ;+o&{OK*`0y4?gC!OI7-Y#c)i;p=*zBrtCuq zpW6KEfiERw#Khp@m<3nusC8BLdjiofuQ5|iUpJ@Ys5~Vd8DbJmY^K5+e59%cDP3KB zh=8A2@3%#4CCWS?yVZ}Lju(-346945S&tw73-91AMIQtHAib{c0(pZ_`pwa?oWay( zUI^54@;q_SuCdSr2#mb=SFXF|S-1>J3eFL%sPY1bjA8`>=+Lf!e&ZKYD-lFr*I%(L zy1#q%e`+jAgGx^>B5QCpdm>0V4#~+;vQni3KV7r^Ab)6WqInMYWfD95Z%7q7jrw0X z-)j`piOjKJIGo41Dqj&vN$4`Qs{Nc0d_&-ZSFT=@8zPxw+U$XCq@7i_HOGqbGot`^ zu{PK(YS!NmQ8X`Vcn8F>Vz`@I+w5OQ^?hJ#VZ$j0n>Toi3WM$qbJW!7t;?ZTA%~bk zT<3$=$69q#>o7m>C`C7pj$z;E!OCJ59$uo1MSu9LW+$)KuKVNZ>4_p?nAhnb zS#DE@!uRP*gB{&~*4q2e(#UodwApia2$5-I@6W%gnpYbXj6!7wcDYBN$85+xb4e|B zd605B*=$ykuO3Fong2&dk8s9p!64p$eJR*Y zs*m_Yx_inetk7i0|7Gav9rZ$8PE-NFHpn?y6CwSmNmbDX%->uFz^Fw+U>y3ZOitz- zXk;^_1>-;Y6_w3B(~USlYcU(kSn!IlaKZ*>;x(c)h4{{VulIRz?R-9_1`O$8rU~xe z(G(^L8JRuce#HV{T)Vrw_LrLiqS5$kd3*9WMK#YYd^d|XH_5ghfntSgQh!cx-aR+L zva;|%b{l?(;FiBK-63v_tkhdYLDLox)!yUxYF$L9VNFjh_}U9koC2%&RS%V9!Ob{f zH!-7CSK+)}J7=CoVzp&&RMRyWTd~Av;G}%>{vkHr3TfG*zIR})j?&jIMx1>MwxY)) zF!@~yYhhyln@d4}R0j zWEt9ci!uE5AJ-5MD{z6e*Z4g+Q6#dR--Bo%Opu>T#uV_zfkc8svwONebZ&@Knkb}O ziR@aX7ya=%gsCmk-sDT3cxgg{W8(YgP%LZ`=12QKXo8kDa;rC_&g;RpP&%b2Um^|+ z5+2_4WWJ*PY5<2v8<}O`sO$U8qmysf8{WEyFG2zxoVxf!Yt^LVXU9)+bh{eQRshM~@$v7%n^#njSiPl)6H; zb_NVGUs!Rb@$>UA^YNJ?TTmXZXK&T-N#3J+SMpjl2v`Q{;a>0ixHI*bqQ4vPnJur1 zC9_sW?0aP@2l70AnbE$u+`VO?f7QkJ-nPk1v+CS#ntm^CZ^s3oLh|6=9r43m-Y|rcXG(oACvlY0^rnNRJ@UAo)G6hm0 z4%0M^zReLsTagTeDKc7C>b1sDOm5(qp?(I`T4rgs>ad|Y_vmTbQa}P(6*!d<_f3Ys1zT%$wLifJfr` zVCrgGZZ>tIANrfjwY$waoh9Wm%8*}}5eAu2Js!FDTte$JBscc9zk!Ke4vUMCQAq2CkLCN;;~fil`xZ*WXGEQ-fF(JurZg z{qnnx@P8QD74&8knI?ymIcgocz)dyj1`oUAe%T5DCzTWxdpaK0M*!>xfnPxZ$?N`< zh?@GO^!{y(Z37YC7o6+`Y6|4@@%8{qz}r4!GM>q^vd4%=NlDpqd^36Cy0zZ$YXnsL zcW2;Yoh1GU=Tbp;&3>riR4erTP;=tKN<~58r|yP}n_t%vlI88~jNA=~?>(lf^SN}6 zDF{H3pRS_)ykVrs0-IC3Qix`q->jE9hbox6u#X!Vv%d@OzT-eHzjG zeAk4yFgNEg!Sg`xay+Z0%}CTYw$E020rv@-sI^LuOpq21lYUbbL*Snmq)9xh*=K!X z0^uJn_HY6KVJ9&ml~6>L!C6^)2t06|P5|ng_z&o;1W-Mygwl~L=tC$VAXx>0k5?CR ziUojwM_j&VGP=8H( ziv1DH(FX>}8?YnU_CQ1@$H)HwRv7?offnh?vIC&N1x)aA)f1VpPr6kYWph*j`pcU= zkq!hKBLE@9Np@XtiNJH-%n{(~V51TD_)mZ}Yg!}_;*5xkJNggr9&8LkT&QAzc)iK` zFb0B({{=)hX!-~l`Oh5f0;s=stFr`v)%pl$Nd$sH0Py9S+lGvb3k%=tB{*HuN${Ek z0NRHD9*zoCC!n1>CoANfGl7Rnn!p7p6}w!u3{aDB(X%q~7r+xT0$`sGW#ItdUIgeP zpm*;ABmhwq?wUJ6&e6J(XC@M!XidG*{8yoz9dDJF3h^!=edVlkt{+iwRo}L$O-oMy z{^lmHvGJZPUL4Ya35fW1sbVy=N`^{HbI}kw1t&e^$=U8{`ZwRKg|!os?8mB=A!R6KuP- zIkc^7Wwz!6~Y!1gVyt z%{#ea8}Xa$eQd11ed~8Qcgyr+TeHXhvepAjyX}Uk^uM_Pr_JBjTC&r=ILA#USx=Kr zKyeR@k5SU7_vB)$d+w&D#C)ewQNE$jr#<5jh@7N=?6qJ6WX0$h&1i|HRa_I!o=NUX>1HK zOlzcJgU~63L%>@~R+is+QtbK*d}zO+c9(C4IddyS!tX)NP|>`9ukPHPM7q-HHFIlT zY0f0bEgKDqX=&jGn3%yaR~V`!S|rF&G$TE=G}~9~VZxu2MuJw(d~;lc5`Dj|wtJw2 z^g4X#=#@PQnjm>FJm^Z=rjjL^R4lvw^{naNxdPn-p%ezX9(xIQ0tY=|ph|7ck zW!0iHI@Z>QhK3G$$|E8pA;pvz5RwoR6KhBbhzkn~*Czh@10)*LekDReLK@P<*}ej- zU=Qh;_O3t6udnU%i2pu=v8KVbt@-*Xh!oAV5UIv@lII2d8w6L^#5T7JLre$&wFMSg zTvC#lY!qi5Aa|NJMH)H0KNPg1p4dM+3aiym-&M1m~g#vvE) zAYcwO+MPRUr5a|XH38e(2o00C2?jfbShr7pLyzjd2 zyY9Vf-9PX3KUwGO+56egIdeYW=lh(AMox{23P-M^iGnrf?;dseOuNl-f@=dAn!jnL ztDQdQ(8+}bLIxH|-fUI_wo+s+?}4PNtLtoyb5LL)a&^l2uD?U43BvE?S#t{u_pWCJ zDC_8ugR)^s-t9FWQ#aM0%&e@L z?L0$_o9v_U>@<{Bp_{(51kPF3IjlZ<*>D@vTwbKkpB!c%@CFII+?OmDVl zDxvDFa@B0izxG=xJUr3EM2>H>)U1+&`1pQCu@x_v6$Q}F^xAAt8C)J=yoW<3YfH1r z)-Mu7PjpivGp1oB9jHuw?Kid_<)s0USO|WQIk28OI=Ac5+ojKiU@u>@!xS zlY>i#&4bksjMlnTs28)YH?Ww+ZZaxa=|p-C)-05x>c8y?Nf{;4nieHVMeSfICC}EQ zE;Qqdc?v)J`CG(?FhE(E-_YoB(<@F6X6ZX~+a-csP8;ni8ThYQ4@?gQRTQG-{187QjSRrk4&lU{X;kY zJ(G#ko$cwlm+LJXhfFzA;GE;1KecyZR|KGPH-YQK)bW{@-L^ab2m%RS1OFm4c} z0l!!;9^1J#-D|1T3uqm*V{dMr({6~ft!6?wFAIEKB^W_|u?#IVgib6-2C=rpOc>=C z2gHZ(j|f*lFPl`(H>~(_5!DwfN6m|kOq?-`g45IJ7}~U}FctCDxC%%Lxj@@DR@^|@ z^J(Hcxy8qR`>2f>a%8nWnKy=1l)rLQc@Mum0?#yiva=+p*6}owIkWH%5UvFE|40 zdT34`H^G4g1_({X-*CZqbC;qvz%(&caP6{z@Uj~_|%h`SBrri;b%y@-z-b$?jj zI82AnOtiKavM+jY+Lijn-DpZ-p-Cm5B%svv*b2@LznE(rI*dnIKEC{Ra_agRukE;X zG6ApTlBvN|qC<*FbHMpdoP#g4*ZIhbzk@sS^|gVe;9T84`RV0sa4Hltlwk~#NG{FI z&NRq(nBm%+QA8mAPO!Uch*48+(Dk&x-Bx|8liJ~HfWXUNMhD4n86t6U@xN~@-;5S( z2%!EssE6^M;^Nz#sI7aid>VOmJ&z&v9uL16dhh~6I~TWfBBXit?Gv)LA`c##@*eBOIY@l9ULj4Yt*J7W^A}6I10E=bvZBjs zm+iK|;r>#|G#<~IY2YV8*rXSk_6dwIRe|-!tJtIi#^jzU$B;i7R5}f-J$TlpZg?jS zO_SYlR+&^YA-92$jCpL40Wa_{(Pfs^3Rdl9xM%90`-WbU$Km_+Jo-e-ra^MN7(&%K zTJU{XSVI8_hIr%243W^GHT&%qiaz2{Zrkr-{oG?X8g-x4Q}SATNxZT7X1W;Dzv|ps z6sNFVNoFoBy{NEr;uK9(N>#H)z`SS0X2~m?6K#3s+%D%9Qm~kf9xCziI?=E zmPG03M|fF(W9d}4=At5d^b)VIA>q3mL|H3lskm+LOq?oMUqZj*EnZujOX6$DF%~s$ z^o~hQ&r^3X4)YX|GD6!adxr)DOQZto9SK}hEx}@9ju!da<_GY@Clk9j4L$dRGjpOk zy(I(PwMV8sNk-wCR0Q}scXfc!y#C5RR@x@h+ScT>L#4KwhvwoMaauN$rM8M7K~Z0` zcd>ikbT;CtRr`S}CxdT6KM0gGEc!aHp#jNdy%I&!amObaUvs`?*4c16jQUhTcDQF( zD>caBSVnb{ztk1Xzd>CB?nfG}_0-6C+w%LG zS2+XR0?6=T6)gK%TD$Nb~-ff6OEie!ggYtgZ1Wnn^ zg=NFSF^(43xF#Ks#*&+ef$G_QJcV=#D9i{+SiOyZC@PBeF~C%42ZqJ(0Au7OXCT7i zyp2!D|IoNf@_vbKcRGZgMn#i-H5)&aS!C=oaW8}mi<5)rm-G{9f$P3r(vtKUId#z4 zhfo%}f|6t3BO~8f8ERGbDHXB)hRXk&+Ta{^cmHjmk`|L z{M~dIGNk?|r-X{lksWck3ZYL=!2UU|(=hr5w!7QQnksSJAadg9ig-gDce6ufWw)Zb z$CzN?mu~HIs2Vdm(~{D}A@W`shxfV5=Ob=e1zJBxEzvUOZtb1>`WhF#w5iqVmFGu2 zkHrH@p3^vd`VO=7-YbY6GG>m7f(nq9XdHy6H{F`S6xfMYq)$#?abao({tq|EBKyPQ<; zy~b--+wrQfu$Rw$<{{Tdm&*~H`(ByzqFH=#xk=vxR@X1em%bR*u`n>iu9lycWLXZb zLLQ5^p1tyCn9Bvk@iNuyH`U)K@?5|G;DvsDgM+1z`lF+x$(>VoM{NK@TAg_qlA$KX zq8^y=N>d$@(Cj2yaHgF`8WYA`lOJSmrqS=J3W+&gXjM-GhkzCkE}PTW-(Rek=D9cj zm?Em&eQVs^RvkIk1Q-h-v;9mJJ`R-B@M~QMAnPTk;d;|Cs~R~w1PF)xi%nJOwO!0>8XTC%`$@;zM-3_M~wdXN4cU?z|4 z$<|`M>M&`BVAzr-B(=|>+LR0pm^P_}JwC-%JQW%RN0(0n&O!mq3Ly4tJr;nCDU`8d zdL&x2!UI)>NMwlsqg2LqpPd3^1n&fV!KY7U@SQC3_!f>p+5cj1m(N1dt^B z7XrJuu$DmyzZbA~j3!ZZC(o%8764P=RpL@oZ1f0a+GkFuC<#J9}#A?mgsGV`pW3L=xeA zbLswN*s4wesVNZuXDvlJ6RD--_%aeKt@Wn~P<_1GyX+Yp96Wyr=q(l-aOkiV(I{^j zTZA;jdoZ~j56kUo2?cYv)E_fDM5LtZ8XCW5XQ>j+@x!H)Gc(6OrGOMe`!QuFK!tO7 zcnBu`<*!Z>GYm5UXW<2gJWL0QP4DWR8rpY6!N`r=GhFmO9*kmu2Mvi*p4^E51FZFQ zb&r6^F>Fcvx5CE*WLRS>|DMliYaiCR4*oq;ihIK*%MfGi?{Bz;0penYlGYzO=g{0- z@MUy!7LWDSLfo*#lN3cHSI^aZKEn!{oz*`)I_d_-HDbSl8~Ks0{$hOGl+;t#fn z*x1-eTq$xL127vKn+H(X`%btT1_=HX9SF+4mk5YXUS8fyMuJU_&2VmR3>gM|peWVU zyeS<6dG!C4kpCBykbBqpc-Nbj4;B1x`>O4($D*ZnFFn~n-hx}SdGwH6KC=+PT!CY~Bj2;DBmIjCcQ4Xc0$oD~LED8>-KPc+t6eH%-k&42vh<<2<3H+! zUzjOH%qBCms&9X@UTX_pa|jRX8Z|e-yNtRO?QXvIlt*;l6}(oq#A!zKKKH*#vQOXZ zTRIO&gWc{+#PX0%aAAeW3C_>#B*sZ%;+I4b*XhLfw_c#e9H_?Ze-=2pR1@}58eu(r|m4+AIaA^v&wjy z;`lWut&sXNKqvfrs;JvAilcL*X478fs|?_YZ`tZ5*c6%x*@h0J;$xW=|&$Aeq`I^ zalW$Jfkg9QN6>d+5!MVT9c3EWEi}cY`q>{xD~jYLwKMVxy|6r@@vvVQ7?_K4!-+gJ z{@Tw-RrBI(8ALU8bC=eH;ZAn8g$)II3YI}$V_szHfLhZqfB72)_-;mgLV}tW0QFUy z@OuIXA8ff2#b^Gz*dBI{X2yNKJ(fCDYg<&Gn_X$^tM<%1kDNn0JIKU-_w8nw$L|zn zADnkBuRlv6v-)bW;2e56Gg)DK)i(6@?Eaml)ly}%x5?`ER|QjsvN}^9r$4dru!01i zw=|_n=|2b|6WTZEIZbCELuD|<%FrdNVnYf8=+QhPc@i)2WBOTa1BaS#AY%;xIWzk}@yxp1QR8|-}q{>NJB6_~PWE+%T zx10@cq}?B`XRo=#EHEk7HJOvdE%ItG+kry|``GXJX_o&O)UiBk7lERs$r|8vB68Je zm^yzOPf1G)TgTyXS;m`7V)J#(Sn@R@_21&2gDP`<8Rh|B^iOR=I~?XicXDy-0$)Ep zFJ4d>`8gvC640tRllJ3GpDa3se1e~o(eUy_%&)}P~-6_?P4X(UB?r{Q%|>H zO{4dt>1JkDvEOsn1+OgHC2`e?X+3LV5KDCU0qwDIGBwXd6l+egXww~9w(de+aE1A1*Zcz{KJEkm;875oQ#~o#wulnD2JR^yh7PZ$h&i5PNLKrn zV|HcJ1KgoYE$Sp8Dc;KM+@7uAJe*Tp>Xm6}veCW!Elw93LVod~5199vEC+(E>?q%Q zHH3eZD>+GtE+J@*f*ef$9CTh?A|t_8yfVwRhM0B=lJ!+w4A}# zjAA4Xj{t9%@fCg15viaKF@wOf?u19BW$-Q-wAMzdFIfRe-@huIneOh4>DvT&t&hBJ zxf%el7M^=U#b6O2_}D4Lkb>6#85%5FnRF}a{CAM#B8Hr$m}1fe6= z`-g`))Johb{ov5&bk8p?@%!t%P>2BEY0cf1C&g>Uah(MauSmS4YJK{b(q@D`sdUE` z0hD$vM*f)m3{Men;520*=%#LX3LFV6T0fWWcH_ZGo7Ykl?FrjTfynV-buLPJ+jWA z8BF2?nzo6+U`5(9+48nl{5x92kQ>}OmBc8<7AP6zIBPmnZ@)(G7O_k8cBTLr=Eid!`QvYt~_lt6S>sDJ$&B1&%C zC>`BM;h|=KBb5-|S~2WIgUqCZ19ybhZFE1AHhM-0V6xO)hMO)m?}f-4Q__viM%jz* zh;(~hA2EIetXPBgPwtL%@W)0?G9HP6lVgJKqJ!-`?i$q|i;iN->zMoo*oGMBf}Rao zFGtbGE*r^0Nt4LU7>F3`YWBSnk7vnpz2-<@Nocjpwzv(p1my}-?z5@5CRxq1T65T)|D zp^Cp0oc-N4-`(2jD}-C=Sj9Ct-fhd5&~UOO^HCILsq-|aArn?fe~HV-Z5zgkc!ptcvrn?ql~ z^Gd^dW2bm2XVdwe=+2|DoAU2+8=0cw!!js`C@91i$lnOChsV9D{}-rpW1y}GE?PEK z;=Kb%#3*cTj~5%&B`>ojgDB#ga|euPQTEiZ%%pk-RLG6aJOJ*L&G02Mfs&+}{RcWT zGPLnmT0(~AiRLC`ww2e&5^_-`s1!OZG&Sz-%s2VzAvwzI?hKKH6>x`1=cs`i;&^dC zC5|SpWX|`f1w|m$|vQ09C3Z$KQ`k zt@i?TN5Ip*r&E?hL_`3R!bUgsD?i7+WaLtco0`%A<3C|#&H4PZ)XTDYrwiYUVx9Ia!oexLpwAS-}cBL<;J z^#SD%vb-Hr1R&T-lt~z1V%KH&3Iqbc92^(hZT3$DkMDMT+f_iPp{m*fAaC^V$wgm4 zAs>+5s6j_LHw(t<>Z(bq#XpZXOJ(x*_TJ<$)dAEFKrYXk1q(cJ+7WgArI-1i(ObhGJWG`MawgKaWvjElE!bw6_Ru=F< zfDEDpPKYnVPx7qa>X7`)2{ABP8I;(w!3(nJDF;VhK|$C*>g5X@t~8^(0J_19*Vfl7KLTCpuYv&dsH+GT zp^O3SvMTmICD2SO-vS2mCKW(^<}DVPP>@ zZvGI|#VMB!Gs^x#zo@7ZcM5pFZg4|GgIf~PRT16Q-3^+*m)(R=f!kyjTm*=;bskYH zb2E2f{rL9nDe%G2M9YEiRB5vy0Q@jGco~lX@X#>Cy!=}KmAR*j4tPYku!5GC-!{IM zLLOB%Wd}qNpg#eV!`!NfTF3ota4i5gibJ*VKeNKAeh$bB7M7Ny20f6((~eS08`)U3|2U@c2d#vpeUbhJR?Tk*bf zaB%on;-{q*()}bj@X~KYj+3SctmtKL*yhZU={p4MA%7J+q_Ls%`r5ay_YHCc4VDmC zOqs0+vgYp!cAoso25FiA=QC_skGeMlwZmbqF2p+ZO=6{ufwMKWq?ImUdJwh zqYmBDSTOqg`<>w(*g*3Fs{@7tO-dUDMuOzL?(J>1tN?@{xOae?L{U#I@E$OVK3Bp^ zO-q9Vy~&nD6~q{96X;W(ceI_UvVR~2#-yCgBU=EP7Sa`wWaRH{5GW5)5ex$U@W@oV z2dUNNBX4E@P-qt2geHpn!J4Y`{13WGBbFaa}nJ8;KL zWePPZg4Bnam~H=S9Sj(c2{5-kuIj37t7qgH34p-?c_00#gpbszq%)y^ogKh^lkHAI zv-8zLn@1|!(az*+MW_Kf^t>a_JcLXPsVbwyXqLK2Fb?(arUqd_CkoyxS|~d$EjoC3 z;t={|S{qx0#lWM+>^M!YGS#n#&$;X&9!4*`8x=4 z&w#O)EFP?Lx!n{sw98tFEc7ChdP>+CIT7CmH#@cpe`#;FpHLNY2j9Ip#tQi+=97s# zP<2>Q>T{r}xm@T};U6J_yj$6&Cgf&WAWm_+j}R>0GkT~mb7OyrL7>9g{;>@^_Qn-+ z3lkQcbQ4$6-OmtObv+3`kC2sq_d)NUe8e4xp9o@;y4mdXA*kN7-0zCxluBe^ zXcCU5uJ~UnGEzH~LpvDW^gbtkyRpb& zGaafUWK+epJ<%0{NytEmm1SdU)URB%S7fpvRmsW2YxZ%t*^%_>vXko{gl)uslW{d! z>9@W-NXu>-td4&6!xlnrKI2)IZ~yKEnWR+z7%vVtd7UCeiJUJZC-{BWFRuLQQ?-i5 z$nx@?ZEH$8GBj7acYb`(8lnf!+!pKOcLZg)4y~f1^%q3@-Oi%94mL_35iFkXa@z=T z5>klE!99B>e?M0g5P7w}OEH~DZOMxng)>y^wVM%**zLm%jpna_OnCJ4c)YGCje8h< zbM^wHn9TV7Y%{ymNuyhwvStdpQ|-Hqdx#5eNN(7|HQtu^SzM~o^9M!I`@}vA&pOep9k)#SMqA1%ECt73D;G3pQ~{SB9f63P-WAHypB&%w z&3s=M4^E!Dasuw=OC400$4>jI;`EM$%!8-Hn)cjdknkawGrfG$fFRtGD7>15T6`w2 zr|)!rOJ{h74rfZa8Kt(Kjgt>#dOsA`7Vs}fTe3`cB5d*qd11}!N9)^?l6NQ<8sDZb z<{sGE?IJV~(8f#}z4Y+JwZW4}dlX&2aZ<9@lhd+ve$mE=I&=StD73EDjBn^{IN$eD zjkc-VzwYYp8_nYD*560lXFk?Gx9SeQzF1jT@)Ktwe#NVbIBqUx`!Vm=D zNgY>BI1m@ui0wHv5tZ}wwMn{+oyLguUAS3XQuw@w&>(wgTQ;E^uFO8|)jJh2?`YUO zUE|!%y@U{HX~Q?;SW$C?SA)&r?4`l!>c^w1 zQ=FV=Z-;bFOe~wnu4S*X9$lsttlfLmiid5;861R#-ZHV8@5a({z&hkq7aiyR5dU*i z)dLD#ZUKU~j$1tz-T(9oWI$4)EP}h@!}Cv-Qva|xskhG1j&TP)Fj zkg}T4n3Em*Zlpf>BfCqTl5l1tBXP}D|2yMx(Y|#U6QNMdiOi*-QEV?#+d^JRUR+$B z`H>L(2d44-L*)x9A%rZKVqg8y8aSuHqokQSUU|$bUB)H^YDx1I|0I=4z~j!0tv&dp zZUs)IXlUV`0Q1eDW(doElJI6$dRyDo;`$nvDcnT=cT+p%X5h#xaYNhWgCFu4otQil zp+3+W5gG=nR5KA?Deu}4b6JcKMG;);y}VhYko6JMI%*Lyifc6H(4gQ`pJ#zE{hZVs ze@?A}EcqVmf;S_$%cskQF0M}ny0J7_udfY7qV>3DbtG=|u(7IWS596KCusg2+qM7P zbc*T6sg>NKiYt}Wi6NIqMvE)qesc&5P+*7nWqA3X@D^>yi5$!lPIRPT{Zx0|jA=2@ zeKqOwdS*;wZq>u`0Td8LO4(8$#WV1ok=K@92NCa3-ySZ+Ub(=(Yn#Mh?sIpnzSzhXFbxfi zjMR(QN`Tj$!BQ~qOytpQ6J^qIk+-Vv`kl+}9jmJCGWoKf52f;}!%-z=@2}32cW|JW z*{F<6c*cIr^ZE0=u|~;u39;)2KM|r86l+^ac-E$pJOV%9Q{AGlJU_&M!O@y-#6;dL z760mGd>{UpFz69|pecTX=4uTW7uFAkCG?B7RC?YcJ8Kvg6ob<68k@S|3SIkR#f?2? zk(epT?d_Z}e5?|`BMMFV?8LdKGF+$`x74JVZ9za(L&K-Z*$>u=A4+>6D#nwK?pTY? z#!UR%{~8ezz@mVfgwAg)+ZJqr#d57g1=%wdyV-w|u!Pbo-?*+Uy&_|-8I4z^@6zk< zEmPl7+N^>YEJ4JX4t&tXnScm5E#vL*82mgJ!6S#icEnAZ?41e?k#Bv-zd;^&cP@RI z%RQIp9y)~V8w8Ga*cG| z>Bkys>8{p0&_Nx*zF(&AuaEYhlnbs`b9gvhyab=W475*n(XEFvm+ktAz@lcjQqr;T zzXy&$WhZBW1R~<=2a_0}-eVp)My>SUdsu|M(h*RT@JFigXGYjiS@i=`rmosdL&?hZ zTCa{yGe;iuQm;*cX&I>tteha2;&Ln8=Wn z0QUEN)w5F>j>I#khU$#FJSb?Zkb1A%6_Y=S%7+K%RyNSQgsa=;!NO6*0;_M0tT?*IWc zP-$rTw~iue{^jI>*ee-A%S**NVHGEIryYi$ZhSTWR{419B>Z}#95=em)0&uh*Is`oppT7%r9kr>4|59M;2%c z`+a5p6lu_dX3rSYXfao$2(aP3cQCjW!P(RT_a0e({IEPvuIpfA5bm|P4lsMoBs8Ul zWTmGCFZ%-t1q*Q?c(R3er_wPNvT}>PfWU==zv~H%Rtr!8bSrOtf?@uodXJ3ONXe5p zdi|6d4yWw=i~U^>r--5lXLdXQ8BR3L0kiwx=ktF%i(yibnG&F$2XQ~}pk@RV23_Q#Bb9D(;ygi`lp{~;VY}WwLG4N&^R6qZV1VBUqKg>5- zWlssb2^xROdKrpSHCSW>sPc-6u%J>${ottQ-<4cRIoa44nVF%3VpoyCeDL7mL(nHu zNTTs?!!{^}{}gV; zyF8E_*nqLM@(ihwtgNVl+Wy#>Mx6rq%ot5BK0X;WHMNeC<|Jp$+J7~PY;u6WNE@~s zAM*m2$Coc({`&GsgMpPFv;zR03G}rVx_f&jBS|XLjJq2&1^^)gG?Can*Q-b5%!jYnmXuUnRW2&D53tTA)Aj`Kd0>M{0vwwfP(}yDa5=C z1}!bvDIhKW`U7A~bex>gU%oIP;T7<&C{>k)EIR$0nikL|0Y-Xvh58byo&Dd79sg7F z#$U+(w};_>p^`jL&|s-t_RFFO1{Z-*0U2^PPLA28R=-I+p^0u*eFh@Hu=NxeWh$n$ ze(n(leFA+3txEp}=pLO~yT;d6kQNVQ- zg7gGU;VF(XrYHhMMEmEh`c)JFYDq={@1-^{lJxjAxT>DAvFRTmRInvMM*`3VfxdVn z83JM%R+I~_Hq(l!uE9a0gJ-O%@*4lJseoRLL4$N~K$mW<>pITgy^pmNa%g|ZLPARF zx;{YNgt*+Y)Ga_ZxR@1#F~R?BcV}y*oShGNXdNRu;jGGhK-&Sk2K+%lUtrA)L#j9B z(_pRy;XozUedQpkd^%D#8(J0=iY8AQTSOrCz9ykWou`mHQgloj|jL z3eu5->=FX~GlRT>muiE=!MniZ0#0Qkd6e+#={>Nfu2lKl*P#3QQ(77bmL8Ct{FYps u{x;^|PjwxidV?{$b^nj|v3&d%H}vXHVuLyq7yOzmioA@nbcv*K;Qs)z!}44J literal 7262 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 z zD&0IEMeBZEr+9EQ&OH-{w?VngCwedE!)RTP1L*=YtD1 z76Ku?z9c?w2i;qf-+lMb(9jkP?`Y<3@UOeDqi$Oj(X(IsD?QCx2xY4$9wfoFF!{j} z)3k*a)hL4F?n7+7M`LL+I4V)KVr`;HXa0VC+8ZPsJIyrT_a!E;Zx_KN%uva9L-@a8|li`iS}$R&3#zZaF45yMCov_!EZ9zLFsRCwfA|oxm)b&7v1e^r|%mI zc6b`LdMdP$psvp@Y@$q?^rrA1ez@t9Wpg1gN-uiOAxQEBsv@a{+1rN1ceq@tr`w z3ky23e4s90@2PN!8%GNT2L6gBRT|_Q8bHyl5534eTd)>xq(k$i$4`Wuue|Z7qI%S+ zckyS!Q`IpeFfyxSS~_4N`nl#)(mUeJj|8_;7}fTHZbQPFb1gL6my{}~Q`6H;H%(3; z0|H2g6Z7wpt_*5S^x^{n|~jd~X-sAYiTXN$}($l4SAYZEiMGgwzl za(qt}1$l$?vdggPwoltJ~+g00ec87>`!`#+SNpXK+aqV~hD?l^FhtAxK1{&+)fA&n=!RX^d zw_ObWHP3zH{q}Nn%;%SJbgH*|4k=HqH+H6{r-AQA>D+KH3w?HO?q{9LdhONj`vcla zV8`1bpbJ0wDC$Keb;}ms#0cIp(1d(PfcJwt1a{7WEN|iLZBocC96~Hv zYB4(@sJ}5Vl?i0xeD*UUe*Rc@)#dll9=J-roHD6AkIw_vUs-d*`m*bLsx@oeGqHe% zWG?nB8-sM!3wv=ZiTk*?%fREL!a#Zea%F`bNzKU2)9qQy-e|RdR0+@nnpA3^gG|(a zxS*iW{{YCqd1Y2nIh%~wRDrXu^Eg;ipTtp+IZ1NAtc%cG_zClv*_vECKf&$jg zj{ZExY15uJVR)DGi=M_^lt15cbJ6}u=^;H*aMe|!|2Yg78=C>BE3&g0Kz5BhysNNK zlJMgoC>jgSfvJY$&a)9b!b8p_k*oB7@izZGb+&$omX%eLo?K0^2i^#Qq9ms(TlU<@ G@81B6E!x2V literal 7310 zcmbVxc{tS3+qaS|2_drYS);L!EMcLP1!{u!q~<#_I=IRDf`aMh#_Rn zGO{z25c7EcdEbA2?{z)T`^Wj7bKlqXz0c=d-_Q4RpZlDs$6)>I4BQM11}+^ZBy@%ou#DL@ELk2(qfLz{Qy`vaF#lpI11`YzGrKMRQv-pkC0DuN(C<$PZ zMMW!yY}?FI83iGYK=V!E1S$s!w@?-d2@AbZLO&s zB@i&3)il-HR!~@2*nUXyM*7dp;2<#6E`ZUQ8 zc)=SZ0H8Q#s5}}TZU>3;cs`Y72LnM^SXc^z>>Tg#8^H@c#|)r}8x|TySyO-AJbP#z zCjM@=fneC|1RUk~$XJnobG~=-nBqn_77`MI7{Q%E5V!?MO-*fheiITsiiK&c4NNZe zptaBo#l(Y1b&di%6;2zR9W2Ps2sBAp0cgNCd&7xja)_zAd;L;xZ?Cbju^2zd_SZ1& z#Xms*%D@UiMRkq!zuTp;xuAa+PF|k}mOiF0U44)a-Y!(y&MzHZ1ohm#U63!mJrIJr zrb_VoWo0U=TW5wK?Wb=r+nLv%v760wM9e;SF1J?^-< z&fhaA(Bd+{36JSx73zp+#6{b7!5-%uMUv5fc3B@Rxb=Z%+F$j&u1KTKyduiCCL{kP z+o$!mSy{ojYq_5;E{co0!$z*B%95{g%t&lq;;7K}$zvYUT}Cf4#eP6FEOyt(kRgUG zFc|&BTi;fr(aR&~50Y4*w7i%ua9VH}zn0|w>II#rmWy=6@{~3##=sh<<89IsH9x_sy(Es) z+OilD?C#SlJQiQ#YcWgD)>ct`e%(a;F8m>>y1;N_-r$^%;cN~5w-wzKwVl?c84JaJ zRNJR7QD_jjw*tMv`zSj(Aw?cBrD}wOWOFO~20ls1QX`re?b6i4?)W}`Zn2GA^S*`< zEiK>F9&7d23Trcj3%@hCWVM1e1%J>5mGyU)B?-4^Czx-$ugzO0IQq7Dcw0F!x9#2U zatPkIa_1CTHr%i*XwXqGJFQz7T*C3B9FU(=@Br={amdN^PK1*zavshg8sNv`Y9>S4 z;*~8l8Czev1Lo5;v%8tW-0AAo*5od6O~atlTN)v_wW(kz{!y&%NSno5TW%y=m5Q_R zP!CfQF@Km#DyU0jmd#!Z5i>kksmc8oJm3^5z}y*lS<8~n(SYJ;>4J}NX z?N7=l#cyShfE>lQNj(Waqg2_v3<}N#>v5I1P)g2BuK$WL*A*dK^rI}E48zlmt?v@C zo_i1`^E9V7cz^7q{b15mLMtZuA=|5y0e*6kOq6&V8Ih=KTHbBv#I{Jj(UBBCE9#CzE|;iZ zy#)sM>Q|JjT8|Q5CYv=7{pB+FIs-n&J_9v`v_?$NZk%%VC2h+jw>(Gx7L-IB&^G*Y zfWvBmj*QKL@vP5Jw?91ny`w8e@+r<3{5N1hFdJ}61Xdg+-N+9oq!!Xjr;BW4JL?DQ zygVo*J~0(!aM9||is|j;eKi<6+Dfjp48iENTRUvw z_2o@-JmuNfmZ|)@78jxwWoM?re3}s&OTWNGo7-H2VXXCEJ7rq*NZHzbBu$<4wv!q5 z2_0Kr;pgn>eh^+W^7?7B`qlLO_&J%tmpapgv_l=9)7uN2^-kxNsrjv_Yg)DgakD(u zRb3l#k3QaXkK>H5R~}HqRo?E4g80AAdStzEZ)2lbV`PI;yDAe%26v?c+oWvi&bAUtZ?4sE$!1y6VHpWw^~ zvrJv*tc=&K72LKmqF07#ad7U_FkZxpvV!8D-IKlU?G-(qncZK<3V6*Zl{gWMq zxWAEN9!aT*YuB~BTL(=>?|uIMJRx)1r@_p;P9i0q#V@kb7Wju&0PwLQEmr_+@pjCu zD|lt_9=!)ih7wgt!%@>FYqRpV*uuCX55 zZCTbGi*0J_%q>2RpcLrsU?r+|?(A>h0zQBHT>#DMzE`I5R7y!)M`h!N@daX@Q<869 z%q%o&MG7Z-T`{BfLF7APyKoq~5rthlPT*J3p?^s^7?GWOj=D=}3;nj0_4 z%(&fiec<{8Ny6(YDgODY-n|~2RSzz7PQ;E`<|PyHeR{Vj?A85{D96t#8P9HI1SQ}{ zYa6r?&H=&V*YYxOC>xM_ZKT%v63ROtJGvpoQyCC!k>QkX19|>cjGlG16Xm;~w-t4M zDf5NfdgzsR{pkR*^K2c-YNS2w(9Bm)#|lx-+@&^KAGPrkFygglkjqd z{u@%=URxOWl+v2+JRmvxLAO?3nCWkEDt?r5s23@3vR#u3?yHaHna{jm^KPT;GXe!}=(=i@fm+oYT%gbUbi0L* zKYjkURSopl~hveae&j)i};e8X3F=WAS!7H1CUBJQyU^t1h>)^Z8`f9_rgcLsfb zzwldI+O{5a+pow7`&0;vzJt2HjfnXJ;#tr1@C`FVRAX_UlD`!4do11Z#7c!JT{u85 zO`V#Rn~+D_;DQO0Wh(_*9^(nid8GHD3$(RT!voLjDP!iOR5=1ur8A%DNC!??mMM4i z-A8y{#zR6$Q&j2sm+{z3iuyF^PSns?h9CqvUD@l^b9{x+g=L2zGtlHz{|p4y-p&C^ zsp73<1|%9)h3A{?D$RI|&ObJk1~Jj3=f4}l$iA~c>#Q$#smp1{so| z&k+eFl`P8Z+ei#7RLuzgbET*OWiCR?BA(G`+qoKx(``k+UitC{;?Kmm-KLM6(#k=$ zl~m-4aA!43dGVm-HYk~Uv(0vp+Pvgm9}xW5N-`<{KLRkEy5nR$M~jDay2LgD$0SB0 z(wBn||MmV{$1cPtdnYORFh z-~b~Y`qN!LJ)}`uOJ2@%m=hn}GtO6axtlD^%;h#l77k=^Ot zhLP+Uq=H`UHx9R;=hCmph0$K|k;#T_z{DLD%46~`W0Uh70VmCG)_d|#+ESMd$Nw# zO&p*ymze4@;P?Q+tD#$U@rB6jF{YYM)}6dWZZ&6@OeJS?yG~v;>4l|l z`N?7zGwvYO*#xJ4;jE}8LTUR62$_rMQ=6t7)1TWr-N5702Tif%%-?u#zLxJVp>+PC z*%#J)!~~anBw2IZadN>Y2LXieyiuHQ&GGCFX)(!G4{E<%-V2&#)7Sl9hAH-6y$CU( zOxwO3wXk28^MkZ_G_>!(3M-?udT;vALl&($q{`Y;-luK`7Jtrm3OatnWybot^7C|I zuhN%?i!RP*tIKMkjaTGE%Kyi8z<)?~PswQ=2Ao%NL9kB~D&q1M(Sq{LDDw&I$s8>^ zEd=H9JC4>yLA<7|{G%#|dAq7Jo)>*mCAnnTbTKLCe@M9Pz!yj@fhX?R7iY3h+pt4n zPRd_DlW7IU> zPOH{vIR8Nnf_~SDEOcq2wdm-Z-+)qo*8e=yy>lhkP#&<>;qLdL=Pa9#UW4?#qBll^ zt1iAzMZD{n))nfs(^{1r4bR}7@g&Db+Y^e8H0j*67JV|z`|E(25sXkQ*7mqXL~88n zpas@{edRIK%Q1E~prWzi^#|FxHVprrTOca}5% zP?;i8@O<``W{J(c?SXIe*#cR!pE6s#91dv7T?2nguIsmN-90b&xQ$4OTS)zicx=Lo zh^Zczy#G`eb?xO&U{l~)=)KwE7Xc~kIt0jAo?GyCuFFA^tznmpQZquXVXNCA@uS;gxu89LaYp%k;~r@vzrpBkzcPU7bjv_rYN6D$qAF z(21$(zMA@tJ`NV8yBoLpByc2L$O4aC#@g$n_;{AaVH~d?`yA8l5SmxjgP0z!v-%&p z*DkhulfGO=)^rbENHu}qJqrHg7!e-xa41~9B`}|T`LzmG%C)d7f} z>(LODvYoOxY5paCVp5uNrO>k=l1PdEtxh=k9ZhXA40nFc-E(yE; zFYWtX2`_F+*@F*^qn>uBs6-dU4cgJ?0 z1y<4&=@+js(Qsxdeb2r9_QBZI>$CgEZdQuADH$d^l^DXKShJE+J{-NF&0OBvzq?+H z4~ujSIc9X;%y;q1OJ^@w@8}HJhG%&~o9Sv#^6ho3C2>C@YOUUmwCdvDg1K>fYv>^o zRHGQf5zY?u;+kd?wpnr(j(!$1&D%K4lPyLxbXZiURS_S%;cDrQrpbMTFhGr{PwM>Q zGRC7WAl%t5647}dfUTNu^q!Kf5P#Mar^WH0(tKR+d;7g-$$nv}#HTO@ zN=)B}_I=l=K2553GsQO9c!(*=9 znT+0wk`>Z+H+OQ@xj04YclES>OOF-*F>u9VQoUoMeoOfzF$W6Xb}GmQ740V5viyVF`rn z;p$7%rKNYI+V|HJzYGK;Y|f>)Poau?KOE3B+L=pI(mZ%9!Krkn|LvCLsYhk%!Edn_ zi1YfV?7_3o+>t5yOHtln=w)#~pKwk+6~fu1?Ax&SKmuF08Ugs0Gu`PP0{t+~Ee_U+ z;pRwTJG_FtaSe>AdjrhRtjsV4@%w(%MR=0jO{q;0-X98K_A8gEi$*Z{T>Fk~65Q>n z`O`ZhjpYp@>R+tjUj9?n<9qnyZ`2x?NNM6hCuXHSNF-n-RafJL=XDFnU;1wkNsbgA zEJ{eu2HX_<*sC4%Q(6#rtKDu>JT4P~?y$T(S5Zb>@K9PP+6kLOq{L?ttaQd1f*SSJ zfv5*_CnslRUqMfz8*?S_Y-DL!H^RG|^YUs6Y7PJ{HL+bab3Vv7Wkaz2ff9n1U zP&?_qxek)^AOh^^YPSK`n^%H;<_nc0csT%9%Q1NK!mmc|sH{9mh}gPy3j+z`F*G^rV*;w14&k zMzCDQ2xskc^y^+(d8UUWa$qqBio0odG(27}7b&S&)hr(#`+100J`yO< z-<-TH)160hc`)@Y%2J8(&I*tDAZX&QEH+NinX7caFF2xI0UM z-`C~x&dOetpgE8gnbJ2(DBXY-zy0+*m#Qx2}dKdQeqg8LdxACXi| z9`cipK$;Li&A*WAnKqsCd=6mOEE|+N(b&_RfE%P|Xy3Wf;Djy z<%+Q_Q0^4Rh`X+!%h~qw`_$p-EKFG4q_B*#7mxE?A5f}S1g9}=L80VXslU4Tk5LL? z_SK5`%A$LB=r%gLa&CUZ82vrHvVxjP11>!q&~6amoFGNU)sI8%f>5>zah+`@0bWCh zzIx|IznJGEqv7pS5vj!W&8PTCyW@>hpoggv0fy+oAeAl@?R6;w%c<-rbdd{t>-9Vn zP`>ifKC8D@e+^hTirWYi&QP2nzJ5EprPI*h2f~FAEpx55J7&`qR`O1c^M zI*lbkN#pywwCf4)l^?K}>HXDXm`ajNcoclyZ`=0|N=kd*T|Biv@KIP;2fJHlp8qN9 z?`L03=5&~wr-u#Y)ZWT%A5Dp9Z#=&B+_`f*PT@bpPxO=-ckkW1_wm#1_wnzaKOCZd z;O*_LahYiw9UWbEH1B@=q1^?Yv*d?g6g|S9H68QZgFj2USredp03YUIjb>w#O*FP=k z4<0<&bM1qAZ{;&ZffM-siNxs>ItLFN@O=K9DJLhVJX~z1=lwZ+Z0`fdmnjt=G;<$@ zhKAlDm*2}IV%I-O~!C<@hwr$(^H3F)2&PtP~lkDTX`s>oFOS-zc(L>3H zs6(m^#l^)6x#hd!mVg~6J9d4bs4*&NzTC*ti0o;Us#kTv@%qJ7Br;g3c z7=8Api`UARj5{ABtBrqtF3(XDE+(t4&RQKR9CIO5Xg>#sJc@Fx(z`#>y&gk-oFdetl&T6^Pc8i{w**G;v#%t@7 zgO^r$T#ixD!5>PwiB~@3i7{(QyYl|ZgFM#-Y-Z~YN!R&-7(B^f9xd}!aSo3A-`<|5 zr=_KMl<4j`c+i_o!s%j??&%1(dE<7+-@CZA@=V1I2fn?<-%$RbZk+nzTo4C7yeY+q zhLU=-F&dw4+MMjE5H4ExO2%v92jlkbr@XfAdUqvu8y;=Wcx zUh6kAa_eL5jYoDKGui%D?&+%C{QQs2+p>~wHgdBFo6FZmNMt&U@72h%?V9OukFoCi z;=4<1hlPbjPHryQH~0g`ewM~~)#5M_8;6n1-%R+N7=>`%uP>#I2QM_lD6+G%vZ~;s zUQD%S-SVMYy^bQ z?9k=O_$|Kvhuut&=vGd}h&R}a*kF7X?cz=|BWA4Eo~X7Rz5YqN|LZHt_ji}>Ch3(a zrJJ`=ryEsfeuo{j%DXo-S~BU&{!`kxQ@FNJ~rmvWh$& zY0F;SIW%-Wh~q;4&(tGWXrZ52;-@X?7AbB^PKU33pe}fNj;{<#;z7BxQ-)E@Zy3Kq2v zHpE%k+sDWTur1F0j$E^L?WJ6&TliBi93V;%r=sEXaC23-*fZgFho0MmIWBYjQY(uB zPY++svIsqL?Zem9o7W7hUwHcXY_{YScfr#iZc4g~DzVdS{T7zbc+gb+t(gMt?d@Ee zInQy}RH}!YesW91C`NK%Pq7>``Dpj&x*n_K!mvQJVq^^-e}7wc`h{E9-d((nlYc4G z+Mp*>>ek?shG{n2RxfJiqRzs*x5Wy}Yik2=9P@Z~gfAc);5{914|P zDOaN9nX&Dg(=FK1`p(VpT{KY)cTTx6SwMZ#A&y%a~vS)S9 z+^^8%Vq%l1&XShl*yUe%H&9VC@p>fY%|ApBJSiiyanq)~TwK&1=rO9Pf0|Qb8vfvz zQ$8A02D^XfmWa*Xi4$vbY^z?W@1DblAGYT@OIfxtJASpY_z@p6ZXdY!^w{_~{^ZNA zKcu<_ni<_!a&&U~mg{V3f7v;NC*uS9Q1or5up&tnk0s@Ti%ZvombZe%Kvh={E zicn#T7Y1{azt@jcecH~Y!dt!c=Vxk^cHy0PjqKpMDA}E5G;c@pvh4n_P)_^oNOcMe z4c*BRG{ElKB`P9f@beeyp?nCxCw3Fn#aAcSPV`kiGjDNT(0F-*D()xyCk>|&;jJ{6 zXQZ0jmrC23o97dHy1P$WTTiUExQ4E+nYKmdaWgY?2p z|NdQ5P*`{y_duN<%97)@G<8i+RbPKUZdZ-e&rJ*?JMVX{ z7~YOn2$#EZW&6_nl)%W%mb9Z3T=W5M?iv+z5ZlK=L4FH9j67QlmX{X%ga8p|Bpk%{ z)z#IZGkyE0Ba>x2pd0qn&Awwq=+@wsIMqkS_0d%J3fERR|9q?epdm*2RUK+{Y-^h>m#Nl`A;A?+Dbt3Njg8HA=tp%%qRZR_^-dw*moIm}5Hgc1^WP<6*-2TL8I3vVxhZG1+lL}} zq^rA2iMb(La}P7Q)x`p@6Pgw{GHxng#O^tFSri>4)2O+H)Lda=GQJ zUmOb&cjWi?_jg&I`^}}6=KFx2Qz_47PS7m$*v-;U#`VYXGz1K*3QUCruw~|FMk9?^ zlvaNgs1?7Po}S*|I-0*CsaNKIKvFUSwIRiQ#ZA<DozxPdk6*G~cmCX zyxc+9#kT)>UI(}h@*-s3T8_u(FqDwKftp&sGWh75H*drrPnDIGO-8OPdRg_9Cb=%y z`Ll`?y*U?@fitpCbtS(#UNxmD%`CJb8MT@ZKrL>wrbeDi2?dg!1c~|Y63YN|$aS7^>o*(j$d3f^oWyD9>FO%P z+8O`+bcoQ{H4?KkXvbZ>6+wa)?W`1^lA_qlG1!frwNfi@l-|lw7Ew{RA5r$j)#@8$ z23&1;fAx@B+AuEq^8@<*2M$~UbCJFH)b-%i_fN(p<941oUnsn@ zR>XdURV~f5i(Jpyz`e5z3zyT)H7EcU-k{5h5#qxw=`@UtjMqQikS@NzB}CA88y_EE zLAcf<_T!ejKYaK=;1K{5mF2H0W+99As^%12KQtq9Przau~Y z(j*Ry!&JkyLqLX6vH`zhVwD+Kx5mZLtSzaqEtJ(SaZ>Yn1zGNx!O$V>MqqY3K zS_mM0kIa2qTnDN`rt5-`QEh|))*VVfZId0KUsKktBZeu=K*l%Dq4fxl`C{ETZO5yxVW9uH&%*kk2VxF=9hxj|x7!c_;{{T9Pi>vFv_t>EE z7uhXKnlvaggyI1`er37~8b8tZOp6~}B}&oK=$94R*Of%gaO?)kSeF<3w>RhL3Eqrq zOE#$d=9}o_bN>ElKz8#4v);`W4|yqih#(ubZvBOQkA(?14SD$;(Y&m7VY zC_337kY(hsWc|%4oSK@N19@rS1|tia+X6o&n=y&H&I=y9`9pqkk1~)P!Qd2#O3%gY zxk0^N*^joLI(<6Hvg@R}hK3(c5D#Fy)`~-X>oKLbGlQ z%bM1?$BMUlO1Ge<)TY!*R(epaKJGltMFZqWb!J2VYQ%RFekXmF1-~oyYBlnV{xe`Jf)MWv381JL|TxdV^vTj*kV_ z!y!I?{CJb#2XMN=#zsc$&A0`*V6F$~$X#7sv$M07-JdtQxVXGi&*Vn|ShpKO7M8I7 z_36!_rBZwM-ob&|sWldB-jR3V;ze46FHc^fH5P=oiC=wxh0m@qK|OPuPsz!aG&2G9 zYwv-K{&^Hhda~T=83pdklkDj4hqUrsvRosN-3+Evr{A_s1)ZhCb!L}Fwq5FV3&YyB zMlJUX54Ig}n5-7IvbNSmIZ@Ad3n%AtWJEzpX`6)ewEX2!s7FnojOn4k#h~KdyMLcF z+c*tQG_O}UiR#&Qey9)0Mzw6{w52HeI9NL6kM?ZmR)4PLHs^`0`sK-?AVV<}9?~1Z zB_|grYtae|g*#mIe4~ygR^!73v*7wv|o%EQ;4{ zG3k%MNXpXv=4&@?*T#k^~}cu(=&fsWMh@yzPpyl21yaCe=)_ddi|hGsF0a&$g^-U`-$(D6)$Dk8UuVl z=qf8Nz6-SV)-eo<6wcwkLx(nIOuh}A&#xs<6x~bdqqa1j7Qr-ltYMO_Kcioe-K3f8 z^kVm#PH+I=;p0}_Yb=fIRrMHeGfuBk}{C6aRRa!@(KkLblP)SbFp?*G z=8QEkjHvyHZ%hp5+RZ!OfRNnt^i(X=DpQ|DX)F=Y~QixCk7I2Xmu2`E3JNN82Ocr~_!VM=Gj94~=8|FJdMPQXt*pl>ts5Ia14?UadFri_ zpO)x4zMSzo8p&s$(l_NMg|8yJ7=i|K;wYA~Dd!JBAHVMB4RT;sE-vEaBD+g`N|$Ex z(gd7&9(bpkiV5`g^*tS+%7Spp>At+ETnP$ajxFKWQd6_icv@Cg7FzdN1%(>hg&DOO z5LB~6Qq^gCy1LMZj$((VngnIVjhLg+mVl?Bn<}N6Tm?2!fI;~noRydF z4Ka$~TTXXdn!ly1r^hVe^yz9#w$YYvYK==jqkmY>JnL+84e+~1xm%SMLL;6( ze{LHY)8F4Ozwqo!adGi%OLg@Y9v&WSf8ErU11XJnv6Hde_X-IG1CI6d_XBt{@kv|TPvd)BEi~*` z%r*lo+C;9<<2Y&+mYUNb~HSc>rP5Upab1ey5SW`}Wnx1Fdew28yEu zM!-Jl9v-g3-^P#Z6&3w?d>sdouhan{F1XjXTnKKzIX9xZOHDHrH~z}9tB3*>d>bR9 z?DFDV!krU_iC*6|f&n&qi##`fPt;mrmuegs9~&$GyJRJ-CaE_Pth&NKFJF!xl!a#x zMa&mRoH_d|PMLiNbFA#R=C&l^W;os?Gce{~RX&1zZ{6y{Dwo;`{5~-LifL_60cxe3S z<$$LuX{OAmZ*M^gzyQ~Ipn2E5lwQ4qM^k>hy95G|-}vb;HXI=U@N&pkvQRh3*>qi) z9#{@w7^za2(r5PM~d0qr{qqFF4aqXgL;lbAbQnU=}rq?{c>6`&Gm#= znYU(015&g1XKcb@hj3g5R0A}99Kur+PVJ{XvryAPgo5g z6oG-%r5Gt@=YGld)>r%w_2q?K5OL7O&-~-8>Nft*>o1!w(0ma4&ny73XaAQz-Z#k-c_gmV$u#*ElbnJA2M5PGdwY8#%Qy7l z!8EN!;np)OZ)*!jpV_u+*9AyfHoaVz(j*Mab(3h>*%k3*A-G7B|?EdvDxWRxp{1Tw)=gyujALM6?HD$hEWoY9se&Rgb?2ek|X53D1JaVxXD;`gma76^#GrbPE2|GSF(or549lLrL#}o?1EqgS`~uJKAKe#7yhz z1REGeXiHpbODBd=ILYqpm7Q9FMphLfu-*fr%s6xksc%z8`UM_T#PCrxb)LD5B7iF9 zRhH$q?SR}^B~Lz6I=)8c{nfZq2m?!>P0BZMDufm2^V8AO2Q|F)_NFv1rdKQzjgxiP zuDQ;;G?ZEVAD{pavKH9rd{F8sAnadoOwR#^nq9ZR|Hq>3`1?0=O2ILXKzEjy5EvCQ zZ7KjOa_D<{jcvfG{&JeBYA~1TNwj0Ccd98Iz$*c++0BGFJ(qHqgcxxM+F>|r_o z%`ymksApK-e)sMm+-%exA<$aznn1XRRQ7HZAwj|Kzjm)dFhLAJcqZe^vMk%R3(nKS zT_A8yy+f&|?VdAy*#z(r<1pU+cc7j#?mS%}t3H|nO52`lYqS`<;ikZ~3Rcm%`j*gbLfT+r-a=r`n^zA0|34ho4R_hh0P$;>3{8)|^!B0e{V7zEE4=oeZjZZ)s zpj1E@7F^j-eTb|8l?xKb7`BC)Up3C!KzpuOUS1xNdmcTa?U6+JySI^^v<#d>;;4ol zx4M(RJij@p;?&8Lt0bKMzQi{uFUjwkBqlgqW+H?^oM8e@XqY;RM_BdtFA!cOQiCasMS zXwLXDNuN5k=HDR2(duc7){H_($mHVidvG6Ba@~jp2b|)FK90snHB$9h0UjUpLBfpg z)3DdDyDtWIJ;zSL%6+Z~;`B2hvJl8-=^sQLkV2Tn<2Pdo#odepR05(gfarfS6#(QSTL$R0owbT@9qw(uN;q@NTedR{f`>V-vvm{ zd&AaF8CVDUWti3uvG|{&6%u0Zw3pU1XBF= z{^}9zz0*K0%;FBbaH7|0Lkfu3%zXiX91hLp^6OI@f%Z?My?Z}=ScLM7o(P41+IGRF zx14TyeuyWSTjL9n?{gdlI$S2VP@oyUf<5`j{^DbxmB|Xu$fk+!bgZoZY`2E@ z44Zdwy+n~B8V;+7_5KSjRrAk7U_GN)oJM(svSEP4gv&$)XK9k=t5>gF#!DE<2Vy~R zy-y8yjpi+Iwj9&nbn;rkx#k$En9>oDv(=pF_R z%u8tfmlLiZ1ESv8x={yOD7JjjZ0aB=rBb4%1n`l5eG{vs3lpdz(S{J-h)=Ws^Ya+F zG*oJ2WOAx+b+lZgt58Qd=E(b>Q(L((Sy{&nd;a>JjA?+!8; z-xAb>3EjgoKo+LbhW6$1w@&sS^#ZM6oG^odfsH5N77}3t-}xG4ic2dm4B(hqfS=R| z{FBQ}oBiL>4)zRz;syXf>YFU^q6sI}uXv33z}MLhJ7l@wVClf86Eyk0!2`wb%RAu) zV0h!EkFOd|^JLo&6lIU*Z9ai)9yTB?Z2Z?aiCn75_sF5dnoxbkra*|N3QuZ$amcXVfM#w89@vK2lhk{Z{gf?s`dX@I#71r1_%p>4Xo6dY2%<>~2Z4k4i(9zA6N z$W5BD2;R_c9UT}r2X8QeEnlx}>#9|&;)59uUnw871C>VdtVB0y3|;`)wQ&nei;Ltd zC~evHoDi(B-~te*NdD@w)W}F}TOk*mp3fyERF;4HFU2iW1WlX14yIM;C(jE**jf0| zhExoQ#Ld*IU`ay`_$kN(FiCGXd)eL)6{#uDRg5S1FDddb-B*^MR~yD@`Ey@<=`lWo z(xsrQyBGb4e_j*C0ucrxpFdh|DhTKOgxFM-VG7@7*aQ-wduQQp&5X2tx=~m3E9sER zN9`@-!?OS^%Q^f?kAb7!U9)N)e-$sK<3D*;BPJ}^+Bz?9IJKp zJ%&P|qYIOJ4O5z%G#+b)%HI0vGI)TBe?BA#J7OG9g&+2DXk#cK-w3l^Y>GJ!gdQLR z8e|d#L1Lf-n<&5#0HUR7+I$m8HzcCXesm-qB8ZWSy%YaX)X{G{?bY0^OLddJ0?)&V zB7Fz$-qvS4T82ob&A7@B`qsI_IToBjPu!HT()8y3#NG8Y$w)>Z6e5r3f~u7&8h2%f770-8}F7HK8#e!Xgszg>R+dh#mMJGuG|G)#A$Z7wvCr7T; zs2B|j;U+{}WGL6@uJqt0sdr}ZOJ zLLd}yRl^Y0u!37N*qEpYQj)(ky%U}4Eehh9N0p|g{QQt|r$;*!BPCsl;)}rMr&x2k zq-rdc!@%2Tv$gKaK^z;VM%u)D-hYX(zQQyQAD=v%s55@LuweiPz0hXAp|p^v2dfbJ zPR8i7f*#Tzd#IBD1?T{kup}g)XT&-zVOYfkI$nlK>H{KzzEiB5#8kFfA|AV^KGVji z)R(y!Z5}?bHfW2oRym+(lBiGBj?tXStw8rVNn!-plST{Kv9rc=k1+7D7rWb8Xxjt; zgMgNr`{y`LZewFpfa=6P>%I&`_X?oc1&%VZ8ng&-PEw@;3#VOeLm%^HlX!u{xO{s- zB~JM$ktLuA8nK8K~LMjYCgR%3GjzXw&5_3sDJY}lZUkHqzKBHImyxV*fK zW?VEV*j81_A%I|EXSHyLK2(=03D=*(7nHoxws*okT0W!*K(2l%ASPF{wAT%b;`BS* z{-X*P!KNT59}(+Cn#Ce)+LS-!xrhyimg`gleL^KFC$clZiaM-So0EeBuTc%FB$yh$$tyo!iqr@}LBZlOKO`>! zn+SG>Qvxx`2)#jQ?L({`zjg1~xSle!4MYaLteDrRm6q;+2x5r6K+Vj5@6n@2UhmaT zE#q`dM#gh@X%+855v-185P@hnD;uT_%5IaKrKyV7O@bC#QzCQJUD}JI7>Z^)Ik`p{D z1fi-1jZ{Fb>ztZK2iD)3vGPW}EdR8G@Sa~j50o(D1d$O_{tSUiL{c@7LQnW0();I+ zS=fh#mxv-PCQ8kk0w=m&#?AJv0oa4ZOzE|A*eWRnb_>AR-{GAMJY&D3w;BWmxfQ(=u zq}gX5gkPO`_x4}umSl_huU;$bMsuFhNCKU3AS(uCSl<=-=8}ED-qdkl2P=A zB@D|{Xhr=t(U9DLX7LogM8(9!$R}1*Y=mswbFBli$Nr&`va+7R!G}RXmmzzch3wJW z+3A7pgq`+ngdcHz)7_9|aJ@jB#)~R83V}z9X&1G2lPD$Zk*a_7l^>uKnfM)OEHzfr z8sj}EFZ3deK3eCHI% zJ-ckNyOD~@Kr#cw8t_5G3&Rn;e9*Z+5P#qymx~pV3WyP>YRpW#qNHGbtV8so=7)WtO z2ZF}167b_1&>qq&{xLDX_r)gSpi|i*SZ~2Rp=|$U z_j-ldk#FG4vZ}AKmlu7Ab~{iJE=G*WU+A8czawp-h`I88) zjDXjg6X5EAASj^QArcT5>U(Rpy#?YKj7&ZZ*k&0nQoAK za!?vLS0%?Gsi6mirwUqIEa)1TfetX9>CaCOpbB&$vGh{*L}$33 zW_nIrdpGufz*q<^f`TH;S9Quwg-8ws29=)y1oOR6w9wvIgiOo9F-YnHif3n#q9m0z zaEfWu$31Pg&?Q<35hQ_aL>v(j9zartSi2MgE{I-E#wZ{Q5D^?S(R!p+1j*HNfN1Y9 zLI8UB3YR%xu7_)8J#Og%YR2I1?haS`Gafb-La02?kJ@E(nMuGTR9>$FYC^J>+sIw16u}!V;4V$%x)&qsTr)GP@D1ah~Nof%>%m z%XD^yQn;k+3uXaBOUxIMFsWW9fG@f7ni~5oekfmq-(!oh7;qEcpa3Dx_z>P5#zof0 z-2#t)iv7b6sRsE_8p4?o)G&bdgvhHW@l#x8E!&+(B`Cu zR#M`Lt%J&CjHN~tqZ9cwvgz=szTq3N={B4IUnJuefKy_ydRD(g5(sJX5|zfWu3{3+ zy6{4fYJ@e>7BmkRQ41-T1l}N9lvGqaz$UYVn-0QXNC4v9yT!#4bU0EX@@X_OSOxy& z8jPx!II#FJdaD zoQ?%S-_#nyXWW{>2mC>N8})ykrAsM>7qF_$8CFr_B;Ye%BQ^?wUwn& zcPNF7GWV&eUP9V2ZOeN4_3K5Xo@5YZVt>~TXDrFAMaXS=&IsCM34lM_`xR^tBU~!^ zC~VFNXe)f6I+*rQ{it0ilc0v<#Q9}fK!)Z$4l9b07yiN|99OIUuX}(LWs!(NHoW1Q z);~5Z5cN6~EdUn8QXPN@FYty>WcEFPrhRl5)& z9s+nf35%5v=Bur}g@iYNRg%+`3AjTEW+G;LgA{%1$rR%Lqh6?(=MDXo?05E&195q>ZNLh(f$dV(0UvoF6qaXX$HW2yUP zZ2+4Z8W;fj#3dv!JM$Yn1hzYk(QngT%xrRLe?s8B2?+_6Nl~HfG(Sb=3Na}Dya1c` zredQEJ9k2<@*!idXLnfRLQxQ#nwsLd`;sbxbq*r^iWNjkD*2zMo&6hiBJA@MdLYT| zjEr8{+0M$(0QmNw}KM zgu&^T_+dt>H%fZXH0lb%tMup<2lnspeenI!Rn(mtq*osiZ?9bMiC)pyo*$6mF{xtG z3N2F{)jg#$rJc;nkz^mtZFuP?l%MUxvRoV<4PB%|m(cJJ-%?S9XfZRN?mhC{dN+ue z7@~I*>mIF2=3hrd5OP$86c?8-qo%`cVsAhQAlMV?~<@(E`pwjTlB;Rw7C=`Uf*Tz22veG_#!yN0bH4%Suc6!8?(U@r7LlF`Iux zEyZvP>=hhT%w1Y&qkP-^l7GQMj2*}+klV!Juwn$NKEtBvqfXAs@&dsfsP&epF%%L% zAfv2g)DX%@8SY15*E9G9Nhmfw)3AI<3KB4^AiPlqDyT}nTW+;p3VbB!n+3pW^`<-^ zBLJRQIT{3C1QHh9Tp2K3ctFJ8HMEQ|%By>%(7$idUt15(y>R`qYS%o$t6l%IJ z-Ex~B_$LX2&nbtRM5eqb@KyG~Spt^B_^>=a0;%`-h90Ef23pd2(7p`OTu9=T7$vAB zEM^$1k->7RA{PU#mrRC`1S^oh1n%%6gdJ>*0*v~;x@Y~LSpZr7_*7_N$~xAN$+siT zg0#yjvOEy`5SjYuXi5}tKu>6RDc2(~4|OCl2bncN_!gjX)zMj_f8sz#r9@1GRncxj z5T?fY{AAG)0l&=}5QhRN12JUFb3xgxdlile7DUTUY1MT??gfJjK zkLnio|BEs42!aO%>DMoC8G&>7++5O-&A~v_(fV8D5MF45C<-EY=wBZQ0z?W@TV$>X z3Jt{pTpq57U39>OtMEZd)EA6|0?)eu4k!kC3BI5Zofu|@ZyBKq#8ZO}u9dJQx)*QlSc zDgNGg;BwWrien53Yg(VSYM$=+_B~#{HJR&~T=m*i^?E_Zi`Ft*N(5W4?O>c%tsSN5 zS!7y!dyP?VYvfS3$uF+jxrn=>_O+8?0^K)3wDk=QS5Xj1^aHc=mOi-Bw3buL>)yTH zLPE+e9Vl2ZopQcrP2T+y^-!#=8@VGo{t#+xL;7bT$Bz@wu4F{*qNXMrNkWkjUU_+W z0lc=(o}PUl+yRq5H{RLZ31k8PnifgL>Yt<_d%RA(fD#z^?3ouTO&4@D47KthHpQV} z8{p$Zzgp#7Vs%v4HQF_&WMzAxTM`riEmlr_ChE7`sZ&2kBR#9y3obZlNe`V zMzI*5td-IOd?Hl=&B5@;8ZVI*>6hPkEo|utgfL^P<+2|sU*Co{`++$)I}Ji zE*{8{F_H*@CR{~buL0jP``{^hqL92eng}Nw7wdN>st}sueQ5dJ0I=90*OfP7bsq#dZ`qvy}Pdq@MEZw~WQoxprN}69X*oH(Iz?+B0AOcs!4N`FMn1$cs2F#^C3MgP$S2{> zy1KiSx^2)H4wEHe6}8;}6Q>jgJLcNwI7b99oP~PMh)pVkgasM$fO{Bx&>I7;Y$Q5O z%oz_43Wa8Lc>&29Vlr;i3grx}>>K<0_cOYTA4;$e>Yt*9FddyLO$BvOW=4iKS`0wW z2^3pFmMzP$;$LGPg2JY-J%U$f6`5Ya>?`qKnFI`dkN?((FT7#Pmebg4Fz~Lu*K28R z)J4( z1hf0ZFq{N_SAxjCxpf1sVbY$oJ`iq(AyZ8Fk~PQC3!eS?g%@^4U=%*0ozm-2k5iN zQ9KxZW<;nwz=WY`+`|Th`?w2_u^8Yx$-GVU-Ic@VpAjH!{5V8F-x#>;SZMJ{{JkHy zC1mi+eq&|k`@Pm8h=jha+`V`2Yxn2!(MqmIiYGrGu9bVM^mJZT5CAv&brC4NZ8=IpV>u@Bxy6laA{rdG#Yv@XyiUE_-;in%{QyKE7!m%N^I0Xdg zS^T1}betU%Px`{Uh5{5^URl{=$qeGXmYI4TZVN|2CF_Z`UaHOp3V3Z`aIoRD*(kp1 zuc^L~(Y~WctA~f)9Nrt}*8keiZwr9o!>THI6a|^6x)ZTiPR3qQZfaQ|Uv^YXY^S56 zA4VeCE2X#I?2ka;V+qt91D?!UmgQn@}VEO2j&{ zCkB!unBTtLe6R+hV<&`vSfgElWQEX|9-^W$0Kb=v40U&}Lc|R;QtGbU1Mhcx<>cgw zpp^wiL~KQ|&&bFq=;&a#v$H$!a|JppnS6x^xxw?~ZJ1_Vuwxv0{DeD)ht z-Ar0ryOTa$4U;M);E&8%5sP9ZiR13w*!t5+8f zUc@VI&|grseldp?1|j^RIE$CSKtV|>8zf1lGybd_b2S5?6{@}~GAcIls@Q~q65J0} zt|koyYBq_hQm?z4QH_XM=jbSMjcDneU0t`)LU;UZM}YY&G~t|yFGra0aU<=y3!i&H zpU9NzUG#NWjQ3#Uvd)Zl2&;h4SAZfF&VH5~a0)P@fr8V+xW{L1_bTDq%OjE#*+PsZaSswwj3J0V$0 zgCOYeGFc+HMLB_?CA^2{4pdrg&=m3>0Ww5EDFDr-V`N<4sY64gB1BYHV|L+Tq(*FP zEb+`iQ10R)Fj{jievhOi8@hQJ#MO_8K_Zs66*d4vqmjNo2|cKQTau7BMCKEVzFakE zAs-QC1K&}kKDo3oQ-&r=pU^nko z_#R*JmW-6N
o7@7ySZ$g%78-lT9h!1#=(|i((g_=%Yp@cC%QC#q&z(A@_o!X}g zF)|ntB{Wq%-)$Fgr_qC&QD8Y42&}3BUqOUO>T5hVJbV|KSHT?ZHqF%EK@BuPxB9;p z4lm)9ur1u3vjAXPhXqrC1df<9Vi2yaPP1xYawwp{roAJ z){a~@dCt2xkO5NygC72YsL6_bhYQ#Mo~m>6rVm~dMMXjTS!HrTp)VUdBd`J)i!3GH9w}XO$W|@rz zSpq{tH>1X;(D`tl!$=a|+GUVt3OGVa>Sw*xC-7uGqG)eRoy$p{=M}`olKtS6%Z3+V z72tutRF0!#V_UxRM>ETIBVN(-zPWc0A`-(~VI*Eb2i{TK&~R0K8gb5ti3oW;Aiq;m za$5aI>}Afyv0|FzuJfNV;-SQ_+DF4p|Ii>ZkRxlbZ1*9PWScot(B&= zoajB5(#OoqOy=X!Xg?cdW@Z{r@}#7soEMb-iK}RCZZ?e6z)u`_@jN^*@HRRwX_5Hy z)2O0dy}ef+UtUeYxEwpunuqPO(e=vi&m3lnqmcVwYNmS3P(~0x|L|{6tejgLOYjMg-?1F+lLALho*+WGt z4)RC-D4D^tD_bX?PLndPk0m509n%1J5wU==&y0{Eq7`D=yi8TgX2L9fWJnzuln1Eu zosdDmR@RKINQeP$(>r%hIyyVc(5^w&s~gfCSs2JM>aWG3C!OQ|I!REkTMZU^{k_p@ z?D#D^h0Q;sJAO8RF>ly43Xc|i>vBj{L#m;&lzbXQJ*yjs!5H9UZu2Ui7-hjs~TIhPznMOu3LyFdhcK6Mtk?sh{WlMGKo zQT4>C7dAID<9&06#aB)zrKih+q7e}VPqm<}E%!=oLmZR?=pA&-%nu-DortR24fyWz z;i7`VR+vbBkVswwQ6Dg$anzsExq%^x?we2LJn>Q(Z4h>f2WFVbxH`cPMDN6I+P#1O z8fa7{X)UPC5VffBK*~^a$czKhTiYRx9kzAGP!>XDETj)1p@q8T1${vqzLMdPtS{4T zuwoP}T{t;Re7dKY)jhkf;!J3{jIV_wOhWZ95rtwBvx`4Im$m=j2PX>92dEN!<2jjx z#MALiyEL}-D1}7nJ~!fR76ENsPZALqGaT)+7J(eOJ8x!klAiOL)L>mjohKPFz`lW% zM9a$R3&>lHfCqH#6DZuM%U_{#>b5wxSAaVu1(_n+coEOt=n@SbU7Zbbk8Dr_Ts}m8 z4}))pAMHlYigZf6PXnJ=WzLekKdSCv-ZFG=pEfr*q1{7x+0pZJ(uVu+DqhEo^{J-_fi*Mi7K6wJUMLEt> zA?7ari{z~>c@rtaLv?O1rPzD;@AZWH2?+^r&pUB|ay{-tWw6v<{>rWw?!E z@aCRNs{A4HKp9_$rcjMf0#%}hs&`4*B#2UjH6q7A11696KP1@_KF9C^pAK?pYHF%& zVG)2934R!bR&eoff+)W@L!5+wH0`615Y;YsD*X75FYWDYCaKpK#Xr1@PwO}Wl6v^* zLuov*@;guD4qQ3Rz%L+hR6{Nkl=V&H(5uEFB*3)?l<))lYZ2Yac@Vod`3vupr%%`V zozWZM$M5$OQh|h0k}Y#z(c$7pcm{HBlWm#tZGUOrDs8-5s6D{{#q;X@JyCV#nS_KZ z-_z-5re8zFA5!(r0LxS-1uDKq`s2SJK-R4;rRX2Z{kZi1n_mo{>YU|%R;rCDp7j>%xC7+Vcy|Nea{b zh+}?d?zXn7pMQqgm;I`1?>^eSp}e}u5QcO$1HiBxf z1>#9Cwk1@9-#8=p4$XPO==W?m5S?*OLhpnsl~liSv)1=4|6f86*H&kS~X7YwBf)UDeIl03N%7?k%B z?r3*kaeedlEr~;&0u@3!E+9m}=wZvuK>d0ErZZ4~k=Yo>8}YhejNmnAjF_YLxTfj2 z7M|Kkkj0EzXsBa|tB@oW+|y%7vU;K_jL$bfKRCfo)3d$GkJ9Fy`8l1SDa zueQB_49on3{4($^@w8oO%-{EnS_j*yZ!IaUf$qUc;vdPQ6`?@kW$rKdRe8E=e zCV4wTlXsH!g^5kOYnLA?x(jHup^XQGj4`AG$%{ZqvI)X2coX}L)SqQPwLtBGb_fs0 z>%dl1@G$RUVGGee;MA31opl6RN?eJ+0Q>~()Es{ldJL|#6CA1pLwEtej|93Q%Ivv& z1L`H2dLwU|B%2vIP%=)2NZy8^iv4Mma309)8k3~UakrHvd(1k~!Ve%rLQs`Gp;-7d zuBHGy`$CP-1B?RwD#Wb!M~87;vMKN#CBVc0p8L!f5DmlrBe8s#HE8122S#bX)AF| zP#CBjnt~v397YJN09+o&8J4{S5h9>?Q7A-YMjD)o0w{pahvd(?q+IZD!cd5ygQ(v_ z@Q{MCvh{Ec$xgtIt#V5Ibp0q27n?wn@!9|eybnhf)1?$`T*_HR#WDz)b>ONLkI>K- zyqMsN?zNQWmnk9Ybk`x5y1db zNPyWj%cemjo*1++LCHiR0mGC(NV!=Jem_KBVqiU2tRMh{iyf*5aTQKjV(v5x3hBpN zL&~K1!CREZNkFMtDD!uRfb*`w1d^SC`VJ;0Z{!UqCr+L$(i`e<=-EOk0Cy=FQ~Fp| z0dfGk3pNeXm%r947pROY?*k|S1@9A;RyVwP^N4xkmBYjkBT+CE7vhGI=}A77KIgf< zXC;jQZG?MMIih}Jt^t7JjapwRZo%-1}E_qLSGSEd5AGSqUpXh ziOR5Xxq>5uryHxAe*Wy)6VPhTU)_xBGnTkUE>;_=B#aFic-<6nRyh(x#Gumt=`846 z2-_8vmY!*~N73va!sk;_Od3C!{cu}$d4nMyZyP&kIY^@11~>J|J&obB6L@H3N`i=3 zxL(g6JMr4?u>YgCFAc}C{ky$U=A;m1EK!J%S>{qisicT9ljxrzO)67_5JH0?BtwQI zl87XdOl8VU3K>GikiAaNv){e$k2L9^!e~_Z-$$z!uj+ zb_9d0eTb`H4e9~T3DA4DUOm3P0%IMB_i-nxlSu9WuVs$#M9jslr8mA=7*qc6-Gv~HxNLjy zyCeZGkidsTNyu@$MSvwa^5x>@5@=4!Al(PDBQlj$kVxP)NWUw z18#nc6hnM$QH2PKi7^4~WBcX)akgO}zXiai54E-0SQW%LP&3mAR{;^)5~oSXbnH$L zw%*Y4&|>Myw`T!Xo*PUGg}V5Z^{8(0dSX&XY8lJ}6R-?a0+;-`7=;WVqS9!N4P!=l z+1Y(zHf1MgCMU;_vd+%q&3fV7>6Uv;P>8-N_z ztiH!nq=U7V?#1vtiG=@luqi6|TcRatVtd)_8If)@Aasx0t70Rutn~+CB?HlFi3M@9 zLiWRl4+EYpcfIPAp@CHbIynSLk~#o2Y$75lg^`rF*(OlN0p6jx#^86@Qd}YA;s83a zp&Nn>I$#lp9J|roX6OU#CZGc}NSgt(X$*>>*WC;mI|iXws_8hI?4n6Vz^Or|%aDOa z7S;?nQ0K|E7GIUef%m|q11yV4ArJnc0|V1DVJa%<=WRnji=;8C>1m@nsC()C&bsv7 z>uNY>kk|>eNLfR}I-Hy)_#UgHmb%h<|8!kOqYaXVn}is&c!UYws$<24KmS|59Yv8D zE{)#TA+LVO4PRh8q9i~?rfPzQHxP{^Ur(D5g!9~V>dMh+pj%D&GW4jy9?kDsXkR{j zA8EuviXIS-V4(G(0>p}5h^#~8Sg}RBtYiM0QH|o(qd<5Bz%xq1pL}{m_4j9ph3Je% zMn}V9V}qxr+z7O&n|y4aUy5a(oiIH$ewEnbPET~oCSTjzwK9!@;ww2Kn`W-s*xG6) zACaO*cVm19UA}IzrmgK0=*8vH+yP_57bGA%%ox!G^+RHFOJ3^O9{lL}^XEA59V=Aw z(mMc>2y0OiNv5EZaSg!buJo6;{w5%+NOJ8k(|+~rqolRWCdK2VT@RFGRWUE;!Atgk{;zMMsVED`Q!l<>=RtuBO+}>6$+~n~taR`HdeO>T zMD@5#-gqb?VtOI@6XK85qGUdeD_A>snjm+G0S!P0^(2WNQMFbQvpz)ih^bP zFMa>JG9(X01ZLIud&I}a5$ zh#v>3=^&l2$29oLp^kOZP-2uXvcRvKYLQIT9F3E-u^@hfhI38l8GN>eJA0iDC6nI)lcEtBW@1fip&@8Jd zWKsix{O;Eov@*V+qCS8A%;*$~g(t}&%uH2^84u^*KlDind7|L_W|GF>a&g!+9$Fy~ zaioeN|BthsfVzo70ZvA^95_+1P{uKT0eZs%!^)w&18U3jYhe}|40$i5G(pQB5%0_f zBg}J+$1gAL^WX$BssP%fL3uqP)Pu2X!7WRS(c&XD0i*7NDTGRLa_1~Ffues))*(GT zb`W4Up=>_@z7V~Jp8*_!EpU^)@fz3_o$jANw=4>ZaSvW_PtNIqBs?^U(+k=Ek6MOr zBC{~zmb0(YUVnrn* zjO*9pxC{`N9?f{){2NrtpxDaLSrAJUMw3jV4)CD4c;eD)=+=bc)5L(WVvLcvgblog zz%l{EA~~3X5j>!Ryo!~ZTa4aY02T~pb5LH@%y3Iv-$E}cbjlye`9UVM`f1=G-&Hz* zbm73V7qhmp325&syl?=@64u&ywVlwdB%o6x=6*QJ@>ww55|cb=hlUm()(t!dE%A4n zT<5?VMUHg451pNzBUMcY4;}=XxxTvubUVx(Il33Xhu`EpRf?@cMIj0#@QjeoG!(Ohp9C@vKvWYepBVd7N%cvHaH_GA$Gtgz{V;9|Zi> z^wjemV)WER1-|k)lFX-=VZ#nJPIPBn2)yfE{eKA}osL3jk!zw`W-qg0K61yr>uod* z1O@2-@xu~3p4jG^pFMjraRzyK@>ptILLV$g`5@L>*BuX-0ugR6dgJnGGTa5F3#9FF zn%n3He$USOLt}}mY8@9BeV$1$3gK_)fgwP=`_&_%%(1IzBSJ$dHWraL5FLhX@rgrQ zBC5zXgS%v-$ycjNEr-7SP$0ci9gZ(U{OK+d<$H`lnyG#w%v1=RUn$O*BF$m1k9 zz$NZ%c!koQV{2O6W_YIG-XzP2j>qRzb|p4i1LhCOJw@gv9SLPKC9CcuDLNU`KVRLjt4~`VUPMRDd&r)}Mw?b)rZ3&yADV8o;0e2y#sj zHMlyFMvhX74k`>>5BM=^3UW*@6imnzsUKzt-TUH&4C%=UiI1TVPk=ofSNDCvsiP?- zHysZiT8}=^_MOgqqWU4FJR#|HTnwdZtP)9;U(iGxz za6Ny%6t-upz1?Io%L0FQW1Qup#U)^yiFg+>75t#KqLz&+Y@nMDeQusg2m#2SS zbQ(_Wem>?ZT?pC=N^8d#ckvn9|yYi%*yHi&wtZBz=@Qz$M6W`2R1qFsO6p*Iz<)OeXy5_ zO1B_)^0|>|y@(SlwJw+6Dh*F)wl93c8}`^_rj{OUb4qNKJvzM_1>oADf z8uZC#iQiN&jZ={Kv=NHQf#yxuy7;6^HDlAVEwMP9if0`^n`asvQi6OB$p>Ig|YM|a7>*z0?c9~^yo z(m-2V`+n0&qdb^yR0GpoXKa|Zvg7b1IZ*M4GtjOI@x(NAZz+ma zGF>{cM1nan_4395Z$s{QwrY)y^hR{Ds0M-{W5d4M43@|wa|5kULdTWcfy7;Bq~q1^ z)1&Qe$Nie$NKakX_v^~8a^5oEJGt=Hvz;O+$Ma{|^?pw6s%5FQ?>@g#TfL*(O7umI zkKO92drq1)o3)wEEWO9V298}XYW6)Y7<_4nMzHXpd|&AAAH#49^nyMgW^${rfZhVn zat0C(Xp{6Rz*4l4x5i7Bm)4>;pdMddj#k4!77ATn6kKnNAI=XGO&kG;2^>rScocxn z4{?3XI|`gh359VPU-;188pZ?gD&P^`Lf+sE%}I_v00Yn%N#I%VUv!`{7F#D6XA0rZ z%L-X(-vV}rB{>rK`9N~vi4Jfbg|u2IHG5z#tchVh3I*(h^uw!0hGs&q@Y;FvVS zJJmsB?K+1J?VM@;BR!vJ1PSg<%?Z7D@ZE?t8$MqA477M%Smgf?KN5>r(QOQVEp$Ka z7t!*4PFX*MDNVYgMx^syU_9r}R)*AXqK`tJGOSV2zm#+2t6HHy(WVb7CdyL}9}>;^ zL_t6xCA{Z1%a5L4Oy~8>lj}+5{P=@fl5n>w zbT4Sl+q5^b{3;158u@%<{^Csm%FA%qXR^nF8fCV5D4+0r&V1#Tg4Y9baL<1DQV;z7 ztSe8?aVNr}{8h<|6VZ>hN6f4oK}N?syJBps)jtC13dpiquYSq&CBv(IEx@@f7QLsD}%5F};x#uovU#0tP zowMqbCZ&T5?ym?D412#1QX({{XB(o!PuXdPj19G0{69!ut^wEQzCV5jG8xC1^2+0% z&@;w*+f1a@M^$YO&q)uJFY<}r{7P>VEX}T5pPSC`KCAq6%dti0%88v~R=V6mF&`(@ zMTN8_CQI}7hS)ovj#{IpyaAz7@aKg!8r(Z&U!>XP+-Pz5M6a*j7AVWrU8Hy87*1pT z)}FE))ACN5jt-~#*7gla!f6dzZ&jF06W_}gClBYcM6J=1%d+pfc$dqgVy%f^eb2_$ zyoDWQa6)MB$H3TDMQxt;r~qew{k7d~Vp5Wmt3CMoZ>N44;>zhhA(tdor#SpzSAYMi zyu#9}qZdY&9eDn@*&`rlTCi$M1no;NP~~8F`b2QYob08m^5tjWTHJdh%GbiQRP$uZ z^@EZ{#meR#QNxSh@f^%4Ywqzcp~knWk32Ht<}OI1sMD6ng`AjA7W>;}%+X@>x-Vs& zyS?druf#bg(ap{&+(s-eQHl442m>GZxfUCtbp3*yR- zT?QNhM`bS^jw~tWi4`;p`*VQf_SE%1?fuJZh8eWlhFeRl75nn0>z^d8jk)9HJ1FUU zEuYCG{yY#HULTJmITtF}_xw7v`qAD=KWF-2laSn>a$Nkfj82UVC-^x0hC*-hiiaQ9 zfBQkG%3k%lYGT)vcj34w_Kc{^D6dLLCrwOe1S9`yyrc=X$}+(x&(|Gri;7PE?j_U0F3GX8;zuZsh4y7Zt}*qmlGdmm5FNL6Y{_m(Nr@Gbt9_!dGHFiTOp zxVpof&+kE_k-#q#iN36*FV#u%eXSNMd@l?Ws)AfHcE<)4yw0b0w4iyZr6hCCf@b!$ z(kBI{SMvup#HnZcMIUmNS+=9T@LNvRAca;?)K;u^=C@`=j4J)!Y&Yfij*O6Q^J;CkyeRAUE5vos?-mqqs`FzaqN4qrIy~WR*G_2_d`=}vA#$f-SR{`@2Jz%G|6Z?Z zoowRC2wYxP)RGIXu=*RAE%hdE!^xCGZ_{&Qlu(1Ox5?h~>mo1fpm}M+JKD$A++mk$ z=v%A3ti|1Vnk_3Wc(XKEtht@Vm2d1*-1PErkn63Eq9*$RmfZzb>bh@drnPwv$d%>i zi?=oXO*yWUtZvTD5tGZT;9f&NsITzmwEt5U(W$XijRSNvGh@xhQ*t+$>Ne``UHobP zNpbvHw)RyOK5iE4M5AuL@maUM&&AFQUYE@uIg%t-YdIYLeg9{wU`lBf-L-e!RhL71A+o#pVPx{h+EgS8iDOx%l!sQ-Q z%sXDQRY>l1M1t!b-t>2#9IvPMH*gLfZ{W_k=qlIuKw-1P5u2g{eWuKpytMg-J!ScH ztsbMjwju+Q&t^k-HI+p@l@(h(YNtMB>uGF=+jTeKab|Vc);BLTGP7LAFBozcqZ!+g*5c%7u`W4Xrt za?0U_?(~Vai(a|C2PDrO+?8?v?L1*=8-NrA@cyKD*7`D4y_&Oi-C#5#FL1-)d)r@T zW?u%u?)>+2`>!f!l{Q%!bL9xo1$_17rj+^?IKBE{ez<=oT5-@%ysr?7$V`<=2PF5bK!D}iaq&z%6fcw(6{cjSlGpVLD?-oHcyBM z9~5)yKc9c?kK}t&J6L~rC=w{`G7g|i+q;%7GWzb)Z12mG3=_8VgTsae*UjWIzbcCz z{&q8Etyc5pvnp6l0jI9KU8THj=Jf85wK@UOr!M{Jk|u)NEn+P*HiGHJkNs}Pw{5w( zKJ`!drsd1?L)$L=eon&GD~DS3>l>9g88C9ksPOUba+ngFoy%EL)}S>!HvLRTA3d zdAIsIYElq(BA1g%L1fz~s;EjY(^uj1vEaG{_sgB%siR87mcE8l@#Q%l?rf)8mp$~z zaJS+hxU22#@BJ&+tGG!C3eo_@b9Wz!1CsHaU4!+J{Jm!q8eUCwUU$!$^xJL>dw9k( zXD;;jK)9xmPsL$|U?1vpJJTCdIO@ep=_8Mv8eu&FaW2jvCMIr?*A(M!U>ngG5*G~J zi?rmxo}h;opf7OYRJg3=$CT!>HKoc~K4tEeR9zD1$f`znsf3UqhTx)AjhA|RpIPYq zpzeG_?+Gvjc^%e zpW9LweeTFu4fVOdZW?my8)l_Yx=Uls4HEO6^16R*GgF?oUvhbM*Y%+Om))jZ6iVq+ zS^cCY2iaG6f@@v(lyWFOm3xDpLh-n7!PS_bnUOcyRTr0hWjk}H zFYDh=tW6ih&t|5lA34^kwy>5$kvv{&EFzSAS0*IM@^<*+8e74E4z0SyY)Q9WAxWC_ zKNn853?CB_GO;J;4BN!?^l&NdT1CYHVW<0lr|#F$Yf&f^HI5sZbQH>7L1rq7XCefu z6!ix3gGcs2Xeb6UWw-|0H(?5w!XAuKT}t2#OHq~hWOtxAPJ}|y*?VwLmZrJ){{n(H BsRaN4 literal 18600 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 /dev/null + + # Create the local tools directory + mkdir -p "${HOME}/.local" + # Install Dart Sass echo "Installing Dart Sass ${DART_SASS_VERSION}..." curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" - rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" export PATH="${HOME}/.local/dart-sass:${PATH}" # Install Go echo "Installing Go ${GO_VERSION}..." curl -sLJO "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" tar -C "${HOME}/.local" -xf "go${GO_VERSION}.linux-amd64.tar.gz" - rm "go${GO_VERSION}.linux-amd64.tar.gz" export PATH="${HOME}/.local/go/bin:${PATH}" # Install Hugo echo "Installing Hugo ${HUGO_VERSION}..." - curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" - mkdir "${HOME}/.local/hugo" - tar -C "${HOME}/.local/hugo" -xf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" - rm "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" + curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_linux-amd64.tar.gz" + mkdir -p "${HOME}/.local/hugo" + tar -C "${HOME}/.local/hugo" -xf "hugo_${HUGO_VERSION}_linux-amd64.tar.gz" export PATH="${HOME}/.local/hugo:${PATH}" # Install Node.js echo "Installing Node.js ${NODE_VERSION}..." curl -sLJO "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz" tar -C "${HOME}/.local" -xf "node-v${NODE_VERSION}-linux-x64.tar.xz" - rm "node-v${NODE_VERSION}-linux-x64.tar.xz" export PATH="${HOME}/.local/node-v${NODE_VERSION}-linux-x64/bin:${PATH}" + # Return to the project root + popd > /dev/null + # Verify installations echo "Verifying installations..." echo Dart Sass: "$(sass --version)" @@ -104,10 +126,8 @@ Step 2 # Build the site echo "Building the site..." hugo build --gc --minify - } - set -euo pipefail main "$@" ``` @@ -120,12 +140,12 @@ Step 4 ![screen capture](cloudflare-01.png) Step 5 -: On the "Workers" tab, press the **Get started** button to the right of the "Import a repository" item. +: Verify your account if prompted. ![screen capture](cloudflare-02.png) Step 6 -: Connect to GitHub. +: On the "Create a Worker" page, under the "Ship something new" heading, press the **Connect GitHub** button. ![screen capture](cloudflare-03.png) @@ -139,25 +159,18 @@ Step 8 ![screen capture](cloudflare-05.png) - Your browser will be redirected to the Cloudflare dashboard. - Step 9 -: On the "Workers" tab, press the **Get started** button to the right of the "Import a repository" item. - - ![screen capture](cloudflare-02.png) - -Step 10 -: Select the repository to import. +: On the "Create a Worker" page, under the "Select a repository" heading, select the repository to deploy, then press the **Next** button. ![screen capture](cloudflare-06.png) -Step 11 -: On the "Set up your application" screen, provide a project name, leave the build command blank, then press the **Create and deploy** button. +Step 10 +: On the "Create a Worker" page, under the "Set up your application" heading, provide a project name, leave the build command blank, then press the **Deploy** button. ![screen capture](cloudflare-07.png) -Step 12 -: Wait for the site to build and deploy, then visit your site. +Step 11 +: Wait for the site to build and deploy, then press the **Visit** button in the upper left corner of your screen. ![screen capture](cloudflare-08.png) diff --git a/content/en/host-and-deploy/host-on-github-pages/index.md b/content/en/host-and-deploy/host-on-github-pages/index.md index 03b17869c..2b0ac3a86 100644 --- a/content/en/host-and-deploy/host-on-github-pages/index.md +++ b/content/en/host-and-deploy/host-on-github-pages/index.md @@ -77,10 +77,10 @@ Step 4 build: runs-on: ubuntu-latest env: - DART_SASS_VERSION: 1.98.0 - GO_VERSION: 1.26.1 - HUGO_VERSION: 0.158.0 - NODE_VERSION: 24.14.0 + DART_SASS_VERSION: 1.99.0 + GO_VERSION: 1.26.2 + HUGO_VERSION: 0.161.1 + NODE_VERSION: 24.15.0 TZ: Europe/Oslo steps: - name: Checkout @@ -99,7 +99,7 @@ Step 4 node-version: ${{ env.NODE_VERSION }} - name: Setup Pages id: pages - uses: actions/configure-pages@v5 + uses: actions/configure-pages@v6 - name: Create directory for user-specific executable files run: | mkdir -p "${HOME}/.local" @@ -150,7 +150,7 @@ Step 4 path: ${{ runner.temp }}/hugo_cache key: ${{ steps.cache-restore.outputs.cache-primary-key }} - name: Upload artifact - uses: actions/upload-pages-artifact@v3 + uses: actions/upload-pages-artifact@v5 with: path: ./public deploy: @@ -162,7 +162,7 @@ Step 4 steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v5 ``` Step 5 diff --git a/content/en/host-and-deploy/host-on-gitlab-pages.md b/content/en/host-and-deploy/host-on-gitlab-pages.md index 6792b4f8d..0cb722b9c 100644 --- a/content/en/host-and-deploy/host-on-gitlab-pages.md +++ b/content/en/host-and-deploy/host-on-gitlab-pages.md @@ -24,9 +24,9 @@ Define your [CI/CD](g) jobs by creating a `.gitlab-ci.yml` file in the root of y ```yaml {file=".gitlab-ci.yml" copy=true} variables: # Application versions - DART_SASS_VERSION: 1.98.0 - HUGO_VERSION: 0.158.0 - NODE_VERSION: 24.14.0 + DART_SASS_VERSION: 1.99.0 + HUGO_VERSION: 0.161.1 + NODE_VERSION: 24.15.0 # Git GIT_DEPTH: 0 GIT_STRATEGY: clone @@ -35,7 +35,7 @@ variables: TZ: Europe/Oslo image: - name: golang:1.26.1-bookworm + name: golang:1.26.2-bookworm pages: stage: deploy diff --git a/content/en/host-and-deploy/host-on-netlify/index.md b/content/en/host-and-deploy/host-on-netlify/index.md index 34ff0673e..4847212c8 100644 --- a/content/en/host-and-deploy/host-on-netlify/index.md +++ b/content/en/host-and-deploy/host-on-netlify/index.md @@ -30,10 +30,10 @@ Step 1 ```text {file="netlify.toml" copy=true} [build.environment] - DART_SASS_VERSION = "1.98.0" - GO_VERSION = "1.26.1" - HUGO_VERSION = "0.158.0" - NODE_VERSION = "24.14.0" + DART_SASS_VERSION = "1.99.0" + GO_VERSION = "1.26.2" + HUGO_VERSION = "0.161.1" + NODE_VERSION = "24.15.0" TZ = "Europe/Oslo" [build] @@ -48,10 +48,10 @@ Step 1 ```text {file="netlify.toml" copy=true} [build.environment] - DART_SASS_VERSION = "1.98.0" - GO_VERSION = "1.26.1" - HUGO_VERSION = "0.158.0" - NODE_VERSION = "24.14.0" + DART_SASS_VERSION = "1.99.0" + GO_VERSION = "1.26.2" + HUGO_VERSION = "0.161.1" + NODE_VERSION = "24.15.0" TZ = "Europe/Oslo" [build] diff --git a/content/en/host-and-deploy/host-on-render/index.md b/content/en/host-and-deploy/host-on-render/index.md index c0cac9261..3211abd96 100644 --- a/content/en/host-and-deploy/host-on-render/index.md +++ b/content/en/host-and-deploy/host-on-render/index.md @@ -35,13 +35,13 @@ Step 1 staticPublishPath: public envVars: - key: DART_SASS_VERSION - value: 1.98.0 + value: 1.99.0 - key: GO_VERSION - value: 1.26.1 + value: 1.26.2 - key: HUGO_VERSION - value: 0.158.0 + value: 0.161.1 - key: NODE_VERSION - value: 24.14.0 + value: 24.15.0 - key: TZ value: Europe/Oslo ``` @@ -59,34 +59,51 @@ Step 2 # Render automatically installs Node.js dependencies. #------------------------------------------------------------------------------ - main() { + # Exit on error, undefined variables, or pipe failures + set -euo pipefail - # Create directory for user-specific executable files - echo "Creating directory for user-specific executable files..." + build_temp_dir="" + + # Perform cleanup + cleanup() { + if [[ -n "${build_temp_dir:-}" && -d "${build_temp_dir}" ]]; then + rm -rf "${build_temp_dir}" + fi + } + + # Register the cleanup trap + trap cleanup EXIT SIGINT SIGTERM + + main() { + # Create and move into a temporary directory for downloads + build_temp_dir=$(mktemp -d) + pushd "${build_temp_dir}" > /dev/null + + # Create the local tools directory mkdir -p "${HOME}/.local" # Install Dart Sass echo "Installing Dart Sass ${DART_SASS_VERSION}..." curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" - rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" export PATH="${HOME}/.local/dart-sass:${PATH}" # Install Go echo "Installing Go ${GO_VERSION}..." curl -sLJO "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" tar -C "${HOME}/.local" -xf "go${GO_VERSION}.linux-amd64.tar.gz" - rm "go${GO_VERSION}.linux-amd64.tar.gz" export PATH="${HOME}/.local/go/bin:${PATH}" # Install Hugo echo "Installing Hugo ${HUGO_VERSION}..." - curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" + curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_linux-amd64.tar.gz" mkdir -p "${HOME}/.local/hugo" - tar -C "${HOME}/.local/hugo" -xf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" - rm "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" + tar -C "${HOME}/.local/hugo" -xf "hugo_${HUGO_VERSION}_linux-amd64.tar.gz" export PATH="${HOME}/.local/hugo:${PATH}" + # Return to the project root + popd > /dev/null + # Verify installations echo "Verifying installations..." echo Dart Sass: "$(sass --version)" @@ -104,10 +121,8 @@ Step 2 # Build the site echo "Building the site..." hugo build --gc --minify --baseURL "${RENDER_EXTERNAL_URL}" - } - set -euo pipefail main "$@" ``` diff --git a/content/en/host-and-deploy/host-on-sourcehut-pages.md b/content/en/host-and-deploy/host-on-sourcehut-pages.md index 905459636..5d84b30b6 100644 --- a/content/en/host-and-deploy/host-on-sourcehut-pages.md +++ b/content/en/host-and-deploy/host-on-sourcehut-pages.md @@ -84,7 +84,7 @@ environment: site: .srht.site tasks: - package: | - DART_SASS_VERSION=1.98.0 + DART_SASS_VERSION=1.99.0 mkdir -p $HOME/.local curl -L https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64-musl.tar.gz -o dart-sass.tar.gz tar -xzf dart-sass.tar.gz -C $HOME/.local diff --git a/content/en/host-and-deploy/host-on-vercel/index.md b/content/en/host-and-deploy/host-on-vercel/index.md index 8eacaee9f..be04aa4a1 100644 --- a/content/en/host-and-deploy/host-on-vercel/index.md +++ b/content/en/host-and-deploy/host-on-vercel/index.md @@ -45,44 +45,66 @@ Step 2 # The Vercel build image automatically installs Node.js dependencies. #------------------------------------------------------------------------------ + # Exit on error, undefined variables, or pipe failures + set -euo pipefail + + build_temp_dir="" + + # Perform cleanup + cleanup() { + if [[ -n "${build_temp_dir:-}" && -d "${build_temp_dir}" ]]; then + rm -rf "${build_temp_dir}" + fi + } + + # Register the cleanup trap + trap cleanup EXIT SIGINT SIGTERM + main() { + # Define tool versions + DART_SASS_VERSION=1.99.0 + GO_VERSION=1.26.2 + HUGO_VERSION=0.161.1 + NODE_VERSION=24.15.0 - DART_SASS_VERSION=1.98.0 - GO_VERSION=1.26.1 - HUGO_VERSION=0.158.0 - NODE_VERSION=24.14.0 - + # Set the build timezone export TZ=Europe/Oslo + # Create and move into a temporary directory for downloads + build_temp_dir=$(mktemp -d) + pushd "${build_temp_dir}" > /dev/null + + # Create the local tools directory + mkdir -p "${HOME}/.local" + # Install Dart Sass echo "Installing Dart Sass ${DART_SASS_VERSION}..." curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" - rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz" export PATH="${HOME}/.local/dart-sass:${PATH}" # Install Go echo "Installing Go ${GO_VERSION}..." curl -sLJO "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" tar -C "${HOME}/.local" -xf "go${GO_VERSION}.linux-amd64.tar.gz" - rm "go${GO_VERSION}.linux-amd64.tar.gz" export PATH="${HOME}/.local/go/bin:${PATH}" # Install Hugo echo "Installing Hugo ${HUGO_VERSION}..." - curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" - mkdir "${HOME}/.local/hugo" - tar -C "${HOME}/.local/hugo" -xf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" - rm "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" + curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_linux-amd64.tar.gz" + mkdir -p "${HOME}/.local/hugo" + tar -C "${HOME}/.local/hugo" -xf "hugo_${HUGO_VERSION}_linux-amd64.tar.gz" export PATH="${HOME}/.local/hugo:${PATH}" # Install Node.js echo "Installing Node.js ${NODE_VERSION}..." curl -sLJO "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz" tar -C "${HOME}/.local" -xf "node-v${NODE_VERSION}-linux-x64.tar.xz" - rm "node-v${NODE_VERSION}-linux-x64.tar.xz" export PATH="${HOME}/.local/node-v${NODE_VERSION}-linux-x64/bin:${PATH}" + # Return to the project root + popd > /dev/null + # Verify installations echo "Verifying installations..." echo Dart Sass: "$(sass --version)" @@ -98,12 +120,10 @@ Step 2 fi # Build the site - echo "Building the site" + echo "Building the site..." hugo build --gc --minify --baseURL "https://${VERCEL_PROJECT_PRODUCTION_URL}" - } - set -euo pipefail main "$@" ``` diff --git a/content/en/hugo-modules/nodejs-dependencies.md b/content/en/hugo-modules/nodejs-dependencies.md new file mode 100644 index 000000000..6adb18367 --- /dev/null +++ b/content/en/hugo-modules/nodejs-dependencies.md @@ -0,0 +1,52 @@ +--- +title: Node.js dependencies +description: How to manage Node dependencies in Hugo Modules. +date: 2026-03-22 +categories: [] +keywords: [] +weight: 40 +--- + +Hugo Modules that need Node packages (e.g. for Tailwind CSS) can declare those dependencies in a standard `package.json` at the module root. Hugo consolidates dependencies from all modules into an [npm workspace], so you only need a single `npm install` at the project level. + +[npm workspace]: https://docs.npmjs.com/cli/using-npm/workspaces + +## Declaring dependencies + +Each Hugo Module declares its Node dependencies in a `package.json` file in its root directory, using the standard `dependencies` and `devDependencies` fields. + +> [!note] +> We improved this setup greatly in Hugo [v0.159.0](https://github.com/gohugoio/hugo/releases/tag/v0.159.0), but we kept the old `package.hugo.json` in the search path. Mostly to preserve as much backward compatibility as possible, but it may also be useful in some situations to reserve a separate set of Node dependencies for Hugo. + +## Consolidating with `hugo mod npm pack` + +Run [`hugo mod npm pack`] to collect Node dependencies from all modules and write them to `packages/hugoautogen/package.json`. Hugo also adds a `workspaces` entry to your project's root `package.json` pointing to this auto-generated package. + +The resulting project structure: + +```text +project/ +├── package.json # your project's package.json (updated with workspaces entry) +├── packages/ +│ └── hugoautogen/ +│ ├── package.json # auto-generated, contains consolidated module deps +│ └── hugo_packagemeta.json # metadata and checksums for staleness detection +└── ... +``` + +> [!note] +In Hugo < v0.159.0 Hugo wrote the dependencies into your project's package.json, so if you have used `hugo mod npm pack` on your project using older Hugo versions, now is the time to do a spring cleaning of your project `package.json` file: Only direct Node dependencies needs to live in this file, all incoming dependencies from imported Hugo Modules gets written to `packages/hugoautogen/package.json`. + +When merging, the **topmost version, starting from the project, take precedence**. If a module declares `tailwindcss@4.1` but your project already has `tailwindcss@4.0`, the project version wins and the module dependency is excluded from the generated workspace package. + +## Staleness detection + +When Hugo detects that the npm dependency configuration has changed in one or more of the modules in use, you will get a warning in the console: + +```text +WARN npm dependencies are out of sync, please run "hugo mod npm pack" (you may also want to run "npm install" after that) +``` + +This ensures you don't forget to re-run `hugo mod npm pack` after updating module versions. + +[`hugo mod npm pack`]: /commands/hugo_mod_npm_pack diff --git a/content/en/installation/windows.md b/content/en/installation/windows.md index 8563ab7ee..3cc6ee4a8 100644 --- a/content/en/installation/windows.md +++ b/content/en/installation/windows.md @@ -47,7 +47,85 @@ To uninstall the extended edition of Hugo: winget uninstall --name "Hugo (Extended)" ``` -{{% include "/_common/installation/04-build-from-source.md" %}} +## Build from source + +To build Hugo from source you must install: + +1. [Git] +1. [Go] version 1.25.0 or later + +> [!note] +> The Bash-style `KEY=VALUE cmd` syntax used in the macOS and Linux build-from-source instructions does not work in PowerShell or Command Prompt. Use the code block matching your shell. + +### Standard edition + +To build and install the standard edition: + +PowerShell: + +```powershell +$env:CGO_ENABLED=0; go install github.com/gohugoio/hugo@latest +``` + +Command Prompt: + +```bat +set CGO_ENABLED=0 +go install github.com/gohugoio/hugo@latest +``` + +### Deploy edition + +{{< new-in v0.159.2 />}} + +To build and install the deploy edition: + +PowerShell: + +```powershell +$env:CGO_ENABLED=0; go install -tags withdeploy github.com/gohugoio/hugo@latest +``` + +Command Prompt: + +```bat +set CGO_ENABLED=0 +go install -tags withdeploy github.com/gohugoio/hugo@latest +``` + +### Extended edition + +To build and install the extended edition, first install a C compiler such as [GCC] or [Clang] and then run the following command: + +PowerShell: + +```powershell +$env:CGO_ENABLED=1; go install -tags extended github.com/gohugoio/hugo@latest +``` + +Command Prompt: + +```bat +set CGO_ENABLED=1 +go install -tags extended github.com/gohugoio/hugo@latest +``` + +### Extended/deploy edition + +To build and install the extended/deploy edition, first install a C compiler such as [GCC] or [Clang] and then run the following command: + +PowerShell: + +```powershell +$env:CGO_ENABLED=1; go install -tags extended,withdeploy github.com/gohugoio/hugo@latest +``` + +Command Prompt: + +```bat +set CGO_ENABLED=1 +go install -tags extended,withdeploy github.com/gohugoio/hugo@latest +``` > [!note] > See these [detailed instructions](https://discourse.gohugo.io/t/41370) to install GCC on Windows. @@ -66,5 +144,9 @@ Latest version available?|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mar [^2]: Easy if a previous version is still installed. [Chocolatey]: https://chocolatey.org/ +[Clang]: https://clang.llvm.org/ +[GCC]: https://gcc.gnu.org/ +[Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git +[Go]: https://go.dev/doc/install [Scoop]: https://scoop.sh/ [Winget]: https://learn.microsoft.com/en-us/windows/package-manager/ diff --git a/content/en/methods/menu-entry/PageRef.md b/content/en/methods/menu-entry/PageRef.md index 8d4e53656..f75a4f6ec 100644 --- a/content/en/methods/menu-entry/PageRef.md +++ b/content/en/methods/menu-entry/PageRef.md @@ -79,7 +79,7 @@ Hugo render this HTML: ``` -In the above note that the `href` attribute of the second `anchor` element is blank because Hugo was unable to find the "services" page. +In the above note that the `href` attribute of the second `anchor` element is blank because Hugo was unable to find the `services` page. With this template code: diff --git a/content/en/methods/output-format/MediaType.md b/content/en/methods/output-format/MediaType.md index 45f6267a1..9283868bf 100644 --- a/content/en/methods/output-format/MediaType.md +++ b/content/en/methods/output-format/MediaType.md @@ -33,4 +33,4 @@ params: ### Type -(`string`) Returns the the current format's media type. +(`string`) Returns the current format's media type. diff --git a/content/en/methods/page/AllTranslations.md b/content/en/methods/page/AllTranslations.md index e34c8b745..6baeb407f 100644 --- a/content/en/methods/page/AllTranslations.md +++ b/content/en/methods/page/AllTranslations.md @@ -68,7 +68,7 @@ And this template: {{ end }} ``` -Hugo will render this list on the "Book 1" page of each site: +Hugo will render this list on the `book-1` page of each site: ```html
    @@ -78,7 +78,7 @@ Hugo will render this list on the "Book 1" page of each site:
``` -On the "Book 2" page of the English and German sites, Hugo will render this: +On the `book-2` page of the English and German sites, Hugo will render this: ```html