From 7cbc174f4154667de461a390239d334d9bcfc8a4 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Wed, 15 Apr 2026 20:24:02 +0200 Subject: [PATCH 01/30] chore: init 0.3.0 dir --- .../modern-zhaw-thesis/0.3.0/CHANGELOG.md | 20 + .../preview/modern-zhaw-thesis/0.3.0/LICENSE | 17 + .../modern-zhaw-thesis/0.3.0/README.md | 144 ++++ .../preview/modern-zhaw-thesis/0.3.0/lib.typ | 4 + .../modern-zhaw-thesis/0.3.0/showcase.pdf | Bin 0 -> 205468 bytes .../0.3.0/src/assets/zhaw_logo.png | Bin 0 -> 60462 bytes .../0.3.0/src/assets/zhaw_sw_pos.jpg | Bin 0 -> 95873 bytes .../0.3.0/src/pages/abstract.typ | 51 ++ .../0.3.0/src/pages/acknowledgements.typ | 27 + .../0.3.0/src/pages/originality.typ | 45 + .../0.3.0/src/pages/title.typ | 160 ++++ .../0.3.0/src/patches/glossy/lib.typ | 2 + .../0.3.0/src/patches/glossy/src/gloss.typ | 816 ++++++++++++++++++ .../0.3.0/src/patches/glossy/src/schemas.typ | 25 + .../0.3.0/src/patches/glossy/src/themes.typ | 6 + .../patches/glossy/src/themes/academic.typ | 47 + .../src/patches/glossy/src/themes/basic.typ | 68 ++ .../glossy/src/themes/chicago-index.typ | 45 + .../src/patches/glossy/src/themes/compact.typ | 89 ++ .../src/patches/glossy/src/themes/table.typ | 36 + .../src/patches/glossy/src/themes/twocol.typ | 74 ++ .../0.3.0/src/patches/glossy/src/utils.typ | 272 ++++++ .../0.3.0/src/styling/figures.typ | 20 + .../0.3.0/src/styling/glossary.typ | 52 ++ .../0.3.0/src/styling/math-and-code.typ | 16 + .../0.3.0/src/styling/page-border.typ | 19 + .../0.3.0/src/styling/page-header.typ | 51 ++ .../0.3.0/src/styling/table.typ | 31 + .../0.3.0/src/styling/text.typ | 120 +++ .../0.3.0/src/styling/tokens.typ | 21 + .../0.3.0/src/translations.typ | 140 +++ .../modern-zhaw-thesis/0.3.0/src/utils.typ | 115 +++ .../0.3.0/src/zhaw-thesis.typ | 233 +++++ .../0.3.0/template/appendix.typ | 17 + .../0.3.0/template/biblio.bib | 46 + .../0.3.0/template/glossary.typ | 48 ++ .../0.3.0/template/main.typ | 164 ++++ .../modern-zhaw-thesis/0.3.0/thumbnail.png | Bin 0 -> 56361 bytes .../modern-zhaw-thesis/0.3.0/typst.toml | 30 + 39 files changed, 3071 insertions(+) create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/LICENSE create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/README.md create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/lib.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/showcase.pdf create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/assets/zhaw_logo.png create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/assets/zhaw_sw_pos.jpg create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/pages/abstract.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/pages/acknowledgements.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/pages/originality.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/pages/title.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/lib.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/gloss.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/schemas.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/academic.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/basic.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/chicago-index.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/compact.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/table.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/twocol.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/utils.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/styling/figures.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/styling/glossary.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/styling/math-and-code.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/styling/page-border.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/styling/page-header.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/styling/table.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/styling/text.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/styling/tokens.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/template/appendix.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/template/biblio.bib create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/template/glossary.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/template/main.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/thumbnail.png create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/typst.toml diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md b/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md new file mode 100644 index 0000000000..b61a319583 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md @@ -0,0 +1,20 @@ +# Changelog + +## 0.2.0 + +- Added custom quote styling +- Fixed glossary issues when no entries are provided +- Localised outline and appendix headings +- Fixed Glossy init-glossary validation bug +- Fixed empty optional supervisor fields +- Fixed translation strings +- Fixed custom declaration of originality body rendering +- Fixed README typos + +## 0.1.1 + +Improved README + +## 0.1.0 + +Initial release diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/LICENSE b/packages/preview/modern-zhaw-thesis/0.3.0/LICENSE new file mode 100644 index 0000000000..03e8c82773 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/LICENSE @@ -0,0 +1,17 @@ +MIT-0 (MIT No Attribution License) +Copyright (c) 2026 Stanislas Laurent + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/README.md b/packages/preview/modern-zhaw-thesis/0.3.0/README.md new file mode 100644 index 0000000000..28c37cbb9e --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/README.md @@ -0,0 +1,144 @@ +# `modern-zhaw-thesis` template + +`modern-zhaw-thesis` is an unofficial template for ZHAW academic works, adapted from the official branding and following official requirements. It supports both English and German. + +[Here's a showcase](./showcase.pdf) of how it looks like. + +## Setup + +1. Download the font files from the repo's font directory: + + [GitHub](https://github.com/stanlrt/typst-zhaw-thesis/tree/28927077165d31305c4438657eb0cdefa32bbcbd/fonts) + + [Direct download](https://download-directory.github.io/?url=https%3A%2F%2Fgithub.com%2Fstanlrt%2Ftypst-zhaw-thesis%2Ftree%2F28927077165d31305c4438657eb0cdefa32bbcbd%2Ffonts) + +### Web-app (easiest) + +2. [Create a project using the template](https://typst.app/app?template=modern-zhaw-thesis&version=0.2.0) +3. In the left sidebar, under "Files", create a folder called `fonts` +4. Drag and drop the files into this `fonts` directory + +### Local + +2. Install Typst from https://typst.app/open-source/ +3. Make the downloaded fonts accessible to the compiler (https://typst.app/docs/reference/text/text/#parameters-font) +4. Run `typst init @preview/modern-zhaw-thesis:0.2.0` in your project directory + +## All configuration options + +Below is the complete list of configuration options, including default values and explanations. Most are optional. + +```typ +#import "@preview/modern-zhaw-thesis:0.2.0": zhaw-thesis, languages + +// Note: `override` options accept Typst files, e.g. `override: [#include: "my-override.typ"]` +#show: zhaw-thesis.with( + language: languages.de, // Document language + + cover: ( + school: none, // E.g., "School of Engineering" REQUIRED + institute: none, // E.g., "Computer Science" REQUIRED + work-type: none, // E.g., "Bachelor Thesis" REQUIRED + title: none, // Work's title REQUIRED + authors: none, // Author name(s), e.g. ("Max Muster", "Erika Muster") REQUIRED + supervisors: none, // Supervisor name(s), two formats: + // 1. Simple: `("Prof. Dr. John Doe", "Dr. Jane Doe")` + // 2. Categorised: `(main: "Prof. Dr. John Doe", + // secondary: "Dr. Jane Doe", external: "Dr. External")` + industry-partner: none, // Industry partner name, e.g. "Schweizer AG" + study-program: none, // E.g., "Computer Science BSc" + override: none, // Override the cover page with your own file + ), + + abstract: ( + keywords: none, // List of keywords, e.g. `("machine learning")` REQUIRED + en: none, // English abstract text + de: none, // German abstract text. REQUIRED by ZHAW even when lang is English. + override: none, // Override the abstract page with your own file + ), + + acknowledgements: ( + text: none, // Custom acknowledgements text + override: none, // Override the acknowledgements page with your own file + ), + + declaration-of-originality: ( + location: none, // E.g., "Zurich" REQUIRED + text: none, // Custom declaration text + override: none, // Override the declaration page with your own file + ), + + biblio: ( + file: none, // Stream to .bib file e.g. `read("references.bib", encoding: none)` + style: "ieee", // Bibliography style, e.g. "ieee" + ), + + glossary-entries: none, // Variable containing glossary entries (see template) + appendix: none, // Appendix Typst file, e.g. [#include: "appendix.typ"] + page-border: true, // Enable/disable page border + hide-frontmatter: false, // Hide all content before the 1st chapter (to focus on writing) + print-mode: false, // Gives a white background to the cover page to reduce ink usage +) +``` + +## Exported symbols + +The package exports the following symbols for you to use if needed: + +```typ +#import "@preview/modern-zhaw-thesis:0.2.0": ( + zhaw-thesis, // Main template function, see docu above + callout, // Coloured callout box to highlight important text + + centered, // Vertically centred layout + today, // Current date in local format + languages, // Available languages + push-lang, // Set new language (see docu below) + pop-lang, // Switch back to previous language (see docu below) +) +``` + +You can refer to the [demo document](./template/main.typ) for usage examples. + +## Configuration of dependencies + +### Glossary + +The template uses the [Glossy package](https://typst.app/universe/package/glossy/) to power the glossary feature under the hood. +You can find instructions about how to use all its options directly on the [package page](https://typst.app/universe/package/glossy/). + +### Code blocks + +The template uses the [Codly package](https://typst.app/universe/package/codly/) to style code snippets. +You can find instructions about how to use all its options in [its PDF manual](https://raw.githubusercontent.com/Dherse/codly/main/docs.pdf). + +### Multi-linguism + +Should you need use different languages for different pages of your work, you can refer to [Tieflang's documentation](https://typst.app/universe/package/tieflang/). + +## Feature requests & problems + +Feel free to request features or report problems [here](https://github.com/stanlrt/typst-zhaw-thesis/issues) + +## License and Trademark Notice + +### Software License + +The Typst code and template structure in this package are licensed under the **MIT-0 License** (MIT No Attribution). See the [LICENSE](LICENSE) file for details. + +### ZHAW Logo and Trademark + +**Important:** The ZHAW logo and trademark included in this package are **NOT** covered by the MIT-0 license. + +- **Trademark Owner:** The ZHAW logo and brand are the exclusive property of Zürcher Hochschule für Angewandte Wissenschaften (ZHAW). +- **Rights:** Users of this package do **not** receive any rights to sublicense, sell, or redistribute the ZHAW logo under the MIT-0 license terms. +- **Usage:** The logo is included for the specific purpose of creating ZHAW-compliant academic documents. Any other use requires permission from ZHAW. + +As specified in section 2.b.2 of Creative Commons and similar public licenses: **"The trademark ZHAW is not affected by the license. Patent and trademark rights are not licensed under this Public License."** + +For information about ZHAW's branding guidelines, refer to the official [ZHAW trademark guidelines for open educational resources](https://gpmpublic.zhaw.ch/GPMDocProdDPublic/Vorgabedokumente_ZHAW/Z_MB_Merkblatt_CC_Lizenzen_von_OER.pdf). + +### Unofficial Template Notice + +This is an **unofficial** template created by a student. It is not endorsed, maintained, or supported by ZHAW. The template attempts to follow official ZHAW branding guidelines and academic requirements, but users should verify compliance with current university standards. + diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/lib.typ b/packages/preview/modern-zhaw-thesis/0.3.0/lib.typ new file mode 100644 index 0000000000..f479956484 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/lib.typ @@ -0,0 +1,4 @@ +#import "src/zhaw-thesis.typ": callout, zhaw-thesis +#import "src/styling/tokens.typ": tokens +#import "src/utils.typ": centered, today +#import "src/translations.typ": languages, pop-lang, push-lang diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/showcase.pdf b/packages/preview/modern-zhaw-thesis/0.3.0/showcase.pdf new file mode 100644 index 0000000000000000000000000000000000000000..39e5e110c31c451bf6b444770d13c3a9a8120150 GIT binary patch literal 205468 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®lGl!|jUo8D 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 Qwj#YO2?}5{qw+*WSmtntZ@j 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 z

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 Rw)bMfzs=jfi~7G0{2vl8I{yFw literal 0 HcmV?d00001 diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/abstract.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/abstract.typ new file mode 100644 index 0000000000..a40dec1d63 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/abstract.typ @@ -0,0 +1,51 @@ +#import "../styling/tokens.typ": tokens +#import "../utils.typ": centered, ensure-array, today +#import "@preview/tieflang:0.1.0": pop-lang, push-lang, tr + +#let render-abstract(lang-code, abstract-text, keywords, authors, title) = context { + push-lang(lang-code) + + show: doc => centered(tr().abstract, doc) + show grid.cell.where(x: 0): set text(weight: "bold") + + let authors = ensure-array(authors) + let keywords = ensure-array(keywords) + + grid( + columns: (2cm, 1fr), + column-gutter: 0.4cm, + row-gutter: 0.3cm, + tr().title, title, + (tr().author)(authors.len()), authors.join(", "), + tr().date, today(), + tr().institution, tr().institution_name, + ) + + v(0.5cm) + abstract-text + v(0.5cm) + + grid( + columns: (auto, 1fr), + column-gutter: 0.4cm, + row-gutter: 0.3cm, + tr().keywords, keywords.join(", "), + ) + + pop-lang() +} + +#let abstract-page( + en: none, + de: none, + keywords: none, + authors: none, + title: none, +) = { + if en != none { + render-abstract("en", en, keywords, authors, title) + } + if de != none { + render-abstract("de", de, keywords, authors, title) + } +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/acknowledgements.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/acknowledgements.typ new file mode 100644 index 0000000000..78a43cc9e9 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/acknowledgements.typ @@ -0,0 +1,27 @@ +#import "../styling/tokens.typ": tokens +#import "../utils.typ": centered, ensure-array +#import "@preview/tieflang:0.1.0": tr + +#let acknowledgements-page( + acknowledgements: none, + supervisors: none, + co-supervisors: none, + authors: none, +) = { + let authors = ensure-array(authors) + let supervisors = ensure-array(supervisors) + let co-supervisors = ensure-array(co-supervisors) + + let count = supervisors.len() + co-supervisors.len() + let thanked = (supervisors + co-supervisors).join(", ", last: " " + tr().and + " ") + show: doc => centered(tr().acknowledgements.title, doc) + + if acknowledgements != none [ + + #acknowledgements + ] else [ + #let plural = authors.len() > 1 + + #(tr().acknowledgements.text)(plural, count, thanked) + ] +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/originality.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/originality.typ new file mode 100644 index 0000000000..7b10a118dc --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/originality.typ @@ -0,0 +1,45 @@ +#import "../styling/tokens.typ": tokens +#import "../utils.typ": centered, today +#import "@preview/tieflang:0.1.0": tr +#import "../utils.typ": ensure-array + +#let declaration-of-originality-page( + declaration_of_originality: none, + location: none, + authors: none, +) = { + show: doc => centered(tr().declaration_of_originality.title, doc) + + let authors = ensure-array(authors) + + if (declaration_of_originality != none) [ + + #declaration_of_originality + ] else [ + #let plural = authors.len() > 1 + + #(tr().declaration_of_originality.text)(plural) + ] + + v(1cm) + + align(left)[ + *#location, #today()* + ] + + v(0.5cm) + + grid( + columns: (auto, 4cm), + column-gutter: 0.4cm, + row-gutter: 1.2cm, + ..for author in authors { + ( + author + ":", + align(bottom, pad(bottom: -0.2cm, box( + line(length: 5cm, stroke: 0.8pt), + ))), + ) + } + ) +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/title.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/title.typ new file mode 100644 index 0000000000..39ac134d22 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/title.typ @@ -0,0 +1,160 @@ +#import "../utils.typ": * +#import "../styling/tokens.typ": tokens +#import "@preview/tieflang:0.1.0": tr +#import "@preview/biceps:0.0.1": flexwrap + +#let title-page( + school: none, + institute-short: none, + institute: none, + work_type: none, + title: none, + authors: none, + supervisors: none, + co-supervisors: none, + industry-partner: none, + print-mode: false, +) = { + set page(fill: if (not print-mode) { tokens.colour.main } else { none }, margin: 1cm, background: none) + set par(leading: 0.8em) + set text( + fill: if (not print-mode) { white } else { tokens.colour.main }, + weight: "bold", + font: tokens.font-families.headers, + ) + + let authors = ensure-array(authors) + + // Handle two formats for supervisors: + // 1. String or array of strings: supervisors: ("Name 1", "Name 2") + // 2. Dictionary: supervisors: (main: "Name", secondary: "Name", external: "Name") + let supervisors-dict = none + let supervisors-list = none + + if supervisors != none and type(supervisors) == dictionary { + supervisors-dict = supervisors + } else { + supervisors-list = ensure-array(supervisors) + } + + let co-supervisors = ensure-array(co-supervisors) + + let logo = ( + image(if (print-mode) { "../assets/zhaw_sw_pos.jpg" } else { "../assets/zhaw_logo.png" }), + pad(right: 30%, top: 18pt, text( + size: 18pt, + tr().school_of + " " + school + linebreak() + institute, + )), + ) + + let optical_alignment = 8pt + + let title = align(horizon, block(inset: (left: optical_alignment))[ + #pad(bottom: -1.2em, upper(text(size: 16pt, weight: "regular", font: tokens.font-families.body, work_type))) + #linebreak() + #par(leading: 2em, justify: false, first-line-indent: 0pt, text(size: 32pt, title)) + ]) + + let info() = { + set par(justify: false) + set text(size: 10pt) + + let info-items = ( + block[ + #(tr().author)(authors.len()):\ + #text(font: tokens.font-families.body, weight: "regular", authors.join(linebreak())) + ], + ) + + // Handle simple supervisors format + if supervisors-list != none and supervisors-list.len() > 0 { + info-items.push( + align(start + top)[ + #(tr().supervisor)(supervisors-list.len()):\ + #text(font: tokens.font-families.body, weight: "regular", supervisors-list.join(linebreak())) \ + ], + ) + } + + // Handle dictionary supervisors format + if supervisors-dict != none { + if "main" in supervisors-dict and supervisors-dict.main != none { + let main-list = ensure-array(supervisors-dict.main) + info-items.push( + align(start + top)[ + #(tr().main_supervisor)(main-list.len()):\ + #text(font: tokens.font-families.body, weight: "regular", main-list.join(linebreak())) \ + ], + ) + } + + if "secondary" in supervisors-dict and supervisors-dict.secondary != none { + let secondary-list = ensure-array(supervisors-dict.secondary) + info-items.push( + align(start + top)[ + #(tr().secondary_supervisor)(secondary-list.len()):\ + #text(font: tokens.font-families.body, weight: "regular", secondary-list.join(linebreak())) \ + ], + ) + } + + if "external" in supervisors-dict and supervisors-dict.external != none { + let external-list = ensure-array(supervisors-dict.external) + info-items.push( + align(start + top)[ + #(tr().external_supervisor)(external-list.len()):\ + #text(font: tokens.font-families.body, weight: "regular", external-list.join(linebreak())) \ + ], + ) + } + } + + if co-supervisors.len() > 0 { + info-items.push( + align(start + top)[ + #(tr().co_supervisor)(co-supervisors.len()):\ + #text(font: tokens.font-families.body, weight: "regular", co-supervisors.join(linebreak())) \ + ], + ) + } + + if industry-partner != none { + info-items.push( + align(start + top)[ + #tr().industry_partner:\ + #text(font: tokens.font-families.body, weight: "regular", industry-partner) \ + ], + ) + } + + info-items.push( + align(start + top)[ + #tr().submitted_on:\ + #text(font: tokens.font-families.body, weight: "regular", today()) + ], + ) + + let min-gutter = 1.5cm + + block(inset: (left: optical_alignment))[ + #flexwrap( + main-dir: ltr, + cross-dir: ttb, + main-spacing: min-gutter, + cross-spacing: 1cm, + ..info-items.map(item => block(width: auto, breakable: false, item)), + ) + ] + } + + grid( + columns: (3cm, 1fr), + rows: (3cm, 1fr, auto), + gutter: 0.5cm, + ..logo, + "", + title, + "", + info(), + ) +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/lib.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/lib.typ new file mode 100644 index 0000000000..c0f59b947e --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/lib.typ @@ -0,0 +1,2 @@ +#import "src/gloss.typ": glossary, init-glossary +#import "src/themes.typ": * diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/gloss.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/gloss.typ new file mode 100644 index 0000000000..7b6c47f7a5 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/gloss.typ @@ -0,0 +1,816 @@ +#import "@preview/valkyrie:0.2.2" as z + +#import "./schemas.typ": * +#import "./themes.typ": * +#import "./utils.typ": * + +#let __gloss_entries = state("__gloss_entries", (:)) + +#let __gloss_label_prefix = "__gloss:" +#let __gloss_first_use_counter_postfix = ":first-use-count" +#let __gloss_entry_postfix = ":entry" + +// Normalizes a dictionary entry by ensuring all required and optional keys exist +// with appropriate default values. +// +// Parameters: +// key: The key from the input dictionary +// entry (dictionary): Input dictionary containing at least 'short' and optionally +// 'long', 'plural', 'longplural', 'description', and 'group' +// +// entry (string): If you pass a string to entry, we assume you're using the +// abbreviated syntax `short: "long"`, where the `key` is used +// for `short` and `entry` is used for `long`. +// +// Returns: +// dictionary: Normalized dictionary with all expected keys populated +// +// Panics: +// - If 'short' key is missing when using normal (non-abbreviated) syntax +// - If 'short' value is not a string +// - If 'short' value is an empty string +// +#let __normalize_entry(key, entry) = { + // If it's a string, it's using the abbreviated syntax `short: "long"`. + if (type(entry) == str) { + entry = (short: key, long: entry) + } + + // Validate required fields + if not "short" in entry { + panic("Entry must contain a 'short' key") + } + if type(entry.short) != str { + panic("Entry 'short' must be a string") + } + if entry.short.trim() == "" { + panic("Entry 'short' cannot be empty") + } + + // Extract values with defaults, using consistent none for missing optionals + let long = entry.at("long", default: none) + + // Return the normalized entry + ( + short: entry.short, + plural: entry.at("plural", default: __pluralize(entry.short)), + article: entry.at("article", default: __determine_article(entry.short)), + long: long, + longplural: entry.at("longplural", default: __pluralize(long)), + longarticle: entry.at("longarticle", default: __determine_article(long)), + description: entry.at("description", default: none), + group: entry.at("group", default: ""), + ) +} + +// Checks if a key exists in the glossary state. +// +// Parameters: +// key (string): The key to look up in the glossary entries +// +// Returns: +// boolean: True if the key exists in the glossary, false otherwise +// +#let __has_entry(key) = { + key in __gloss_entries.final().keys() +} + +// Updates the glossary state by adding or updating an entry. +// +// Parameters: +// key (string): The key under which to store the entry +// entry (dictionary): The normalized glossary entry to store +// +// Returns: +// none: Updates state as a side effect +// +#let __add_entry(key, entry) = { + __gloss_entries.update(state => { + state.insert(key, entry) + state + }) +} + +// Retrieves a glossary entry from the state. +// +// Parameters: +// key (string): The key of the entry to retrieve +// +// Returns: +// dictionary: The glossary entry associated with the key +// +// Panics: +// - If the key does not exist in the glossary +// +#let __get_entry(key) = { + let entries = __gloss_entries.final() + if key not in entries.keys() { + panic("Glossary error: Missing key '" + key + "'") + } + + entries.at(key) +} + +// Creates a label object for term usage in documents. +// +// Parameters: +// key (string): The glossary entry key +// +// Returns: +// label: A Typst label object for the term usage +// +#let __term_label(key) = { + label(__gloss_label_prefix + key) +} + +// Creates a label object for the entry in the glossary. +// +// Parameters: +// key (string): The glossary entry key +// +// Returns: +// label: A Typst label object for the term usage +// +#let __entry_label(key) = { + label(__gloss_label_prefix + key + __gloss_entry_postfix) +} + +// Updates the term usage (first use counter & wants to be referenced counter) +// in the glossary state. +// +// Parameters: +// key (string): The glossary entry key +// +// Returns: +// none: Updates state as a side effect +// +#let __mark_term_used(key, count-as-referenced, count-as-first-use) = { + if count-as-referenced { + counter(__gloss_label_prefix + key).step() + } + if count-as-first-use { + counter( + __gloss_label_prefix + key + __gloss_first_use_counter_postfix, + ).step() + } +} + +// Queries whether the term wants to be referenced from ANYWHERE +// +// Parameters: +// key (string): The glossary entry key +// location (location): The location in the document. Use none for end of document +// +// Returns: +// boolean: If the entry is used above the location in the document +// +#let __is_term_ever_referenced(key, location: none) = { + let c = counter(__gloss_label_prefix + key) + c = if location == none { c.final() } else { c.at(location) } + c.at(0) > 0 +} + +// Queries whether the term has been "first used" +// +// "First used" is used to determine how to display the term, either "long +// (short)" or just "(short)" +// +// Parameters: +// key (string): The glossary entry key +// location (location): The location in the document. Use none for end of document +// +// Returns: +// boolean: If the entry is used above the location in the document +// +#let __is_term_first_used(key, location: none) = { + let c = counter( + __gloss_label_prefix + key + __gloss_first_use_counter_postfix, + ) + c = if location == none { c.final() } else { c.at(location) } + c.at(0) > 0 +} + +// Reset the first use counter to 0 +// +// Parameters: +// key (string): The glossary entry key +// +// Returns: +// none: Updates state as a side effect +// +#let __reset_term_first_used(key, location: none) = { + counter( + __gloss_label_prefix + key + __gloss_first_use_counter_postfix, + ).update(0) +} + +// Determine if the glossary contains a visible entry +// +// Parameters: +// key (string): The glossary entry key +// +// Returns: +// boolean: If the term is visible in the glossary (and the label is unique) +// +#let __has_glossary_entry(key) = { + query(__entry_label(key)).len() > 0 +} + +// Renders a glossary term with various formatting options. +// +// Parameters: +// key (string): The glossary entry key to render. +// modifiers (array): Array of modifier strings that control term rendering: +// - "cap": Capitalize the first letter of the term. +// - "pl": Use plural form of the term. +// - "both": Show "Long form (short form)". +// - "short": Show only the short form. +// - "long": Show only the long form. +// - "def" or "desc": Show the term's description instead of its name. +// - "a" or "an": Prepend an article, chosen from the entry (short or long form). +// show-term (function): A function that renders the chosen term. +// term-links (boolean): If terms should be clickable links leading to glossary +// +// Behavior: +// - Without modifiers, the first use of a term shows "Long form (short form)", +// subsequent uses show only the short form. +// - Explicit modifiers ("long", "short", "both") override the default behavior. +// - If a requested long form doesn't exist, the logic falls back to the short form. +// - A usage counter tracks how many times a term has been referenced. +// +// Returns: +// content: The fully formatted term, including optional article, capitalization, +// usage tracking metadata, and the chosen form (short, long, or both). +// +#let __gls( + key, + modes-modifiers: array, + format-term: function, + show-term: function, + term-links: true, + display-text: none, +) = { + let possible_modes = ( + "auto", + "both", + "short", + "long", + "supplement", + "description", + "reset", + ) + // --------------------------------------------------------------------------- + // Normalize mode & modifier inputs AND check if the modifiers are valid + // --------------------------------------------------------------------------- + let modes-modifiers = modes-modifiers.map(it => { + if it == "def" or it == "desc" { + return "description" + } else if it == "a" or it == "an" { + return "an" + } else if it == "use" or it == "spend" { + return "use" + } else if it == "nouse" or it == "nospend" { + return "no-use" + } else if it == "noref" or it == "noindex" { + return "noindex" + } else if it in ("both", "short", "long", "reset", "cap", "pl") { + return it + } else if it in ("auto", "description", "supplement") { + panic( + it, + "is a valid mode, but is not used by applying a modifier with this name. Read the documentation.", + ) + } else { + panic(it, "is not a recognized mode or modifier.") + } + }) + if display-text != none and display-text != auto { + // A supplement is provided, thus the mode is "supplement" + modes-modifiers.push("supplement") + } + + // --------------------------------------------------------------------------- + // Determine the requested modes (plural) and the modifier array + // --------------------------------------------------------------------------- + modes-modifiers.push("__MIDDLE_ITEM") // unused modifier + let (requested_modes, modifiers) = modes-modifiers + .sorted(key: it => { + if it in possible_modes { + // It is a 'mode' + return -1 + } else if it == "__MIDDLE_ITEM" { + return 0 + } else { + // It is a 'modifier' + return 1 + } + }) + .split("__MIDDLE_ITEM") + + // --------------------------------------------------------------------------- + // Check for illegal mode and/or modifier combinations + // --------------------------------------------------------------------------- + if requested_modes.len() > 1 { + panic("Cannot mix modes ", requested_modes, ", pick one.") + } + if "description" in requested_modes and modifiers.len() > 0 { + panic("Cannot use mode 'def'/'desc' with other modifiers.") + } + if "reset" in requested_modes and modifiers.len() > 0 { + panic("Cannot use mode 'reset' with other modifiers.") + } + if "an" in modifiers and "pl" in modifiers { + panic("Cannot use 'a'/'an' and 'pl' together.") + } + if "use" in modifiers and "no-use" in modifiers { + panic("Cannot use 'use'/'spend' and 'nouse'/'nospend' together.") + } + + // --------------------------------------------------------------------------- + // Retrieve the glossary entry and its label + // --------------------------------------------------------------------------- + let entry = __get_entry(key) + + // --------------------------------------------------------------------------- + // Determine the requested mode (singular) + // --------------------------------------------------------------------------- + let requested_mode = if requested_modes.len() == 0 { + "auto" + } else { + requested_modes.at(0) + } + + // --------------------------------------------------------------------------- + // If mode is "description", show the entry's description immediately + // --------------------------------------------------------------------------- + if requested_mode == "description" { + if entry.description == none { + panic("Use of 'def'/'desc' requires a description be defined.") + } + return show-term([#entry.description]) + } + // --------------------------------------------------------------------------- + // If mode is "reset", reset the (first) usage counter and return immediately + // --------------------------------------------------------------------------- + if requested_mode == "reset" { + __reset_term_first_used(key) + return + } + + // --------------------------------------------------------------------------- + // Manage term usage counting and determine if it's the first reference + // --------------------------------------------------------------------------- + let is_first_use = not __is_term_first_used(key, location: here()) + let default-count-as-first-use = ( + requested_mode == "auto" or requested_mode == "both" + ) + let force-count-as-first-use = "use" in modifiers + let force-skip-as-first-use = "no-use" in modifiers + let wants_reference = "noindex" not in modifiers + __mark_term_used( + key, + wants_reference, + force-count-as-first-use or (not force-skip-as-first-use and default-count-as-first-use), + ) + + // --------------------------------------------------------------------------- + // Helper Functions + // --------------------------------------------------------------------------- + + // pluralize_term(singular, plural): Returns plural form if "pl" modifier is present and available; + // otherwise returns the singular form. + let pluralize_term = (singular, plural) => { + if "pl" in modifiers and plural != none { + plural + } else { + singular + } + } + + // capitalize_term(article, term): If "cap" is in modifiers, capitalizes the first letter + // of whichever text appears first (the article if present, otherwise the term). + // Returns a tuple (article, term) which may be modified to have uppercase first letters. + let capitalize_term = (article, term) => { + if "cap" not in modifiers { + (article, term) + } else if article == none { + // No article present, so capitalize the term's first letter. + (article, upper(term.first()) + term.slice(1)) + } else { + // Article is present; capitalize its first letter instead. + (upper(article.first()) + article.slice(1), term) + } + } + + // get_article(mode): Returns the appropriate article string based on the mode. + // - If wants_article is false, returns none + // - If mode is "short", return the short article. + // - If mode is "long" or "both", return the long article. + // The calling logic ensures that when mode = "long" or "both", a long form exists. + let get_article = mode => { + let wants_article = "an" in modifiers + if not wants_article { + none + } else if mode == "short" { + entry.article + " " + } else { + // mode == "long" or "both" + entry.longarticle + " " + } + } + + // --------------------------------------------------------------------------- + // Determine desired options based on modifiers and entry.long availability + // --------------------------------------------------------------------------- + // Decide which mode ("short", "long", or "both" or "supplement") to use. + // If the requested mode can't be fulfilled due to no long form, fall back to "short". + // If no explicit mode is given (i.e. we are in 'auto' mode), the default behavior is: + // - On first use and if a long form exists, "both". + // - Otherwise, "short". + if requested_mode == "auto" { + // Set requested_mode to automatically determined mode + requested_mode = if is_first_use { + "both" + } else { + "short" + } + } + + let long_available = entry.long != none + let mode = if ( + (requested_mode == "both" or requested_mode == "long") and not long_available + ) { + // The fall back case, because long form is not available, but it is requested + "short" + } else { + // No fall back needed, the requested mode can be fulfilled + requested_mode + } + + // Pluralize (if requested) + let short-form = pluralize_term(entry.short, entry.plural) + let long-form = pluralize_term(entry.long, entry.longplural) // `none` safe here + + // Apply format-term() to get the term + let formatted-term = if mode == "supplement" { + // Display text was overriden by user, just accept it (string or content) + display-text + } else { + // Normal display (ie no override from user) + format-term(mode, short-form, long-form) + } + if "cap" in modifiers and type(formatted-term) != str { + // This is because we still need to capitalize the term, and we cannot do + // that with content, thus requiring a string here. + // TODO: consider if we want to capitalize *before* this. First intuition is + // "no". + panic("Your custom format-term() function must return a string.") + } + + // Get the article, then capitalize either the article or term (if requested) + let (article, term) = capitalize_term(get_article(mode), formatted-term) + + // --------------------------------------------------------------------------- + // Construct and return the final output + // --------------------------------------------------------------------------- + context { + let linked-term = if term-links and __has_glossary_entry(key) { + link(__entry_label(key), term) + } else { + term + } + // Figure out our label (unless not wanted) + let term-label = if wants_reference { + __term_label(key) + } else { + [] + } + + // Create the output content + [#article#show-term(linked-term)#metadata(term)#term-label] + // |^^^^^|^^^^^^^^^ |^^^^^^^^ |^^^^^^^^^^ + // | | | \_ the label for backlink from + // | | | glossary i.e. <__gloss:key>, etc. + // | | \_ metadata lets us label (ie makes it "labelable") + // | \_ apply user formatting function to the term + // \_art. + } +} + +// Creates page number links back to each usage of a glossary term. +// +// This function generates an array of page numbers, where each number links +// back to a usage of the term in the document. Duplicate page numers are +// removed to avoid redundancy. +// +// Parameters: +// key (string): The glossary entry key +// +// Returns: +// array: Linked page numbers +// +// Example output after a typical .join(", "): +// "1, 3, 5" where each number links to the term usage on that page +// +#let __create_backlinks(key) = { + return query(__term_label(key)) // find all reference + .map(meta => { + // extract location and page number (or symbol) + let loc = meta.location() + let page = numbering( + __default(loc.page-numbering(), "1"), + ..counter(page).at(loc), + ) + (loc, page) + }) + .dedup(key: ((loc, page)) => page) // deduplicate by page + .map(((loc, page)) => link(loc, page)) // create links +} + +// Formats a term string based on the specified mode. +// +// Given mode, long-form, and short-form, this function returns the formatted +// term based on the mode. When mode is ... +// +// - "short" -> returns "short-form" +// - "long" -> returns "long-form" +// - "both" -> returns "short-form (long-form)" +// +// Parameters: +// mode (string): The mode in which to format the term. Possible values are "short", "long", or "both". +// short-form (string): The short form of the term. +// long-form (string): The long form of the term. +// +// Returns: +// string: The formatted term based on the specified mode. +// +#let __default-format-term(mode, short-form, long-form) = { + if mode == "short" { + short-form + } else if mode == "long" { + long-form + } else { + // mode assumed to be "both" + long-form + " (" + short-form + ")" + } +} + +// Styles a term to control its display in a document. +// +// Parameters: +// term-body (content'ish): the unstyled output from __gls() +// +// Returns: +// content: display ready content (assumed based on `term-body`) +// +#let __default-show-term(term-body) = { + // Default: just render it like normal text + term-body +} + +// Initializes the glossary system and sets up term reference handling. +// +// This function is typically used with `#show: init-glossary`. It performs +// three main tasks: +// 1. Validates and loads glossary entries into the state +// 2. Sets up reference handling to intercept and format term usage +// 3. Applies custom term formatting if provided +// +// Parameters: +// entries (dictionary): Dictionary of glossary entries where: +// - keys are term identifiers +// - values are entry dictionaries containing term details +// show-term ((content) => content): Optional function to customize term rendering +// Default: Returns term content unchanged +// term-links (boolean): If terms should be clickable links leading to glossary +// body (content): Document content to process +// +// Returns: +// content: Processed document content with glossary functionality enabled +// +// Panics: +// - If entries parameter is not a dictionary +// +#let init-glossary( + entries, + format-term: __default-format-term, + show-term: __default-show-term, + term-links: false, + body, +) = context { + // Type checking + let checked-entries = (:) + for (key, entry) in entries { + let checked-key = z.parse(key, z.string(), scope: ("dictionary key",)) + let checked-entry = z.parse(entry, dict-schema, scope: ( + "dictionary entry", + )) + checked-entries.insert(checked-key, checked-entry) + } + let checked-format-term = z.parse(format-term, z.function(), scope: ( + "format-term", + )) + let checked-show-term = z.parse(show-term, z.function(), scope: ( + "show-term", + )) + let checked-body = z.parse(body, z.content(), scope: ("body",)) + + // Process and store each glossary entry + for (key, entry) in entries { + __add_entry(key, __normalize_entry(key, entry)) + // Create placeholder labels for autocompletion + [#metadata(key)#label(key)] + } + + // Set up reference handling for glossary terms + show ref: r => { + let (raw_key, ..raw_modifiers) = str(r.target).split(":") + let supplement = r.supplement // used for term display overrides + + // Determine if we need to swap the key and first modifier. + // Conditions for swapping: + // - The original key is "a" or "an" (case-insensitive), + // - That "key" does not correspond to an actual entry, + // - There is at least one modifier, + // - The first modifier corresponds to an existing entry key. + let can_swap = ( + (lower(raw_key) == "a" or lower(raw_key) == "an") + and not __has_entry(raw_key) + and raw_modifiers.len() > 0 + and __has_entry(raw_modifiers.first()) + ) + + // If we can swap, use the first modifier as the key and insert "a" as the first modifier. + let (key, modifiers) = if can_swap { + (raw_modifiers.first(), ("a",) + raw_modifiers.slice(1)) + } else { + (raw_key, raw_modifiers) + } + + // Now see if this is an actual glossary term key + if __has_entry(key) { + // Found in dictionary, render via __gls() + __gls( + key, + modes-modifiers: modifiers.map(lower), + format-term: checked-format-term, + show-term: checked-show-term, + term-links: term-links, + display-text: supplement, + ) + } else { + // Not one of ours, so just pass it through + r + } + } + + body +} + +// Renders a complete glossary with customizable formatting and grouping. +// +// The glossary displays all used terms, optionally grouped by category, with page +// references back to term usage. The appearance is controlled by a theme that +// defines how sections, groups, and entries are formatted. +// +// Parameters: +// title (string): Glossary section title (default: "Glossary") +// theme (dictionary): Controls glossary appearance with three functions: +// - section(title, body): Renders the main glossary section +// - title: The glossary title +// - body: Content containing all groups and entries +// - group(name, index, total, body): Renders a group of related terms +// - name: Group name +// - index: Zero-based group index +// - total: Total number of groups +// - body: Content containing the group's entries +// - entry(entry, index, total): Renders a single glossary entry +// - entry: Dictionary containing: +// - short: Short form of term +// - long: Long form of term (optional) +// - description: Term description (optional) +// - label: Term's dictionary label +// - pages: Array of linked page numbers where term appears +// - index: Zero-based entry index within group +// - total: Total entries in group +// groups (array): Optional list of groups to include +// If empty, includes all groups +// +// Returns: +// content: Formatted glossary content +// +// Panics: +// - If a requested group doesn't exist +// +#let glossary( + title: "Glossary", + theme: theme-academic, + sort: true, + ignore-case: false, + groups: (), + show-all: false, +) = context { + // Type checking + let checked-title = z.parse(title, z.content(), scope: ("title",)) + let checked-groups = z.parse(groups, groups-list-schema, scope: ("groups",)) + let checked-ignore-case = z.parse(ignore-case, z.boolean(), scope: ( + "ignore-case", + )) + let checked-theme = z.parse(theme, theme-schema, scope: ("theme",)) + + // Collect and organize entries by group + let output = (:) + let all_entries = __gloss_entries.final() + let all_used = if not show-all { + all_entries.keys().filter(key => __is_term_ever_referenced(key)) + } else { + all_entries.keys() + } + + // Determine which groups to process + let all_groups = all_entries + .values() + .map(e => e.at("group")) + .map(g => { if g == none { "" } else { g } }) + .dedup() + .sorted() + + let target_groups = if checked-groups.len() == 0 { + all_groups + } else { + // Validate requested groups exist + for g in checked-groups { + if g == none { + g = "" + } + if g not in all_groups { + panic("Requested group, '" + g + "', not found.") + } + } + checked-groups + } + + // Process entries group by group + for group in target_groups { + let current_entries = () + + // Collect all used entries for this group + for key in all_used { + let entry = all_entries.at(key) + if entry.at("group") == group { + current_entries.push(( + short: entry.at("short"), + long: entry.at("long"), + description: entry.at("description"), + label: [#metadata(key)#__entry_label(key)], + pages: __create_backlinks(key), + )) + } + } + + // Add non-empty groups to output + if current_entries.len() > 0 { + group = if group == none { "" } else { group } + + // sort entries by case insensitivity if requested + // sort entries by case insensitivity if requested + let sorted_entries = if sort { + current_entries + // 1. create array of tuples with (lower [if ignore-case], entry) + .map(e => { + if ignore-case { (lower(e.short), e) } else { (e.short, e) } + }) + // 2. sort the tuples (by first element then second) + .sorted(key: e => e.first()) // NOTE: sorted() is NOT language-aware + // 3. strip away the tuple's first element, leaving an array of entries + .map(t => t.last()) + } else { + current_entries + } + + // add entries to this group's output map + output.insert(group, sorted_entries) + } + } + + // Render the glossary using the theme + let group_index = 0 + + [ + #metadata("glossary") + #(checked-theme.section)( + title, + for (group, entries) in output { + (checked-theme.group)( + group, + group_index, + output.len(), + for (i, entry) in entries.enumerate() { + (checked-theme.entry)(entry, i, entries.len()) + }, + ) + group_index += 1 + }, + ) + ] +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/schemas.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/schemas.typ new file mode 100644 index 0000000000..366c29aac1 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/schemas.typ @@ -0,0 +1,25 @@ +#import "@preview/valkyrie:0.2.2" as z + +#let dict-schema = z.either( + z.string(), + z.dictionary( + ( + short: z.content(), // this is the only required field + plural: z.content(optional: true), + long: z.content(optional: true), + longplural: z.content(optional: true), + description: z.content(optional: true), + group: z.content(optional: true), + ), + ), +) + +#let theme-schema = z.dictionary( + ( + section: z.function(), + group: z.function(), + entry: z.function(), + ), +) + +#let groups-list-schema = z.array(pre-transform: z.coerce.array) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes.typ new file mode 100644 index 0000000000..dc3f4b855f --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes.typ @@ -0,0 +1,6 @@ +#import "themes/academic.typ": theme-academic +#import "themes/basic.typ": theme-basic +#import "themes/chicago-index.typ": theme-chicago-index +#import "themes/compact.typ": theme-compact +#import "themes/table.typ": theme-table +#import "themes/twocol.typ": theme-twocol diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/academic.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/academic.typ new file mode 100644 index 0000000000..4d97bda7c5 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/academic.typ @@ -0,0 +1,47 @@ +// Inspired by academic textbook glossaries +#let theme-academic = ( + section: (title, body) => { + heading(level: 1, title) + v(1em) + body + }, + group: (name, index, total, body) => { + if name != "" and total > 1 { + v(1.5em) + align(left, text(weight: "bold", size: 1.2em, name)) + v(0.75em) + line(length: 100%, stroke: 0.5pt) + v(0.75em) + } + body + }, + entry: (entry, index, total) => { + let short-display = text(weight: "bold", entry.short) + let long-display = if entry.long == none { + [] + } else { + [. #entry.long] + } + + let description = if entry.description == none { + [] + } else { + [. #entry.description] + } + + block( + below: 1em, + text( + size: 0.95em, + { + grid( + columns: (1fr, auto), + gutter: 0.75em, + [#short-display#long-display#description#entry.label], + text(fill: rgb("#666666"), entry.pages.join(", ")), + ) + }, + ), + ) + }, +) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/basic.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/basic.typ new file mode 100644 index 0000000000..8c6bec26e8 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/basic.typ @@ -0,0 +1,68 @@ +// Theme definition for a basic single-column glossary layout +// +// This theme provides a traditional glossary format with: +// 1. Bold terms +// 2. Indented descriptions +// 3. Simple page references +// 4. Optional group headings +// +#let theme-basic = ( + // Renders the main glossary section as a single column + // Parameters: + // title: The glossary section title + // body: Content containing all groups and entries + section: (title, body) => { + heading(level: 1, title) + body + }, + // Renders a group of related glossary terms + // Parameters: + // name: Group name (empty string for ungrouped terms) + // index: Zero-based group index + // total: Total number of groups + // body: Content containing the group's entries + group: (name, index, total, body) => { + if name != "" and total > 1 { + heading(level: 2, name) + } + body + }, + // Renders a single glossary entry with term, definition, and page references + // Parameters: + // entry: Dictionary containing term data: + // - short: Short form of term + // - long: Long form of term (optional) + // - description: Term description (optional) + // - label: Term's dictionary label + // - pages: Array of linked page numbers where term appears + // index: Zero-based entry index within group + // total: Total entries in group + entry: (entry, index, total) => { + // Format the term parts + let term = text(weight: "bold", entry.short) + let long-form = if entry.long == none { + [] + } else { + [, #entry.long] + } + + // Format the description with proper spacing + let description = if entry.description == none { + [] + } else { + [: #entry.description] + } + + // Create the complete entry with hanging indent + block( + spacing: 0.5em, + pad( + left: 1em, + bottom: 0.5em, + block( + [#term#entry.label#long-form#description #h(1em) (pp. #entry.pages.join(", "))], + ), + ), + ) + }, +) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/chicago-index.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/chicago-index.typ new file mode 100644 index 0000000000..91bb498891 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/chicago-index.typ @@ -0,0 +1,45 @@ +// Inspired by the Chicago Manual of Style's index format +#let theme-chicago-index = ( + section: (title, body) => { + set par(hanging-indent: 1em) + heading(level: 1, smallcaps(title)) + body + }, + group: (name, index, total, body) => { + if name != "" and total > 1 { + v(1em) + text(weight: "medium", style: "italic", name) + v(0.5em) + } + body + }, + entry: (entry, index, total) => { + let short-display = text(weight: "regular", entry.short) + let long-display = if entry.long == none { + [] + } else { + [ — #entry.long] // Using em-dash for Chicago style + } + + let description = if entry.description == none { + [] + } else { + text(style: "italic", [: #entry.description]) + } + + block( + below: 0.65em, + text( + size: 0.9em, + { + grid( + columns: (1fr, auto), + gutter: 1em, + [#short-display#entry.label#long-display#description#entry.label], + [#entry.pages.join(", ")], + ) + }, + ), + ) + }, +) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/compact.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/compact.typ new file mode 100644 index 0000000000..60c185065d --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/compact.typ @@ -0,0 +1,89 @@ +// Theme definition for a compact glossary layout optimized for space efficiency +// +// This theme provides a dense but readable format with: +// 1. Terms and definitions on same line +// 2. Smaller font size +// 3. Minimal vertical spacing +// 4. Left-aligned groups for quick scanning +// 5. Condensed page references +// +#let theme-compact = ( + // Renders the main glossary section with minimal spacing + // Parameters: + // title: The glossary section title + // body: Content containing all groups and entries + section: (title, body) => { + set par(leading: 0.65em) + heading(level: 1, outlined: false, text(weight: "bold", size: 1.1em, title)) + body + }, + // Renders a group of related glossary terms + // Parameters: + // name: Group name (empty string for ungrouped terms) + // index: Zero-based group index + // total: Total number of groups + // body: Content containing the group's entries + group: (name, index, total, body) => { + if name != "" and total > 1 { + block( + spacing: 0.5em, + pad( + top: 0.5em, + text(weight: "bold", size: 0.9em, name), + ), + ) + } + body + }, + // Renders a single glossary entry with term, definition, and page references + // Parameters: + // entry: Dictionary containing term data: + // - short: Short form of term + // - long: Long form of term (optional) + // - description: Term description (optional) + // - label: Term's dictionary label + // - pages: Array of linked page numbers where term appears + // index: Zero-based entry index within group + // total: Total entries in group + entry: (entry, index, total) => { + // Format term components with minimal spacing + let term = text( + size: 0.65em, + weight: "medium", + fill: gray.darken(60%), + entry.short, + ) + + let long-form = if entry.long == none { + [] + } else { + text(size: 0.65em, fill: gray.darken(20%), [ (#entry.long)]) + } + + let description = if entry.description == none { + [] + } else { + text(size: 0.65em, [· #entry.description]) + } + + // Create the complete entry with tight spacing + block( + spacing: 0.4em, + grid( + columns: (auto, 1fr, auto), + align: left + bottom, + gutter: 0.5em, + // Term and description column + box[#term#entry.label#long-form #description], + // Dots.... + repeat(h(0.25em) + text(fill: gray, ".") + h(0.25em)), + // Page references with smaller font + text( + size: 0.6em, + fill: gray.darken(20%), + entry.pages.join(", "), + ), + ), + ) + }, +) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/table.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/table.typ new file mode 100644 index 0000000000..5b32acbdcf --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/table.typ @@ -0,0 +1,36 @@ +// A tabular theme courtesy of [@Fevol](https://github.com/Fevol) +#let theme-table = ( + section: (title, body) => { + heading(level: 1, title) + body + }, + group: (name, index, total, body) => { + if name != "" and total > 1 { + heading(level: 2, name) + } + + table( + columns: 4, + stroke: none, + inset: (x, y) => { + if (x == 0) { + (left: 0pt, rest: 5pt) + } else if (x == 3) { + (right: 0pt, rest: 5pt) + } else { + 5pt + } + }, + table.header([*Abbreviation*], [*Full Name*], [*Description*], [*Pages*]), + ..body, + ) + }, + entry: (entry, index, total) => { + ( + entry.short + entry.label, + entry.long, + entry.description, + entry.pages.join(", "), + ) + }, +) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/twocol.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/twocol.typ new file mode 100644 index 0000000000..947fa2d2ce --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/themes/twocol.typ @@ -0,0 +1,74 @@ +// Theme definition for a two-column glossary layout with hierarchical sections +// +// This theme provides formatting for three levels of glossary content: +// 1. Section: The overall glossary container +// 2. Groups: Optional categorization of related terms +// 3. Entries: Individual glossary terms and their definitions +// +#let theme-twocol = ( + // Renders the main glossary section as a two-column layout + // Parameters: + // title: The glossary section title + // body: Content containing all groups and entries + section: (title, body) => { + set par.line(numbering: none) + heading(level: 1, title) + columns(2, body) + }, + // Renders a group of related glossary terms + // Parameters: + // name: Group name (empty string for ungrouped terms) + // index: Zero-based group index + // total: Total number of groups + // body: Content containing the group's entries + group: (name, index, total, body) => { + if name != "" and total > 1 { + heading(level: 2, name) + } + body + }, + // Renders a single glossary entry with term, definition, and page references + // Parameters: + // entry: Dictionary containing term data: + // - short: Short form of term + // - long: Long form of term (optional) + // - description: Term description (optional) + // - label: Term's dictionary label + // - pages: Array of linked page numbers where term appears + // index: Zero-based entry index within group + // total: Total entries in group + entry: (entry, index, total) => { + // Format the short form and optional long form of the term + let short-display = text(weight: "regular", entry.short) + let long-display = if entry.long == none { + [] + } else { + [#h(0.25em) -- #entry.long] + } + + // Format the optional description + let description = if entry.description == none { + [] + } else { + [: #entry.description] + } + + // Render the complete entry with dotted leader line to page numbers + text( + size: 0.75em, + weight: "light", + grid( + columns: (auto, 1fr, 1em, auto), + align: (left, center, center, right), + [#short-display#entry.label#long-display#description], + // Term with label + [#repeat(h(0.25em) + "." + h(0.25em))], + // Dotted leader line + [ . ], + // A 1em wide dot so we definitely get some break between term and pages + [#entry.pages.join(", ")], + // Page references + ), + ) + }, +) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/utils.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/utils.typ new file mode 100644 index 0000000000..9a6be1b2d1 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/patches/glossy/src/utils.typ @@ -0,0 +1,272 @@ +// Returns the provided value if it is not none, otherwise returns the default value +// Parameters: +// val: The value to check +// default: The fallback value to use if val is none +// Returns: val if not none, otherwise default +#let __default(val, default) = if val == none { default } else { val } + +// Converts an English word to its plural form following standard English pluralization rules +// Parameters: +// word: The singular word to pluralize +// Returns: The pluralized form of the word, or none if input is none +#let __pluralize(word) = { + // Early exit for invalid input + if word == none { + return none + } + + // Helper functions for checking endings + let ends_with = suffix => lower(word).ends-with(suffix) + let ends_with_any = suffixes => suffixes.any(suffix => ends_with(suffix)) + + // Map of irregular plurals for common words + let irregulars = ( + "alumna": "alumnae", + "alumnus": "alumni", + "analysis": "analyses", + "appendix": "appendices", + "basis": "bases", + "cactus": "cacti", + "child": "children", + "crisis": "crises", + "criterion": "criteria", + "datum": "data", + "foot": "feet", + "fungus": "fungi", + "goose": "geese", + "man": "men", + "medium": "media", + "mouse": "mice", + "nucleus": "nuclei", + "oasis": "oases", + "person": "people", + "phenomenon": "phenomena", + "stimulus": "stimuli", + "thesis": "theses", + "tooth": "teeth", + "woman": "women", + ) + + // Set of plural-only words + let plural_only = ( + "advice", + "alumni", + "bison", + "children", + "criteria", + "data", + "deer", + "feet", + "fish", + "geese", + "information", + "media", + "men", + "mice", + "money", + "moose", + "octopi", + "octopodes", + "people", + "scissors", + "series", + "sheep", + "species", + "teeth", + "trousers", + "women", + ) + + // Irregular suffixes + let f_to_ves = ("leaf", "loaf", "calf", "half", "wolf", "thief") + let fe_to_ves = ("wife", "knife", "life") + let o_to_os = ( + "photo", + "piano", + "halo", + "radio", + "video", + "studio", + "solo", + "taco", + "memo", + "zero", + ) + + // Convenience + let w = lower(word) + + // Check for words already plural + if plural_only.contains(w) { + return word + } + + // Check for irregular singulars + if irregulars.keys().contains(w) { + return irregulars.at(w) + } + + // Standard pluralization rules + if ends_with("iz") { + word + "zes" + } else if ends_with_any(("s", "x", "z", "sh", "ch")) { + word + "es" + } else if ends_with("y") { + if not ends_with_any(("ay", "ey", "iy", "oy", "uy")) { + word.slice(0, -1) + "ies" + } else { + word + "s" + } + } else if ends_with("f") { + if f_to_ves.contains(w) { + word.slice(0, -1) + "ves" + } else { + word + "s" + } + } else if ends_with("fe") { + if fe_to_ves.contains(w) { + word.slice(0, -2) + "ves" + } else { + word + "s" + } + } else if ends_with("us") { + word.slice(0, -2) + "i" + } else if ends_with("is") { + word.slice(0, -2) + "es" + } else if ends_with("on") { + word + "s" + } else if ends_with("o") { + if o_to_os.contains(w) { + word + "s" + } else { + word + "es" + } + } else { + word + "s" + } +} + +// Determines the appropriate indefinite article ("a" or "an") for a given English word. +// +// Heuristic rules: +// 1. If word looks like an acronym (all uppercase or letters separated by dots): +// - Use "an" if the first letter's name starts with a vowel sound, e.g. A (ay), E (ee), F (eff), H (aitch), I (eye), L (el), M (em), N (en), O (oh), R (ar), S (ess), X (ex). +// - Otherwise "a". +// +// 2. Otherwise, lowercase the word and apply standard rules: +// - Starts with a vowel (a, e, i, o): "an". +// - Starts with "u": +// * If it begins with "uni", "use", "user", or "eu" (e.g. "university", "use", "Europe"), we treat it as a "yoo" sound -> "a". +// * Otherwise -> "an". +// - Special silent 'h' words: if it starts with "hour", "honest", "honor", "honour", or other, use "an". +// Otherwise if starts with 'h', use "a". +// - Default: "a". +// +// Notes: +// - This is a best-effort heuristic and won't be perfect. +// - These are for singular forms. If plural form is requested alongside +// articles, the caller should panic before calling this function. +// +// Returns: +// "a" or "an" +// +// Example: +// __determine_article("RF") -> "an" (Ar-Ef) +// __determine_article("radio") -> "a" +// __determine_article("hour") -> "an" +// __determine_article("honest") -> "an" +// __determine_article("university") -> "a" +// __determine_article("umbrella") -> "an" +// __determine_article("Europe") -> "a" (because we assume "yoo-ruhp") +#let __determine_article(word) = { + // Check input + if word == none or word.trim() == "" { + // If invalid, default to none + return none + } + + // Normalize the word + let upper_word = word.trim() + let lower_word = lower(upper_word) + + // When these letters are spelled out, they get an "an" (i.e. "an RFC") + let acronym_vowels = ( + "A", // "ay" + "E", // "ee" + "F", // "eff" + "H", // "aitch" + "I", // "eye" + "L", // "el" + "M", // "em" + "N", // "en" + "O", // "oh" + "R", // "ar" + "S", // "ess" + "X", // "ex" + ) + + // Helper to detect if word looks like an acronym + let is_acronym = { + // All uppercase or letters separated by non-alphabetical chars + let cleaned = upper_word.replace(".", "").replace("-", "") + cleaned.codepoints().all(c => c == upper(c)) and cleaned.len() > 0 + } + + if is_acronym { + // Use acronym rules + let first_char = upper_word.codepoints().slice(0, 1).first() + if acronym_vowels.contains(first_char) { + "an" + } else { + "a" + } + } else { + // Non-acronym rules + let first_char = lower_word.codepoints().slice(0, 1).first() + + // Special cases for words matching a set of known 'silent h' prefixes + let silent_h_words = ( + "heir", // "air" + "herb", // "erb" (in American English) + "homage", // "oh-mij" or "ah-mij" + "honest", // "on-est" + "honor", // "on-or" (American English) + "honour", // "on-our" (British English) + "hour", // "our" + ) + if silent_h_words.any(w => lower_word.starts-with(w)) { + return "an" + } + + // Words starting with 'eu', which has the 'yoo' sound + if lower_word.starts-with("eu") { + return "a" + } + + // Words starting with 'u', that get the 'yoo' sound + if first_char == "u" { + let yoo_sounds = ( + "ubi", // ubiquitous + "uni", // unicycle, uniform, universe, university, unilateral, unique, union, etc. + "usa", // usage, usability + "use", // use, useful, useless + "usu", // usual, usually + "usur", // usurp + "ute", // utensil, uterus + "uti", // utility, utilize, utilization + "uto", // utopia, utopian + ) + if yoo_sounds.any(w => lower_word.starts-with(w)) { + return "a" + } + } + + // Vowel start + if "aeiou".contains(first_char) { + return "an" + } + + // the default case, plus 'h' words not in the silent list + "a" + } +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/figures.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/figures.typ new file mode 100644 index 0000000000..6e05c61255 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/figures.typ @@ -0,0 +1,20 @@ +#let figure-styles(doc) = { + let fig_padding = 0.4cm + + show figure: fig => { + v(fig_padding) + fig + } + + show figure.caption: caption => { + set text(style: "italic") + v(fig_padding) + text(style: "normal", weight: "bold", caption.supplement + " " + caption.counter.display() + ": ") + caption.body + v(fig_padding) + } + + // show figure.where(kind: raw): set figure(supplement: [Code Snippet]) + + doc +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/glossary.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/glossary.typ new file mode 100644 index 0000000000..313bd36934 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/glossary.typ @@ -0,0 +1,52 @@ +#import "../patches/glossy/lib.typ": * + +#let glossary-theme = ( + section: (title, body) => { + heading(level: 1, numbering: none)[#title] + body + }, + group: (name, index, total, body) => { + if name != "" and total > 1 { + heading(level: 2, numbering: none)[#name] + } + body + }, + entry: (entry, index, total) => { + let label = text(weight: "bold")[ + #entry.short#entry.label + #if entry.long != none { + " (" + entry.long + ")" + } + ] + let description = entry.description + + block(breakable: false)[ + #grid( + columns: (auto, 1fr, auto), + label, h(1fr), entry.pages.join(", "), + ) + #v(-0.1cm) + #description + #v(0.1cm) + ] + }, +) + +#let styled-glossary = context { + // Glossy creates metadata for each defined term during init-glossary + // Check if any terms are actually used/referenced in the document + let all-metadata = query(metadata) + + // Get all defined term keys from metadata + let term-keys = all-metadata.filter(m => type(m.value) == str).map(m => m.value) + + // Check if any of these terms have been referenced + // Glossy creates labels with "__gloss:" prefix for term references + let has-referenced-terms = term-keys.any(key => { + query(label("__gloss:" + key)).len() > 0 + }) + + if has-referenced-terms { + glossary(theme: glossary-theme) + } +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/math-and-code.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/math-and-code.typ new file mode 100644 index 0000000000..77cf0e7355 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/math-and-code.typ @@ -0,0 +1,16 @@ +#import "@preview/codly:1.3.0": codly, codly-init +#import "@preview/codly-languages:0.1.10": codly-languages + +#let code-styles(doc) = { + show: codly-init + codly( + languages: codly-languages, + fill: rgb("#fafafa"), + ) + + set math.equation(numbering: "(1)") + // show math.equation: set text(font: "Fira Math") + show raw: set text(font: "Fira Code") //Code blocks + + doc +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/page-border.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/page-border.typ new file mode 100644 index 0000000000..9252e511ab --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/page-border.typ @@ -0,0 +1,19 @@ +#import "tokens.typ": tokens + +#let page-border-styles(page-border, doc) = { + let blue-frame = if page-border { + rect( + width: 100%, + height: 100%, + stroke: ( + paint: tokens.colour.main, + thickness: 16pt, + cap: "round", + ), + ) + } else { none } + + set page(paper: "a4", margin: tokens.margin, background: blue-frame) + + doc +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/page-header.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/page-header.typ new file mode 100644 index 0000000000..72bbb33056 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/page-header.typ @@ -0,0 +1,51 @@ +#import "tokens.typ": tokens + +#let page-header-styles(doc) = { + set page( + header-ascent: 30%, + header: context { + let fill-line(left-text, right-text) = { + set par( + first-line-indent: ( + amount: 0em, + ), + ) + + [#left-text #h(1fr) #right-text] + } + + let page-number = here().page() + + // If the current page is the start of a chapter, don't show a header + let target = heading.where(level: 1) + if query(target).any(it => it.location().page() == page-number) { + return [] + } + + // Find the chapter of the section we are currently in. + let before = query(target.before(here())) + if before.len() > 0 { + let current = before.last() + + let chapter-title = current.body + let chapter-number = counter(heading.where(level: 1)).display() + let chapter-number-text = [Chapter #chapter-number] + + if current.numbering != none { + let (left-text, right-text) = if calc.odd(page-number) { + (chapter-number-text, chapter-title) + } else { + (chapter-title, chapter-number-text) + } + // text(weight: "regular", font: tokens.font-families.headers, + fill-line(left-text, right-text) + // ) + v(-tokens.spacing) + line(length: 100%, stroke: 0.5pt) + } + } + }, + ) + + doc +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/table.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/table.typ new file mode 100644 index 0000000000..4942f5c681 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/table.typ @@ -0,0 +1,31 @@ +#import "tokens.typ": tokens + +#let table-styles(doc) = { + show table.cell.where(y: 0): strong + set table( + fill: (_, y) => if y == 0 { tokens.colour.main } else { tokens.colour.lightest }, + stroke: none, + gutter: 0.08cm, + align: horizon + left, + inset: (x: 8pt, y: 10pt), + ) + show table.cell.where(y: 0): c => { + text(fill: white, font: tokens.font-families.headers, size: tokens.font-sizes.body - 1.4pt, c) + } + + show table.cell: c => { + set par(justify: false) + set text(size: tokens.font-sizes.body - 1pt) + c + } + + show table: t => { + block( + clip: true, + radius: tokens.radius, + t, + ) + } + + doc +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/text.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/text.typ new file mode 100644 index 0000000000..d80cfbcf07 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/text.typ @@ -0,0 +1,120 @@ +#import "tokens.typ": tokens +#import "../utils.typ": show_if_heading_within_distance + +#let text-styles(doc) = { + set par( + spacing: 1.4em, + leading: 0.7em, + justify: true, + linebreaks: "optimized", + ) + + set text( + font: tokens.font-families.body, + size: tokens.font-sizes.body, + ) + + show heading.where(level: 4): set heading(numbering: none) + set heading(numbering: (first, ..nums) => numbering("1.1", first, ..nums)) + + show heading: it => { + set text(font: tokens.font-families.headers, fill: tokens.colour.main, weight: "bold") + let level_based_spacing = if it.level == 2 { 0.4 } else { 1.4 / it.level } + + // Reduce spacing between 2 consecutive headings + show_if_heading_within_distance( + it: it, + distance: 2 * tokens.spacing + 1cm, + look: "before", + to-show: v(-2 * level_based_spacing * tokens.spacing), + ) + + v(tokens.spacing * level_based_spacing) + it + v(tokens.spacing * level_based_spacing - 0.05cm) + } + + show heading.where(level: 1): it => { + set text(font: tokens.font-families.headers) + if it.numbering == none { + pagebreak() + text(fill: tokens.colour.main, size: tokens.font-sizes.h1, it) + v(tokens.spacing) + } else { + set par(justify: false) + let heading_number = counter(heading.where(level: 1)).display() + + context { + // Only add pagebreak if this is not the first numbered chapter + let chapter_num = counter(heading.where(level: 1)).at(here()).first() + // If chapter > 1, always pagebreak + // If chapter = 1, only pagebreak if there's body content before (abstract, acknowledgements) + if chapter_num > 1 { + pagebreak() + } else { + let before_pars = query(selector(par).before(here())) + if before_pars.len() > 0 { + pagebreak() + } + } + } + + grid( + columns: (3cm, 1fr), + rows: 3cm, + gutter: -0.8cm, + place(dx: -0.5em, text(fill: tokens.colour.main, size: 96pt, heading_number)), + text(fill: tokens.colour.main, size: tokens.font-sizes.h1, it.body), + ) + show_if_heading_within_distance( + it: it, + distance: 10cm, + look: "after", + to-show: v(1cm), + if-not: true, + ) + } + } + + show heading.where(level: 3): set text(size: tokens.font-sizes.h3) + + show heading.where(level: 4): it => { + set text( + font: tokens.font-families.headers, + fill: tokens.colour.main, + weight: "regular", + size: tokens.font-sizes.h4, + ) + it + } + + set quote(block: true) + + show quote: it => { + if it.block { + pad(left: 0.21em, block( + stroke: ( + left: ( + thickness: 2pt, + paint: tokens.colour.main, + cap: "round", + ), + ), + inset: (left: 1em), + { + it.body + + if it.attribution != none { + parbreak() + // h(1fr) + text(fill: tokens.colour.main)[— #it.attribution] + } + }, + )) + } else { + it + } + } + + doc +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/tokens.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/tokens.typ new file mode 100644 index 0000000000..c7fbe85cfb --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/tokens.typ @@ -0,0 +1,21 @@ + +#let tokens = ( + colour: ( + "main": rgb("#0064A6"), + "light": rgb("#8FC8EE"), + "lightest": rgb("#deeef8"), + ), + font-families: ( + body: "Tex Gyre Heros", + headers: "Arial Rounded MT", //Nunito + ), + font-sizes: ( + "h1": 32pt, + "h3": 11pt, + "h4": 11pt, + "body": 11pt, + ), + margin: 2.5cm, + radius: 4pt, + spacing: 0.4cm, +) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ new file mode 100644 index 0000000000..2e7661efbb --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ @@ -0,0 +1,140 @@ +#import "@preview/tieflang:0.1.0": configure-translations, pop-lang, push-lang, tr +#import "utils.typ": title-case + +#let translations = ( + de: ( + abstract: [Zusammenfassung], + title: [Titel], + author: count => if count == 1 { [Autor] } else { [Autoren] }, + supervisor: count => if count == 1 { [Betreuer] } else { [Betreuer] }, + co_supervisor: count => if count == 1 { [Mitbetreuer] } else { [Mitbetreuer] }, + main_supervisor: count => if count == 1 { [Hauptbetreuer] } else { [Hauptbetreuer] }, + secondary_supervisor: count => if count == 1 { [Nebenbetreuer] } else { [Nebenbetreuer] }, + external_supervisor: count => if count == 1 { [Externer Betreuer] } else { [Externe Betreuer] }, + industry_partner: [Industriepartner], + acknowledgements: ( + title: [Danksagung], + text: (plural, supervisor-count, supervisors) => context { + let p = (tr().pronoun)(plural) + let verb = if plural { "danken" } else { "danke" } + let possessive = if supervisor-count > 1 { "ihre" } else { "seine/ihre" } + let was = if supervisor-count > 1 { "waren" } else { "war" } + + [#title-case(p) #verb #supervisors herzlich für #possessive Expertise und kontinuierliche Beratung. #title-case(possessive) Führung und Unterstützung #was von unschätzbarem Wert für den erfolgreichen Abschluss dieses Projekts.] + }, + ), + "and": [und], + pronoun: plural => if plural { "wir" } else { "ich" }, + have: plural => if plural { "haben" } else { "habe" }, + be: plural => if plural { "sind" } else { "bin" }, + verb_suffix_first: plural => if plural { "en" } else { "e" }, + declaration_of_originality: ( + title: [Eidesstattliche Erklärung], + text: plural => { + let student = if plural { "die Studierenden" } else { "der/die Studierende" } + let pronoun = if plural { "sie" } else { "er/sie" } + let versichert = if plural { "versichern" } else { "versichert" } + let hat = if plural { "haben" } else { "hat" } + let erklaert = if plural { "erklären" } else { "erklärt" } + + [ + Mit der Abgabe dieser Projektarbeit #versichert #student, dass #pronoun die Arbeit selbständig und ohne fremde Hilfe verfasst #hat. (Bei Gruppenarbeiten gelten die Leistungen der übrigen Gruppenmitglieder nicht als fremde Hilfe.) + + Der/die unterzeichnende Studierende #erklaert, dass alle zitierten Quellen (auch Internetseiten) im Text oder Anhang korrekt nachgewiesen sind, d.h. dass die Projektarbeit keine Plagiate enthält, also keine Teile, die teilweise oder vollständig aus einem fremden Text oder einer fremden Arbeit unter Vorgabe der eigenen Urheberschaft bzw. ohne Quellenangabe übernommen worden sind. + + KI-Systeme wurden im Rahmen dieser Arbeit wie in @ai angegeben verwendet. + + Bei Verfehlungen aller Art treten die Paragraphen 39 und 40 (Unredlichkeit und Verfahren bei Unredlichkeit) der ZHAW Prüfungsordnung sowie die Bestimmungen der Disziplinarmassnahmen der Hochschulordnung in Kraft. + ] + }, + ), + location: [Ort], + date: [Datum], + institution: [Institution], + institution_name: [ZHAW Zürcher Hochschule für Angewandte Wissenschaften], + keywords: [Schlüsselwörter], + submitted_on: [Eingereicht am], + school_of: [School of], + institute_of: [Institut für], + table_of_contents: [Inhaltsverzeichnis], + glossary: [Glossar], + code_snippet: [Code-Snippet], + chapter: [Kapitel], + appendix: [Anhang], + ), + en: ( + abstract: [Abstract], + title: [Title], + author: count => if count == 1 { [Author] } else { [Authors] }, + supervisor: count => if count == 1 { [Supervisor] } else { [Supervisors] }, + co_supervisor: count => if count == 1 { [Co-supervisor] } else { [Co-supervisors] }, + main_supervisor: count => if count == 1 { [Main supervisor] } else { [Main supervisors] }, + secondary_supervisor: count => if count == 1 { [Secondary supervisor] } else { [Secondary supervisors] }, + external_supervisor: count => if count == 1 { [External supervisor] } else { [External supervisors] }, + industry_partner: [Industry partner], + acknowledgements: ( + title: [Acknowledgements], + text: (plural, supervisor-count, supervisors) => context { + let p = (tr().pronoun)(plural) + let possessive = "their" + let was = if supervisor-count > 1 { "were" } else { "was" } + + [#title-case(p) sincerely thank #supervisors for #possessive expertise and continuous advice. #title-case(possessive) guidance and support #was invaluable to the successful completion of this project.] + }, + ), + "and": [and], + pronoun: plural => if plural { "we" } else { "I" }, + have: plural => if plural { "have" } else { "has" }, + be: plural => if plural { "are" } else { "am" }, + verb_suffix_first: plural => if plural { "" } else { "s" }, + declaration_of_originality: ( + title: [Declaration of Originality], + text: plural => { + let student = if plural { "students" } else { "student" } + let confirm = if plural { "confirm" } else { "confirms" } + let their = "their" + let declare = if plural { "declare" } else { "declares" } + + [ + By submitting this project work, the undersigned #student #confirm that this work is #their own work and was written without the help of a third party. (Group works: the performance of the other group members are not considered as third party). + + The #student #declare that all sources in the text (including Internet pages) and appendices have been correctly disclosed. This means that there has been no plagiarism, i.e. no sections of the project work have been partially or wholly taken from other texts and represented as the student's own work or included without being correctly referenced. + + AI systems were used in the process of this work, as specified in @appendix:ai. + + Any misconduct will be dealt with according to paragraphs 39 and 40 of the General Academic Regulations for Bachelor's and Master's Degree courses at the Zurich University of Applied Sciences (Rahmenprüfungsordnung ZHAW (RPO)) and subject to the provisions for disciplinary action stipulated in the University regulations. + ] + }, + ), + location: [Location], + date: [Date], + institution: [Institution], + institution_name: [ZHAW University of Applied Sciences], + keywords: [Keywords], + submitted_on: [Submitted on], + school_of: [School of], + institute_of: [Institute of], + table_of_contents: [Table of Contents], + glossary: [Glossary], + code_snippet: [Code Snippet], + chapter: [Chapter], + appendix: [Appendix], + ), +) + +#let languages = ( + de: "de", + en: "en", +) + +#let setup-language(lang, doc) = { + configure-translations(translations) + push-lang(lang) + + set text( + lang: lang, + region: if lang == "en" { "gb" } else { "ch" }, + ) + + doc +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ new file mode 100644 index 0000000000..603e8402a5 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ @@ -0,0 +1,115 @@ +#import "styling/tokens.typ": tokens +#import "@preview/datify:1.0.1": * + +// See https://github.com/typst/typst/issues/2953 +#let show_if_heading_within_distance( + it: none, + distance: 1cm, + look: "before", + to-show: v(-1cm), + if-not: false, +) = { + if it == none { + panic("Parameter \"it\" of \"show_if_neighbour_within_distance\" must be defined.") + } + + // 1. Find neighbouring headings + let sel = selector(heading) + let neighbours = () + + if look == "before" { + neighbours = query(sel.before(here(), inclusive: false)) + } else if look == "after" { + neighbours = query(sel.after(here(), inclusive: false)) + } else { + panic("Parameter \"look\" of \"show_if_neighbour_within_distance\" must have value \"before\" or \"after\".") + } + + if neighbours.len() > 0 { + // 2. Get the closest heading (last 'before' or first 'after'). + let neighbour = if look == "before" { + neighbours.last() + } else { + neighbours.first() + } + + // 3. Get the absolute positions of the current element and the neighbour. + let iloc = it.location().position() + let nloc = neighbour.location().position() + + // 4. Check if distance is within threshold + if iloc.page == nloc.page and iloc.x == nloc.x { + let vertical-distance = if look == "before" { + iloc.y - nloc.y + } else { + nloc.y - iloc.y + } + + if vertical-distance < distance { + if (if-not) { return none } + return to-show + } + } + } + + if (if-not) { return to-show } + return none +} + +#let today() = context { + let current-date = datetime.today() + [#custom-date-format(current-date, pattern: "long", lang: text.lang)] +} + +#let ensure-array(unsafe-input) = { + if unsafe-input == none { + () + } else if type(unsafe-input) != array { + (unsafe-input,) + } else { + unsafe-input + } +} + +#let centered(title, content) = { + pagebreak() + set align(center + horizon) + set par(first-line-indent: 0cm) + align(start + horizon)[ + #text(font: tokens.font-families.headers, fill: tokens.colour.main, weight: "bold", size: 24pt, title) + #content + ] +} + + +#let deep-merge(base, override) = { + let result = (:) + + // Copy all keys from base + for (key, value) in base { + result.insert(key, value) + } + + // Apply overrides + for (key, value) in override { + // Skip empty arrays - keep the base value + if type(value) == array and value.len() == 0 { + continue + } + + if key in base and type(value) == dictionary and type(base.at(key)) == dictionary { + result.insert(key, deep-merge(base.at(key), value)) + } else { + result.insert(key, value) + } + } + + result +} + +#let title-case(string) = { + return str(string).replace( + regex("[A-Za-z]+('[A-Za-z]+)?"), + word => upper(word.text.first()) + lower(word.text.slice(1)), + ) +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ new file mode 100644 index 0000000000..cb3198d1c6 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ @@ -0,0 +1,233 @@ +#import "utils.typ": deep-merge +#import "styling/tokens.typ": tokens +#import "pages/title.typ": title-page +#import "pages/abstract.typ": abstract-page +#import "pages/acknowledgements.typ": acknowledgements-page +#import "pages/originality.typ": declaration-of-originality-page +#import "styling/math-and-code.typ": code-styles +#import "styling/glossary.typ": init-glossary, styled-glossary +#import "styling/text.typ": text-styles +#import "styling/figures.typ": figure-styles +#import "styling/table.typ": table-styles +#import "styling/page-header.typ": page-header-styles +#import "styling/page-border.typ": page-border-styles +#import "translations.typ": languages, setup-language +#import "@preview/tieflang:0.1.0": tr + +#let zhaw-thesis( + language: languages.de, + cover: ( + school: none, + institute: none, + work-type: none, + title: none, + authors: none, + supervisors: none, + industry-partner: none, + study-program: none, + override: none, + ), + abstract: ( + keywords: none, + en: none, + de: none, + override: none, + ), + acknowledgements: ( + text: none, + override: none, + ), + declaration-of-originality: ( + location: none, + text: none, + override: none, + ), + glossary-entries: none, + biblio: ( + file: none, + style: "ieee", + ), + appendix: none, + page-border: true, + hide-frontmatter: false, + print-mode: false, + doc, +) = { + // Apply deep-merge to nested structures with defaults + let cover-defaults = ( + school: none, + institute: none, + work-type: none, + title: none, + authors: none, + supervisors: none, + co-supervisors: none, + industry-partner: none, + study-program: none, + override: none, + ) + let cover = deep-merge(cover-defaults, cover) + + let abstract-defaults = ( + keywords: none, + en: none, + de: none, + override: none, + ) + let abstract = deep-merge(abstract-defaults, abstract) + + let acknowledgements-defaults = ( + text: none, + override: none, + ) + let acknowledgements = deep-merge(acknowledgements-defaults, acknowledgements) + + let declaration-defaults = ( + location: none, + text: none, + override: none, + ) + + let declaration-of-originality = deep-merge(declaration-defaults, declaration-of-originality) + + let biblio-defaults = ( + file: none, + style: "ieee", + ) + let biblio = deep-merge(biblio-defaults, biblio) + + set enum(numbering: "1.i.1.i.") + + show: setup-language.with(language) + show: doc => { + if glossary-entries != none { + init-glossary(glossary-entries, term-links: true, doc) + } else { + doc + } + } + + show outline.entry.where( + level: 1, + ): it => { + set block(above: 0.5cm) + set text(font: tokens.font-families.headers, weight: "bold") + it + } + show: text-styles + show: page-header-styles + show: figure-styles + show: table-styles + show: code-styles + show ref: set text(fill: tokens.colour.main) + show link: set text(fill: tokens.colour.main) + show: page-border-styles.with(page-border) // Keep after table styles!! + + // context is neeeded for the tr() calls inside the page functions + context { + if (not hide-frontmatter) { + if (cover.override == none) { + title-page( + school: cover.school, + institute: cover.institute, + work_type: cover.work-type, + title: cover.title, + authors: cover.authors, + supervisors: cover.supervisors, + co-supervisors: cover.co-supervisors, + industry-partner: cover.industry-partner, + print-mode: print-mode, + ) + } else { + cover.override + } + + set page(numbering: "i") + counter(page).update(1) + + if (abstract.override == none) { + if (abstract.de == none) { + panic("ZHAW requires a German abstract even for English works.") + } + + abstract-page( + en: abstract.en, + de: abstract.de, + keywords: abstract.keywords, + authors: cover.authors, + title: cover.title, + ) + } else { + abstract.override + } + + if (acknowledgements.override == none) { + acknowledgements-page( + acknowledgements: acknowledgements.text, + supervisors: cover.supervisors, + co-supervisors: cover.co-supervisors, + authors: cover.authors, + ) + } else { + acknowledgements.override + } + + if (declaration-of-originality.override == none) { + declaration-of-originality-page( + declaration_of_originality: declaration-of-originality.text, + location: declaration-of-originality.location, + authors: cover.authors, + ) + } else { + declaration-of-originality.override + } + + outline(title: tr().table_of_contents, depth: 3) + } + + set page(numbering: "1") + counter(page).update(1) + + doc + + if glossary-entries != none { + styled-glossary + } + + if biblio.file != none { + bibliography( + biblio.file, + style: biblio.style, + ) + } + + if appendix != none { + set heading(numbering: none, supplement: tr().appendix) + counter(heading).update(1) + [ + #heading(level: 1)[#tr().appendix] + ] + + set heading(numbering: "1.1.1") + + appendix + } + } +} + + +#import "@preview/colorful-boxes:1.4.3": * + +#let callout(title, text) = colorbox( + title: title, + color: ( + fill: tokens.colour.lightest, + stroke: tokens.colour.main, + title: tokens.colour.main, + ), + radius: tokens.radius, + width: auto, + inset: 10pt, +)[ + #text +] diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/template/appendix.typ b/packages/preview/modern-zhaw-thesis/0.3.0/template/appendix.typ new file mode 100644 index 0000000000..d7fff876d1 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/template/appendix.typ @@ -0,0 +1,17 @@ +== AI Usage Declaration + +During the preparation of this thesis, AI tools were used for the following purposes: + +#figure( + table( + columns: (auto, auto), + [AI Tool], [Purpose], + [Gemini], [Text summarisation and formulation], + [GitHub Copilot], [Code completion and refactoring suggestions], + [Grammarly], [Grammar and spelling corrections in English text], + [Perplexity], [Literature search assistance], + ), + caption: "AI tools used during thesis preparation", +) + +All AI-generated content was thoroughly reviewed, validated, and modified as necessary. The core ideas, analysis, and conclusions are entirely the work of the authors. diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/template/biblio.bib b/packages/preview/modern-zhaw-thesis/0.3.0/template/biblio.bib new file mode 100644 index 0000000000..dadff0fe7f --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/template/biblio.bib @@ -0,0 +1,46 @@ +// Note: the Typst web app offers auto-sync from Zotero and Mendeley + +@article{chandola_2024, + author = {Chandola, Varun and Banerjee, Arindam and Kumar, Vipin}, + title = {Anomaly Detection: A Survey}, + journal = {ACM Computing Surveys}, + year = {2024}, + volume = {41}, + number = {3}, + pages = {1--58}, + doi = {10.1145/1541880.1541882}, +} + +@inproceedings{breunig2000lof, + author = {Breunig, Markus M. and Kriegel, Hans-Peter and Ng, Raymond T. and Sander, J{\"o}rg}, + title = {LOF: Identifying Density-Based Local Outliers}, + booktitle = {Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data}, + year = {2000}, + pages = {93--104}, + publisher = {ACM}, +} + +@article{liu2008isolation, + author = {Liu, Fei Tony and Ting, Kai Ming and Zhou, Zhi-Hua}, + title = {Isolation Forest}, + journal = {IEEE Transactions on Knowledge and Data Engineering}, + year = {2008}, + volume = {20}, + number = {12}, + pages = {1618--1630}, +} + +@book{goodfellow2016deep, + author = {Goodfellow, Ian and Bengio, Yoshua and Courville, Aaron}, + title = {Deep Learning}, + publisher = {MIT Press}, + year = {2016}, +} + +@inproceedings{garcia2021microservices, + author = {Garcia, Alessandro and others}, + title = {Monitoring and Anomaly Detection in Microservices: A Systematic Literature Review}, + booktitle = {IEEE International Conference on Software Architecture}, + year = {2021}, + pages = {201--212}, +} \ No newline at end of file diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/template/glossary.typ b/packages/preview/modern-zhaw-thesis/0.3.0/template/glossary.typ new file mode 100644 index 0000000000..f269ddb053 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/template/glossary.typ @@ -0,0 +1,48 @@ +#let myGlossary = ( + "deployment": ( + short: "deployment", + description: [The process of making a software system operational in a production environment. In distributed systems, deployment involves orchestrating multiple services, configuring network connections, and ensuring system availability during transitions.], + group: "Terms", + ), + "iot": ( + short: "IoT", + long: "Internet of Things", + description: [A network of physical devices embedded with sensors, software, and connectivity that enables them to collect and exchange data. IoT systems often generate massive amounts of monitoring data that require automated analysis. @breunig2000lof], + group: "Acronyms", + ), + "ML": ( + short: "ML", + long: "machine learning", + description: [A subset of artificial intelligence focused on building systems that learn from data. ML algorithms identify patterns and make predictions without being explicitly programmed for specific tasks.], + group: "Acronyms", + ), + "API": ( + short: "API", + long: "Application Programming Interface", + description: [A set of protocols and tools for building software applications. APIs define how software components should interact, enabling integration between different systems.], + group: "Acronyms", + ), + "microservice": ( + short: "microservice", + description: [An architectural style that structures an application as a collection of loosely coupled, independently deployable services. Each microservice focuses on a specific business capability and communicates with others through well-defined interfaces.], + group: "Terms", + ), + "ntp": ( + short: "NTP", + long: "Network Time Protocol", + description: [A networking protocol for clock synchronization between computer systems over packet-switched networks. NTP is critical for distributed systems to maintain consistent timestamps across multiple machines.], + group: "Acronyms", + ), + "pca": ( + short: "PCA", + long: "Principal Component Analysis", + description: [A dimensionality reduction technique that transforms high-dimensional data into a lower-dimensional space while preserving as much variance as possible. PCA identifies the principal components that capture the most important patterns in the data.], + group: "Acronyms", + ), + "roc": ( + short: "ROC", + long: "Receiver Operating Characteristic", + description: [A graphical plot that illustrates the diagnostic ability of a binary classifier as its discrimination threshold is varied. The ROC curve plots the true positive rate against the false positive rate at various threshold settings.], + group: "Acronyms", + ), +) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/template/main.typ b/packages/preview/modern-zhaw-thesis/0.3.0/template/main.typ new file mode 100644 index 0000000000..9defd68bb8 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/template/main.typ @@ -0,0 +1,164 @@ +// #import "@preview/modern-zhaw-thesis:0.2.0": * +#import "../lib.typ": * +#import "glossary.typ": myGlossary + +#show: zhaw-thesis.with( + language: languages.en, + cover: ( + school: "Engineering", + institute: "Institute of Computer Science", + work-type: "Bachelor thesis", + title: "ZHAW Thesis Template", + authors: ("Alice Müller", "Bob Schmidt"), + supervisors: ( + main: ("Alice Müller", "Dr. Eve Johnson"), + ), + study-program: "Computer Science B.Sc.", + ), + abstract: ( + keywords: ("template", "typst", "zhaw", "thesis"), + de: "Diese Vorlage dient als Demonstration der Funktionen von Typst und der Struktur einer Abschlussarbeit an der ZHAW. Sie umfasst Beispiele für Querverweise, ein Glossar, ein Literaturverzeichnis, mathematische Gleichungen und Codeausschnitte.", + en: "This template serves as a demonstration of Typst features and the structure of a thesis at ZHAW. It includes examples of cross-references, a glossary, bibliography, mathematical equations, and code snippets.", + ), + declaration-of-originality: ( + location: "Zürich", + ), + glossary-entries: myGlossary, + biblio: ( + file: read("biblio.bib", encoding: none), + style: "ieee", + ), + appendix: [#include "appendix.typ"], +) + +// ---------------------------------- +// Do not forget to IMPORT THE FONTS! Otherwise your document will LOOK WRONG. See: https://typst.app/universe/package/modern-zhaw-thesis +// ---------------------------------- + +// Below you can write your thesis. It's recommended to create separate files for each chapter and include them here using #include "path/to/chapter.typ". + += Introduction + +This document serves as a demo of both Typst features and the template itself. + +== What is Typst? + +#link("https://typst.app/", "Typst") is a modern typesetting system that combines the simplicity of Markdown with the power of LaTeX. It allows you to create beautiful documents with ease, keeping styling separate from content. + +== Is Typst better than Latex? + +That's subjective, but: +- it compiles much faster and provides real-time preview (no compilation delays) +- its syntax is much nicer to write and look at +- it has built-in support for features that require packages in LaTeX (bibliography, cross-references, glossary, code snippets, etc.) +- its web editor works better than Overleaf + += Features showcase + +== Glossary, references and labels + +Here we have a glossary reference: @iot:long. We can also use the acronym form: @iot:short. See the #link("https://typst.app/universe/package/glossy/", "Glossy") documentation for more details. + +Here we refer to a source from our bibliography @garcia2021microservices. The template uses IEEE style by default, but you can change it with the `bibliography-style` option in `zhaw-thesis.with()`. + +We can also refer to equations, such as @eq:weights, and figures, such as @tab:results. + +Finally, here we refer to a section: @intro. + +== Quotes, lists, and footnotes + +#quote(attribution: [Alan Kay, keynote address])[The best way to predict the future is to invent it.] + ++ Plan the structure of each chapter ++ Write and revise the main text + + Draft each section in a separate file and `#include` it from `main.typ` + + Keep figures and tables near their first reference + + Prefer vector graphics (SVG) for diagrams + + Export raster images at sufficient resolution for print ++ Proofread the bibliography and front matter + +Here is a footnote.#footnote[ + Footnote text is set at the bottom of the page; numbering restarts each page by default unless you change `footnote` rules globally. +] + +== Maths + +$ + f(x) & = sigma(W_L sigma(W_(L-1) dots sigma(W_1 x + b_1) dots + b_(L-1)) + b_L) \ + & = (sigma dot W_L dot sigma dot W_(L-1) dot dots dot sigma dot W_1)(x, b_1, dots, b_L) +$ + +The equation above (@eq:weights) shows the forward pass of a neural network with $L$ layers, weights $W_i$, biases $b_i$, and activation function $sigma$. + +Equations can also be inline: $V_k^* (s) = max_a sum_(s') underbrace(P(s' | s, a), "transition proba") lr((underbrace(r_(t+1), "reward s" arrow "s'") + gamma underbrace(V_(k-1)^* (s'), "precalc. val of s'")), size: #40%)$. + +== Figures + +Figures allow to wrap images, tables, code snippets, and more in captions and labels that you can refer to. + +=== Tables + +#figure( + table( + columns: 3, + align: (left, center, right), + [Metric], [Best Value], [Interpretation], + [Precision], [1.0], [All predictions are correct], + [Recall], [1.0], [All targets are found], + [$F_1$ Score], [1.0], [Perfect balance], + [False Positive Rate], [0.0], [No false alarms], + ), + caption: "Table with custom alignment", +) + +#figure( + { + show table.cell.where(y: 5): strong + table( + columns: (2fr, 1fr, 1fr, 1fr, 1fr), + align: (left, center, center, center, center), + [Approach], [Speed], [Beauty], [Ease], [Overall], + [Word], [0.2], [0.3], [0.7], [0.4], + [LaTeX], [0.3], [0.9], [0.3], [0.5], + [Markdown], [0.9], [0.4], [0.9], [0.7], + [Google Docs], [0.7], [0.2], [0.8], [0.6], + [Typst], [0.95], [0.98], [0.92], [0.95], + ) + }, + caption: "Table that spans full width", +) + +=== Code + +@code:detection below shows how code snippets look like. This is handled by the #link("https://typst.app/universe/package/codly/", "Codly") package, which provides many customisation options. + +#figure( + ```python + import numpy as np + from sklearn.preprocessing import StandardScaler + from sklearn.ensemble import IsolationForest + + class Model: + def __init__(self, temp=1): + self.scaler = StandardScaler() + self.excitement = IsolationForest( + temp=temp, + random_state=42 + ) + ```, + caption: "Sample code demonstrating syntax highlighting and professional formatting", +) + +#callout( + "In summary", +)[ + This template showcases: + + + Cross-references to sections, equations, tables, and figures + + Glossary integration with short (@ML:short) and long (@ntp:long) forms + + Bibliography citations @garcia2021microservices + + Mathematical equations with proper labeling + + Code listings with syntax highlighting + + Professional tables and figures + + Block quotes, nested numbered lists, and footnotes +] diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/thumbnail.png b/packages/preview/modern-zhaw-thesis/0.3.0/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..a4484ad457edce0cf69ccf89bf7dab980c07b285 GIT binary patch literal 56361 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"] +license = "MIT-0" +description = "An unofficial template for ZHAW academic works, adapted from the official branding and guidelines." +repository = "https://github.com/stanlrt/typst-zhaw-thesis" +keywords = ["thesis", "ZHAW", "Zürcher Hochschule für Angewandte Wissenschaften", "Zürich", "academic"] +categories = ["thesis", "report", "paper"] +compiler = "0.14.0" +exclude = [ + ".github", + "docs", + "scripts", + "tests", + ".typstignore", + "Justfile", + "showcase.pdf", +] + +[template] +path = "template/" # all files inside will be copied into the user's new project directory +entrypoint = "main.typ" # compilation target +thumbnail = "thumbnail.png" + +# [tool.mytool] +# foo = "bar" From 91131e75fb15a792c1431a21367796e2c308b690 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Wed, 15 Apr 2026 21:17:36 +0200 Subject: [PATCH 02/30] feat: none handling for options --- .../modern-zhaw-thesis/0.3.0/CHANGELOG.md | 6 ++ .../modern-zhaw-thesis/0.3.0/README.md | 10 +- .../0.3.0/src/frontmatter.typ | 91 +++++++++++++++++++ .../0.3.0/src/translations.typ | 2 +- .../modern-zhaw-thesis/0.3.0/src/utils.typ | 15 +++ .../0.3.0/src/zhaw-thesis.typ | 89 ++++++------------ .../0.3.0/template/glossary.typ | 2 +- .../0.3.0/template/main.typ | 3 +- .../modern-zhaw-thesis/0.3.0/typst.toml | 2 +- 9 files changed, 149 insertions(+), 71 deletions(-) create mode 100644 packages/preview/modern-zhaw-thesis/0.3.0/src/frontmatter.typ diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md b/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md index b61a319583..f62887c2b5 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md +++ b/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.3.0 + +- Allow setting overrideable options to `none` +- Fixed edge cases when some options were set to `none` and caused errors +- Fixed declaration of originality appendix ref + ## 0.2.0 - Added custom quote styling diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/README.md b/packages/preview/modern-zhaw-thesis/0.3.0/README.md index 28c37cbb9e..08c33adcd0 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/README.md +++ b/packages/preview/modern-zhaw-thesis/0.3.0/README.md @@ -14,7 +14,7 @@ ### Web-app (easiest) -2. [Create a project using the template](https://typst.app/app?template=modern-zhaw-thesis&version=0.2.0) +2. [Create a project using the template](https://typst.app/app?template=modern-zhaw-thesis&version=0.3.0) 3. In the left sidebar, under "Files", create a folder called `fonts` 4. Drag and drop the files into this `fonts` directory @@ -22,16 +22,16 @@ 2. Install Typst from https://typst.app/open-source/ 3. Make the downloaded fonts accessible to the compiler (https://typst.app/docs/reference/text/text/#parameters-font) -4. Run `typst init @preview/modern-zhaw-thesis:0.2.0` in your project directory +4. Run `typst init @preview/modern-zhaw-thesis:0.3.0` in your project directory ## All configuration options Below is the complete list of configuration options, including default values and explanations. Most are optional. ```typ -#import "@preview/modern-zhaw-thesis:0.2.0": zhaw-thesis, languages +#import "@preview/modern-zhaw-thesis:0.3.0": zhaw-thesis, languages -// Note: `override` options accept Typst files, e.g. `override: [#include: "my-override.typ"]` +// Note: `override` options accept Typst files, e.g. `override: [#include: "my-override.typ"]`, and `none` #show: zhaw-thesis.with( language: languages.de, // Document language @@ -86,7 +86,7 @@ Below is the complete list of configuration options, including default values an The package exports the following symbols for you to use if needed: ```typ -#import "@preview/modern-zhaw-thesis:0.2.0": ( +#import "@preview/modern-zhaw-thesis:0.3.0": ( zhaw-thesis, // Main template function, see docu above callout, // Coloured callout box to highlight important text diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/frontmatter.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/frontmatter.typ new file mode 100644 index 0000000000..07b1c77750 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/frontmatter.typ @@ -0,0 +1,91 @@ +#import "pages/title.typ": title-page +#import "pages/abstract.typ": abstract-page +#import "pages/acknowledgements.typ": acknowledgements-page +#import "pages/originality.typ": declaration-of-originality-page + +#let zhaw-cover-page(cover, print-mode: false) = { + if cover == none { + return + } + if cover.override != none { + cover.override + } else { + title-page( + school: cover.school, + institute: cover.institute, + work_type: cover.work-type, + title: cover.title, + authors: cover.authors, + supervisors: cover.supervisors, + co-supervisors: cover.co-supervisors, + industry-partner: cover.industry-partner, + print-mode: print-mode, + ) + } +} + +#let zhaw-abstract-section(abstract, cover) = { + if abstract == none { + return + } + if abstract.override != none { + abstract.override + } else { + if cover == none { + panic( + "`cover` metadata is required when the abstract section is included. Remove `abstract: none` or provide a `cover` dictionary.", + ) + } + if abstract.de == none { + panic("ZHAW requires a German abstract even for English works.") + } + abstract-page( + en: abstract.en, + de: abstract.de, + keywords: abstract.keywords, + authors: cover.authors, + title: cover.title, + ) + } +} + +#let zhaw-acknowledgements-section(acknowledgements, cover) = { + if acknowledgements == none { + return + } + if acknowledgements.override != none { + acknowledgements.override + } else { + if cover == none { + panic( + "`cover` metadata is required when the acknowledgements section is included. Remove `acknowledgements: none` or provide a `cover` dictionary.", + ) + } + acknowledgements-page( + acknowledgements: acknowledgements.text, + supervisors: cover.supervisors, + co-supervisors: cover.co-supervisors, + authors: cover.authors, + ) + } +} + +#let zhaw-declaration-section(declaration-of-originality, cover) = { + if declaration-of-originality == none { + return + } + if declaration-of-originality.override != none { + declaration-of-originality.override + } else { + if cover == none { + panic( + "`cover` metadata is required when the declaration of originality section is included. Remove `declaration-of-originality: none` or provide a `cover` dictionary.", + ) + } + declaration-of-originality-page( + declaration_of_originality: declaration-of-originality.text, + location: declaration-of-originality.location, + authors: cover.authors, + ) + } +} diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ index 2e7661efbb..63b657f090 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ @@ -42,7 +42,7 @@ Der/die unterzeichnende Studierende #erklaert, dass alle zitierten Quellen (auch Internetseiten) im Text oder Anhang korrekt nachgewiesen sind, d.h. dass die Projektarbeit keine Plagiate enthält, also keine Teile, die teilweise oder vollständig aus einem fremden Text oder einer fremden Arbeit unter Vorgabe der eigenen Urheberschaft bzw. ohne Quellenangabe übernommen worden sind. - KI-Systeme wurden im Rahmen dieser Arbeit wie in @ai angegeben verwendet. + KI-Systeme wurden im Rahmen dieser Arbeit wie in @appendix:ai angegeben verwendet. Bei Verfehlungen aller Art treten die Paragraphen 39 und 40 (Unredlichkeit und Verfahren bei Unredlichkeit) der ZHAW Prüfungsordnung sowie die Bestimmungen der Disziplinarmassnahmen der Hochschulordnung in Kraft. ] diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ index 603e8402a5..ad09fa3188 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ @@ -82,7 +82,13 @@ } +// When `override` is `none`, the whole optional block is omitted (`none`), not replaced by defaults. +// For settings where `none` should mean "fall back to defaults" (e.g. bibliography), use `deep-merge-or-default`. #let deep-merge(base, override) = { + if override == none { + return none + } + let result = (:) // Copy all keys from base @@ -107,6 +113,15 @@ result } +#let deep-merge-or-default(base, override) = { + let merged = deep-merge(base, override) + if merged == none { + base + } else { + merged + } +} + #let title-case(string) = { return str(string).replace( regex("[A-Za-z]+('[A-Za-z]+)?"), diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ index cb3198d1c6..3cd9ae8f8d 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ @@ -1,9 +1,8 @@ -#import "utils.typ": deep-merge +#import "utils.typ": deep-merge, deep-merge-or-default +#import "frontmatter.typ": ( + zhaw-abstract-section, zhaw-acknowledgements-section, zhaw-cover-page, zhaw-declaration-section, +) #import "styling/tokens.typ": tokens -#import "pages/title.typ": title-page -#import "pages/abstract.typ": abstract-page -#import "pages/acknowledgements.typ": acknowledgements-page -#import "pages/originality.typ": declaration-of-originality-page #import "styling/math-and-code.typ": code-styles #import "styling/glossary.typ": init-glossary, styled-glossary #import "styling/text.typ": text-styles @@ -43,10 +42,8 @@ override: none, ), glossary-entries: none, - biblio: ( - file: none, - style: "ieee", - ), + // Default `none` so callers may pass `biblio: none` (same as omitting: IEEE, no .bib file). + biblio: none, appendix: none, page-border: true, hide-frontmatter: false, @@ -94,7 +91,24 @@ file: none, style: "ieee", ) - let biblio = deep-merge(biblio-defaults, biblio) + let biblio = deep-merge-or-default(biblio-defaults, biblio) + + let appendix-removed-but-declaration-of-originality-references-it = ( + appendix == none + and not hide-frontmatter + and declaration-of-originality != none + and declaration-of-originality.override == none + and declaration-of-originality.text == none + and declaration-of-originality.location == none + ) + if ( + appendix-removed-but-declaration-of-originality-references-it + ) { + panic( + "The default declaration of originality text references @appendix:ai (AI disclosure). " + + "With `appendix: none`, that label does not exist. Add an appendix or override the declaration of originality.", + ) + } set enum(numbering: "1.i.1.i.") @@ -126,61 +140,14 @@ // context is neeeded for the tr() calls inside the page functions context { if (not hide-frontmatter) { - if (cover.override == none) { - title-page( - school: cover.school, - institute: cover.institute, - work_type: cover.work-type, - title: cover.title, - authors: cover.authors, - supervisors: cover.supervisors, - co-supervisors: cover.co-supervisors, - industry-partner: cover.industry-partner, - print-mode: print-mode, - ) - } else { - cover.override - } + zhaw-cover-page(cover, print-mode: print-mode) set page(numbering: "i") counter(page).update(1) - if (abstract.override == none) { - if (abstract.de == none) { - panic("ZHAW requires a German abstract even for English works.") - } - - abstract-page( - en: abstract.en, - de: abstract.de, - keywords: abstract.keywords, - authors: cover.authors, - title: cover.title, - ) - } else { - abstract.override - } - - if (acknowledgements.override == none) { - acknowledgements-page( - acknowledgements: acknowledgements.text, - supervisors: cover.supervisors, - co-supervisors: cover.co-supervisors, - authors: cover.authors, - ) - } else { - acknowledgements.override - } - - if (declaration-of-originality.override == none) { - declaration-of-originality-page( - declaration_of_originality: declaration-of-originality.text, - location: declaration-of-originality.location, - authors: cover.authors, - ) - } else { - declaration-of-originality.override - } + zhaw-abstract-section(abstract, cover) + zhaw-acknowledgements-section(acknowledgements, cover) + zhaw-declaration-section(declaration-of-originality, cover) outline(title: tr().table_of_contents, depth: 3) } diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/template/glossary.typ b/packages/preview/modern-zhaw-thesis/0.3.0/template/glossary.typ index f269ddb053..64d4682e44 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/template/glossary.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/template/glossary.typ @@ -7,7 +7,7 @@ "iot": ( short: "IoT", long: "Internet of Things", - description: [A network of physical devices embedded with sensors, software, and connectivity that enables them to collect and exchange data. IoT systems often generate massive amounts of monitoring data that require automated analysis. @breunig2000lof], + description: [A network of physical devices embedded with sensors, software, and connectivity that enables them to collect and exchange data. IoT systems often generate massive amounts of monitoring data that require automated analysis.], group: "Acronyms", ), "ML": ( diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/template/main.typ b/packages/preview/modern-zhaw-thesis/0.3.0/template/main.typ index 9defd68bb8..a5b24b4c85 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/template/main.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/template/main.typ @@ -1,5 +1,4 @@ -// #import "@preview/modern-zhaw-thesis:0.2.0": * -#import "../lib.typ": * +#import "@preview/modern-zhaw-thesis:0.3.0": * #import "glossary.typ": myGlossary #show: zhaw-thesis.with( diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/typst.toml b/packages/preview/modern-zhaw-thesis/0.3.0/typst.toml index 32a666138c..613cd79b3e 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/typst.toml +++ b/packages/preview/modern-zhaw-thesis/0.3.0/typst.toml @@ -2,7 +2,7 @@ [package] name = "modern-zhaw-thesis" -version = "0.2.0" +version = "0.3.0" entrypoint = "lib.typ" authors = ["Stanislas Laurent "] license = "MIT-0" From 7a223d0eb37c750d07c9fe7b5c673e59590f2ea6 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Wed, 15 Apr 2026 21:23:48 +0200 Subject: [PATCH 03/30] fix: aknow supervisors bug --- .../modern-zhaw-thesis/0.3.0/CHANGELOG.md | 1 + .../0.3.0/src/pages/acknowledgements.typ | 4 ++-- .../modern-zhaw-thesis/0.3.0/src/utils.typ | 20 +++++++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md b/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md index f62887c2b5..13f0a79f3c 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md +++ b/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md @@ -5,6 +5,7 @@ - Allow setting overrideable options to `none` - Fixed edge cases when some options were set to `none` and caused errors - Fixed declaration of originality appendix ref +- Fixed bug displaying supervisor names in acknowledgements page ## 0.2.0 diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/acknowledgements.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/acknowledgements.typ index 78a43cc9e9..d78f6faac8 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/acknowledgements.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/acknowledgements.typ @@ -1,5 +1,5 @@ #import "../styling/tokens.typ": tokens -#import "../utils.typ": centered, ensure-array +#import "../utils.typ": centered, ensure-array, flatten-supervisor-names #import "@preview/tieflang:0.1.0": tr #let acknowledgements-page( @@ -9,7 +9,7 @@ authors: none, ) = { let authors = ensure-array(authors) - let supervisors = ensure-array(supervisors) + let supervisors = flatten-supervisor-names(supervisors) let co-supervisors = ensure-array(co-supervisors) let count = supervisors.len() + co-supervisors.len() diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ index ad09fa3188..f53cd58bcb 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ @@ -71,6 +71,26 @@ } } +// Same supervisor shapes as on the title page: plain array, or dict with main / secondary / external (each string or array). +#let flatten-supervisor-names(supervisors) = { + if supervisors == none { + () + } else if type(supervisors) == dictionary { + let names = () + for key in ("main", "secondary", "external") { + if key in supervisors { + let value = supervisors.at(key) + if value != none { + names = names + ensure-array(value) + } + } + } + names + } else { + ensure-array(supervisors) + } +} + #let centered(title, content) = { pagebreak() set align(center + horizon) From 8f7df12bc271ee0abe969ccc7c4f9c7119daff10 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Wed, 15 Apr 2026 21:27:13 +0200 Subject: [PATCH 04/30] fix: minor permalink warning --- packages/preview/modern-zhaw-thesis/0.3.0/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/README.md b/packages/preview/modern-zhaw-thesis/0.3.0/README.md index 08c33adcd0..26eefbaeef 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/README.md +++ b/packages/preview/modern-zhaw-thesis/0.3.0/README.md @@ -110,7 +110,7 @@ You can find instructions about how to use all its options directly on the [pack ### Code blocks The template uses the [Codly package](https://typst.app/universe/package/codly/) to style code snippets. -You can find instructions about how to use all its options in [its PDF manual](https://raw.githubusercontent.com/Dherse/codly/main/docs.pdf). +You can find instructions about how to use all its options in [its PDF manual](https://github.com/Dherse/codly/blob/ece8099b46cd899ea99a835ebd78c57ef2dd0b74/docs.pdf). ### Multi-linguism From 0e31f073dc5e28a4410f1bb1a461b8f03bee267c Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sat, 18 Apr 2026 00:02:58 +0200 Subject: [PATCH 05/30] fix: https://github.com/typst/packages/pull/4591#discussion_r3088897703 Made-with: Cursor --- packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ index 3cd9ae8f8d..57bf3d24bb 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ @@ -137,7 +137,7 @@ show link: set text(fill: tokens.colour.main) show: page-border-styles.with(page-border) // Keep after table styles!! - // context is neeeded for the tr() calls inside the page functions + // context is needed for the tr() calls inside the page functions context { if (not hide-frontmatter) { zhaw-cover-page(cover, print-mode: print-mode) From f7e0910d8cb69be39df0ce005363b038d201e400 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sat, 18 Apr 2026 00:03:05 +0200 Subject: [PATCH 06/30] fix: https://github.com/typst/packages/pull/4591#discussion_r3088897826 Made-with: Cursor --- packages/preview/modern-zhaw-thesis/0.3.0/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/README.md b/packages/preview/modern-zhaw-thesis/0.3.0/README.md index 26eefbaeef..64a051f86f 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/README.md +++ b/packages/preview/modern-zhaw-thesis/0.3.0/README.md @@ -31,7 +31,7 @@ Below is the complete list of configuration options, including default values an ```typ #import "@preview/modern-zhaw-thesis:0.3.0": zhaw-thesis, languages -// Note: `override` options accept Typst files, e.g. `override: [#include: "my-override.typ"]`, and `none` +// Note: `override` options accept Typst files, e.g. `override: [#include "my-override.typ"]`, and `none` #show: zhaw-thesis.with( language: languages.de, // Document language @@ -74,7 +74,7 @@ Below is the complete list of configuration options, including default values an ), glossary-entries: none, // Variable containing glossary entries (see template) - appendix: none, // Appendix Typst file, e.g. [#include: "appendix.typ"] + appendix: none, // Appendix Typst file, e.g. [#include "appendix.typ"] page-border: true, // Enable/disable page border hide-frontmatter: false, // Hide all content before the 1st chapter (to focus on writing) print-mode: false, // Gives a white background to the cover page to reduce ink usage From 34d6e550fbfcfb786c9b9d2ba6c05f56fcab6104 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sat, 18 Apr 2026 00:03:06 +0200 Subject: [PATCH 07/30] fix: https://github.com/typst/packages/pull/4591#discussion_r3088897929 Made-with: Cursor --- packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ index f53cd58bcb..b25ccfd962 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ @@ -10,7 +10,7 @@ if-not: false, ) = { if it == none { - panic("Parameter \"it\" of \"show_if_neighbour_within_distance\" must be defined.") + panic("Parameter \"it\" of \"show_if_heading_within_distance\" must be defined.") } // 1. Find neighbouring headings @@ -22,7 +22,7 @@ } else if look == "after" { neighbours = query(sel.after(here(), inclusive: false)) } else { - panic("Parameter \"look\" of \"show_if_neighbour_within_distance\" must have value \"before\" or \"after\".") + panic("Parameter \"look\" of \"show_if_heading_within_distance\" must have value \"before\" or \"after\".") } if neighbours.len() > 0 { From 478d049488def3fb5ae8104b9e45cc808885cf68 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sat, 18 Apr 2026 00:03:08 +0200 Subject: [PATCH 08/30] fix: https://github.com/typst/packages/pull/4591#discussion_r3088897904 Also addresses https://github.com/typst/packages/pull/4591#discussion_r3088898033 and https://github.com/typst/packages/pull/4591#discussion_r3088898127 Made-with: Cursor --- .../preview/modern-zhaw-thesis/0.3.0/src/frontmatter.typ | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/frontmatter.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/frontmatter.typ index 07b1c77750..a9b3a0144e 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/frontmatter.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/frontmatter.typ @@ -33,7 +33,7 @@ } else { if cover == none { panic( - "`cover` metadata is required when the abstract section is included. Remove `abstract: none` or provide a `cover` dictionary.", + "`cover` metadata is required when the abstract section is included. Set `abstract: none` to omit the section, or provide a `cover` dictionary.", ) } if abstract.de == none { @@ -58,7 +58,7 @@ } else { if cover == none { panic( - "`cover` metadata is required when the acknowledgements section is included. Remove `acknowledgements: none` or provide a `cover` dictionary.", + "`cover` metadata is required when the acknowledgements section is included. Set `acknowledgements: none` to omit the section, or provide a `cover` dictionary.", ) } acknowledgements-page( @@ -79,7 +79,7 @@ } else { if cover == none { panic( - "`cover` metadata is required when the declaration of originality section is included. Remove `declaration-of-originality: none` or provide a `cover` dictionary.", + "`cover` metadata is required when the declaration of originality section is included. Set `declaration-of-originality: none` to omit the section, or provide a `cover` dictionary.", ) } declaration-of-originality-page( From c2ccc804a903b959826bb34b9e64b2fba8f7833b Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sat, 18 Apr 2026 00:03:09 +0200 Subject: [PATCH 09/30] fix: https://github.com/typst/packages/pull/4591#discussion_r3088897843 Made-with: Cursor --- .../modern-zhaw-thesis/0.3.0/src/pages/acknowledgements.typ | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/acknowledgements.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/acknowledgements.typ index d78f6faac8..1742b211d9 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/acknowledgements.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/acknowledgements.typ @@ -1,4 +1,3 @@ -#import "../styling/tokens.typ": tokens #import "../utils.typ": centered, ensure-array, flatten-supervisor-names #import "@preview/tieflang:0.1.0": tr From a6469df9fa01fb70895e236b9de1f99c4610b79b Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sat, 18 Apr 2026 00:03:10 +0200 Subject: [PATCH 10/30] fix: https://github.com/typst/packages/pull/4591#discussion_r3088897869 Made-with: Cursor --- packages/preview/modern-zhaw-thesis/0.3.0/src/pages/title.typ | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/title.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/title.typ index 39ac134d22..ee5c2fb1fe 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/title.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/title.typ @@ -5,7 +5,6 @@ #let title-page( school: none, - institute-short: none, institute: none, work_type: none, title: none, From 44f683e3c2d782ccd8c5c5e092bb27f414324a52 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sat, 18 Apr 2026 00:03:11 +0200 Subject: [PATCH 11/30] fix: https://github.com/typst/packages/pull/4591#discussion_r3088897982 Made-with: Cursor --- .../modern-zhaw-thesis/0.3.0/src/pages/originality.typ | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/originality.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/originality.typ index 7b10a118dc..c0c3e5d7f4 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/originality.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/originality.typ @@ -1,7 +1,5 @@ -#import "../styling/tokens.typ": tokens -#import "../utils.typ": centered, today +#import "../utils.typ": centered, today, ensure-array #import "@preview/tieflang:0.1.0": tr -#import "../utils.typ": ensure-array #let declaration-of-originality-page( declaration_of_originality: none, From ded4cfc3c7bd8a3954e90dd4fdba3c5503b61883 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sat, 18 Apr 2026 00:03:12 +0200 Subject: [PATCH 12/30] fix: https://github.com/typst/packages/pull/4591#discussion_r3088898060 Made-with: Cursor --- packages/preview/modern-zhaw-thesis/0.3.0/src/pages/abstract.typ | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/abstract.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/abstract.typ index a40dec1d63..c467ef7df1 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/abstract.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/pages/abstract.typ @@ -1,4 +1,3 @@ -#import "../styling/tokens.typ": tokens #import "../utils.typ": centered, ensure-array, today #import "@preview/tieflang:0.1.0": pop-lang, push-lang, tr From 6f44c4b38945348b4c605ae05f064ea4d79754ed Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sat, 18 Apr 2026 00:03:13 +0200 Subject: [PATCH 13/30] fix: https://github.com/typst/packages/pull/4591#discussion_r3088898011 Made-with: Cursor --- packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ index 63b657f090..d37ccf0869 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ @@ -84,7 +84,7 @@ ), "and": [and], pronoun: plural => if plural { "we" } else { "I" }, - have: plural => if plural { "have" } else { "has" }, + have: plural => if plural { "have" } else { "have" }, be: plural => if plural { "are" } else { "am" }, verb_suffix_first: plural => if plural { "" } else { "s" }, declaration_of_originality: ( From 7126b7592e1f2ed1c7a8286061969b0c8eafa5a1 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sat, 18 Apr 2026 00:27:41 +0200 Subject: [PATCH 14/30] fix: copilot comments --- .../modern-zhaw-thesis/0.3.0/CHANGELOG.md | 1 + .../0.3.0/src/styling/page-header.typ | 3 ++- .../0.3.0/src/translations.typ | 8 ++++++-- .../0.3.0/src/zhaw-thesis.typ | 17 ----------------- 4 files changed, 9 insertions(+), 20 deletions(-) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md b/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md index 13f0a79f3c..168a9207ba 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md +++ b/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md @@ -6,6 +6,7 @@ - Fixed edge cases when some options were set to `none` and caused errors - Fixed declaration of originality appendix ref - Fixed bug displaying supervisor names in acknowledgements page +- Fixed localisation of "Chapter" label in page header ## 0.2.0 diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/page-header.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/page-header.typ index 72bbb33056..2ab1fcbc43 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/page-header.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/page-header.typ @@ -1,4 +1,5 @@ #import "tokens.typ": tokens +#import "@preview/tieflang:0.1.0": tr #let page-header-styles(doc) = { set page( @@ -29,7 +30,7 @@ let chapter-title = current.body let chapter-number = counter(heading.where(level: 1)).display() - let chapter-number-text = [Chapter #chapter-number] + let chapter-number-text = [#tr().chapter #chapter-number] if current.numbering != none { let (left-text, right-text) = if calc.odd(page-number) { diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ index d37ccf0869..4d22365df3 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/translations.typ @@ -42,7 +42,9 @@ Der/die unterzeichnende Studierende #erklaert, dass alle zitierten Quellen (auch Internetseiten) im Text oder Anhang korrekt nachgewiesen sind, d.h. dass die Projektarbeit keine Plagiate enthält, also keine Teile, die teilweise oder vollständig aus einem fremden Text oder einer fremden Arbeit unter Vorgabe der eigenen Urheberschaft bzw. ohne Quellenangabe übernommen worden sind. - KI-Systeme wurden im Rahmen dieser Arbeit wie in @appendix:ai angegeben verwendet. + #context if query(label("appendix:ai")).len() > 0 [ + KI-Systeme wurden im Rahmen dieser Arbeit wie in @appendix:ai angegeben verwendet. + ] Bei Verfehlungen aller Art treten die Paragraphen 39 und 40 (Unredlichkeit und Verfahren bei Unredlichkeit) der ZHAW Prüfungsordnung sowie die Bestimmungen der Disziplinarmassnahmen der Hochschulordnung in Kraft. ] @@ -100,7 +102,9 @@ The #student #declare that all sources in the text (including Internet pages) and appendices have been correctly disclosed. This means that there has been no plagiarism, i.e. no sections of the project work have been partially or wholly taken from other texts and represented as the student's own work or included without being correctly referenced. - AI systems were used in the process of this work, as specified in @appendix:ai. + #context if query(label("appendix:ai")).len() > 0 [ + AI systems were used in the process of this work, as specified in @appendix:ai. + ] Any misconduct will be dealt with according to paragraphs 39 and 40 of the General Academic Regulations for Bachelor's and Master's Degree courses at the Zurich University of Applied Sciences (Rahmenprüfungsordnung ZHAW (RPO)) and subject to the provisions for disciplinary action stipulated in the University regulations. ] diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ index 57bf3d24bb..4f4f4768e4 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/zhaw-thesis.typ @@ -93,23 +93,6 @@ ) let biblio = deep-merge-or-default(biblio-defaults, biblio) - let appendix-removed-but-declaration-of-originality-references-it = ( - appendix == none - and not hide-frontmatter - and declaration-of-originality != none - and declaration-of-originality.override == none - and declaration-of-originality.text == none - and declaration-of-originality.location == none - ) - if ( - appendix-removed-but-declaration-of-originality-references-it - ) { - panic( - "The default declaration of originality text references @appendix:ai (AI disclosure). " - + "With `appendix: none`, that label does not exist. Add an appendix or override the declaration of originality.", - ) - } - set enum(numbering: "1.i.1.i.") show: setup-language.with(language) From 4569e2a500c9ed065d11d910d17b05698cde640b Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sat, 18 Apr 2026 19:46:37 +0200 Subject: [PATCH 15/30] fix: long H1s overlapping with next section --- .../modern-zhaw-thesis/0.3.0/CHANGELOG.md | 1 + .../0.3.0/src/styling/text.typ | 15 ++++------- .../modern-zhaw-thesis/0.3.0/src/utils.typ | 26 +++++++++++++++++++ 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md b/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md index 168a9207ba..a4dadb20a0 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md +++ b/packages/preview/modern-zhaw-thesis/0.3.0/CHANGELOG.md @@ -7,6 +7,7 @@ - Fixed declaration of originality appendix ref - Fixed bug displaying supervisor names in acknowledgements page - Fixed localisation of "Chapter" label in page header +- Fixed long H1s overlapping with next section ## 0.2.0 diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/text.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/text.typ index d80cfbcf07..4c080e7017 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/text.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/styling/text.typ @@ -1,5 +1,5 @@ #import "tokens.typ": tokens -#import "../utils.typ": show_if_heading_within_distance +#import "../utils.typ": show_if_heading_within_distance, v-after-numbered-chapter-heading #let text-styles(doc) = { set par( @@ -61,18 +61,13 @@ grid( columns: (3cm, 1fr), - rows: 3cm, + rows: auto, gutter: -0.8cm, - place(dx: -0.5em, text(fill: tokens.colour.main, size: 96pt, heading_number)), + align: top + start, + block(width: 100%, pad(left: -0.5em, text(fill: tokens.colour.main, size: 96pt, heading_number))), text(fill: tokens.colour.main, size: tokens.font-sizes.h1, it.body), ) - show_if_heading_within_distance( - it: it, - distance: 10cm, - look: "after", - to-show: v(1cm), - if-not: true, - ) + v-after-numbered-chapter-heading(it) } } diff --git a/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ b/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ index b25ccfd962..83fbcb2cd7 100644 --- a/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ +++ b/packages/preview/modern-zhaw-thesis/0.3.0/src/utils.typ @@ -56,6 +56,32 @@ return none } +#let v-after-numbered-chapter-heading(it) = context { + if it == none { + panic("Parameter \"it\" of \"v-after-numbered-chapter-heading\" must be defined.") + } + let loc = it.location() + let heads-after = query(selector(heading).after(loc, inclusive: false)) + let pars-after = query(selector(par).after(loc, inclusive: false)) + let next-h = if heads-after.len() > 0 { heads-after.first() } + let next-p = if pars-after.len() > 0 { pars-after.first() } + + if next-h == none { + v(1cm) + } else if next-p == none { + v(0.5cm) + } else { + let h-pos = next-h.location().position() + let p-pos = next-p.location().position() + let heading-first = h-pos.page < p-pos.page or (h-pos.page == p-pos.page and h-pos.y < p-pos.y) + if heading-first { + v(0.5cm) + } else { + v(1cm) + } + } +} + #let today() = context { let current-date = datetime.today() [#custom-date-format(current-date, pattern: "long", lang: text.lang)] From c672e53d4eaae478711391c6dce45b553356f8c7 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Wed, 22 Apr 2026 16:33:28 +0200 Subject: [PATCH 16/30] feat(0.4.0): init --- .../modern-zhaw-thesis/0.4.0/CHANGELOG.md | 33 + .../preview/modern-zhaw-thesis/0.4.0/LICENSE | 17 + .../modern-zhaw-thesis/0.4.0/README.md | 144 ++++ .../preview/modern-zhaw-thesis/0.4.0/lib.typ | 4 + .../modern-zhaw-thesis/0.4.0/showcase.pdf | Bin 0 -> 205468 bytes .../0.4.0/src/assets/zhaw_logo.png | Bin 0 -> 60462 bytes .../0.4.0/src/assets/zhaw_sw_pos.jpg | Bin 0 -> 95873 bytes .../0.4.0/src/frontmatter.typ | 91 ++ .../0.4.0/src/pages/abstract.typ | 50 ++ .../0.4.0/src/pages/acknowledgements.typ | 26 + .../0.4.0/src/pages/originality.typ | 43 + .../0.4.0/src/pages/title.typ | 159 ++++ .../0.4.0/src/patches/glossy/lib.typ | 2 + .../0.4.0/src/patches/glossy/src/gloss.typ | 816 ++++++++++++++++++ .../0.4.0/src/patches/glossy/src/schemas.typ | 25 + .../0.4.0/src/patches/glossy/src/themes.typ | 6 + .../patches/glossy/src/themes/academic.typ | 47 + .../src/patches/glossy/src/themes/basic.typ | 68 ++ .../glossy/src/themes/chicago-index.typ | 45 + .../src/patches/glossy/src/themes/compact.typ | 89 ++ .../src/patches/glossy/src/themes/table.typ | 36 + .../src/patches/glossy/src/themes/twocol.typ | 74 ++ .../0.4.0/src/patches/glossy/src/utils.typ | 272 ++++++ .../0.4.0/src/styling/figures.typ | 20 + .../0.4.0/src/styling/glossary.typ | 52 ++ .../0.4.0/src/styling/math-and-code.typ | 16 + .../0.4.0/src/styling/page-border.typ | 19 + .../0.4.0/src/styling/page-header.typ | 52 ++ .../0.4.0/src/styling/table.typ | 31 + .../0.4.0/src/styling/text.typ | 115 +++ .../0.4.0/src/styling/tokens.typ | 21 + .../0.4.0/src/translations.typ | 144 ++++ .../modern-zhaw-thesis/0.4.0/src/utils.typ | 176 ++++ .../0.4.0/src/zhaw-thesis.typ | 183 ++++ .../0.4.0/template/appendix.typ | 17 + .../0.4.0/template/biblio.bib | 46 + .../0.4.0/template/glossary.typ | 48 ++ .../0.4.0/template/main.typ | 163 ++++ .../modern-zhaw-thesis/0.4.0/thumbnail.png | Bin 0 -> 56361 bytes .../modern-zhaw-thesis/0.4.0/typst.toml | 30 + 40 files changed, 3180 insertions(+) create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/LICENSE create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/README.md create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/lib.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/showcase.pdf create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/assets/zhaw_logo.png create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/assets/zhaw_sw_pos.jpg create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/frontmatter.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/pages/abstract.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/pages/acknowledgements.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/pages/originality.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/pages/title.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/lib.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/gloss.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/schemas.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/academic.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/basic.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/chicago-index.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/compact.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/table.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/twocol.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/utils.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/styling/figures.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/styling/glossary.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/styling/math-and-code.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/styling/page-border.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/styling/page-header.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/styling/table.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/styling/text.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/styling/tokens.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/translations.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/utils.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/zhaw-thesis.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/template/appendix.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/template/biblio.bib create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/template/glossary.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/thumbnail.png create mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/typst.toml diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md b/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md new file mode 100644 index 0000000000..c4cbd0efa8 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md @@ -0,0 +1,33 @@ +# Changelog + +## 0.4.0 + +- Replaced custom glossy fork with official 0.9.1 release + +## 0.3.0 + +- Allow setting overrideable options to `none` +- Fixed edge cases when some options were set to `none` and caused errors +- Fixed declaration of originality appendix ref +- Fixed bug displaying supervisor names in acknowledgements page +- Fixed localisation of "Chapter" label in page header +- Fixed long H1s overlapping with next section + +## 0.2.0 + +- Added custom quote styling +- Fixed glossary issues when no entries are provided +- Localised outline and appendix headings +- Fixed Glossy init-glossary validation bug +- Fixed empty optional supervisor fields +- Fixed translation strings +- Fixed custom declaration of originality body rendering +- Fixed README typos + +## 0.1.1 + +Improved README + +## 0.1.0 + +Initial release diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/LICENSE b/packages/preview/modern-zhaw-thesis/0.4.0/LICENSE new file mode 100644 index 0000000000..03e8c82773 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/LICENSE @@ -0,0 +1,17 @@ +MIT-0 (MIT No Attribution License) +Copyright (c) 2026 Stanislas Laurent + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/README.md b/packages/preview/modern-zhaw-thesis/0.4.0/README.md new file mode 100644 index 0000000000..2d159ad532 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/README.md @@ -0,0 +1,144 @@ +# `modern-zhaw-thesis` template + +`modern-zhaw-thesis` is an unofficial template for ZHAW academic works, adapted from the official branding and following official requirements. It supports both English and German. + +[Here's a showcase](./showcase.pdf) of how it looks like. + +## Setup + +1. Download the font files from the repo's font directory: + + [GitHub](https://github.com/stanlrt/typst-zhaw-thesis/tree/28927077165d31305c4438657eb0cdefa32bbcbd/fonts) + + [Direct download](https://download-directory.github.io/?url=https%3A%2F%2Fgithub.com%2Fstanlrt%2Ftypst-zhaw-thesis%2Ftree%2F28927077165d31305c4438657eb0cdefa32bbcbd%2Ffonts) + +### Web-app (easiest) + +2. [Create a project using the template](https://typst.app/app?template=modern-zhaw-thesis&version=0.4.0) +3. In the left sidebar, under "Files", create a folder called `fonts` +4. Drag and drop the files into this `fonts` directory + +### Local + +2. Install Typst from https://typst.app/open-source/ +3. Make the downloaded fonts accessible to the compiler (https://typst.app/docs/reference/text/text/#parameters-font) +4. Run `typst init @preview/modern-zhaw-thesis:0.4.0` in your project directory + +## All configuration options + +Below is the complete list of configuration options, including default values and explanations. Most are optional. + +```typ +#import "@preview/modern-zhaw-thesis:0.4.0": zhaw-thesis, languages + +// Note: `override` options accept Typst files, e.g. `override: [#include "my-override.typ"]`, and `none` +#show: zhaw-thesis.with( + language: languages.de, // Document language + + cover: ( + school: none, // E.g., "School of Engineering" REQUIRED + institute: none, // E.g., "Computer Science" REQUIRED + work-type: none, // E.g., "Bachelor Thesis" REQUIRED + title: none, // Work's title REQUIRED + authors: none, // Author name(s), e.g. ("Max Muster", "Erika Muster") REQUIRED + supervisors: none, // Supervisor name(s), two formats: + // 1. Simple: `("Prof. Dr. John Doe", "Dr. Jane Doe")` + // 2. Categorised: `(main: "Prof. Dr. John Doe", + // secondary: "Dr. Jane Doe", external: "Dr. External")` + industry-partner: none, // Industry partner name, e.g. "Schweizer AG" + study-program: none, // E.g., "Computer Science BSc" + override: none, // Override the cover page with your own file + ), + + abstract: ( + keywords: none, // List of keywords, e.g. `("machine learning")` REQUIRED + en: none, // English abstract text + de: none, // German abstract text. REQUIRED by ZHAW even when lang is English. + override: none, // Override the abstract page with your own file + ), + + acknowledgements: ( + text: none, // Custom acknowledgements text + override: none, // Override the acknowledgements page with your own file + ), + + declaration-of-originality: ( + location: none, // E.g., "Zurich" REQUIRED + text: none, // Custom declaration text + override: none, // Override the declaration page with your own file + ), + + biblio: ( + file: none, // Stream to .bib file e.g. `read("references.bib", encoding: none)` + style: "ieee", // Bibliography style, e.g. "ieee" + ), + + glossary-entries: none, // Variable containing glossary entries (see template) + appendix: none, // Appendix Typst file, e.g. [#include "appendix.typ"] + page-border: true, // Enable/disable page border + hide-frontmatter: false, // Hide all content before the 1st chapter (to focus on writing) + print-mode: false, // Gives a white background to the cover page to reduce ink usage +) +``` + +## Exported symbols + +The package exports the following symbols for you to use if needed: + +```typ +#import "@preview/modern-zhaw-thesis:0.4.0": ( + zhaw-thesis, // Main template function, see docu above + callout, // Coloured callout box to highlight important text + + centered, // Vertically centred layout + today, // Current date in local format + languages, // Available languages + push-lang, // Set new language (see docu below) + pop-lang, // Switch back to previous language (see docu below) +) +``` + +You can refer to the [demo document](./template/main.typ) for usage examples. + +## Configuration of dependencies + +### Glossary + +The template uses the [Glossy package](https://typst.app/universe/package/glossy/) to power the glossary feature under the hood. +You can find instructions about how to use all its options directly on the [package page](https://typst.app/universe/package/glossy/). + +### Code blocks + +The template uses the [Codly package](https://typst.app/universe/package/codly/) to style code snippets. +You can find instructions about how to use all its options in [its PDF manual](https://github.com/Dherse/codly/blob/ece8099b46cd899ea99a835ebd78c57ef2dd0b74/docs.pdf). + +### Multi-linguism + +Should you need use different languages for different pages of your work, you can refer to [Tieflang's documentation](https://typst.app/universe/package/tieflang/). + +## Feature requests & problems + +Feel free to request features or report problems [here](https://github.com/stanlrt/typst-zhaw-thesis/issues) + +## License and Trademark Notice + +### Software License + +The Typst code and template structure in this package are licensed under the **MIT-0 License** (MIT No Attribution). See the [LICENSE](LICENSE) file for details. + +### ZHAW Logo and Trademark + +**Important:** The ZHAW logo and trademark included in this package are **NOT** covered by the MIT-0 license. + +- **Trademark Owner:** The ZHAW logo and brand are the exclusive property of Zürcher Hochschule für Angewandte Wissenschaften (ZHAW). +- **Rights:** Users of this package do **not** receive any rights to sublicense, sell, or redistribute the ZHAW logo under the MIT-0 license terms. +- **Usage:** The logo is included for the specific purpose of creating ZHAW-compliant academic documents. Any other use requires permission from ZHAW. + +As specified in section 2.b.2 of Creative Commons and similar public licenses: **"The trademark ZHAW is not affected by the license. Patent and trademark rights are not licensed under this Public License."** + +For information about ZHAW's branding guidelines, refer to the official [ZHAW trademark guidelines for open educational resources](https://gpmpublic.zhaw.ch/GPMDocProdDPublic/Vorgabedokumente_ZHAW/Z_MB_Merkblatt_CC_Lizenzen_von_OER.pdf). + +### Unofficial Template Notice + +This is an **unofficial** template created by a student. It is not endorsed, maintained, or supported by ZHAW. The template attempts to follow official ZHAW branding guidelines and academic requirements, but users should verify compliance with current university standards. + diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/lib.typ b/packages/preview/modern-zhaw-thesis/0.4.0/lib.typ new file mode 100644 index 0000000000..f479956484 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/lib.typ @@ -0,0 +1,4 @@ +#import "src/zhaw-thesis.typ": callout, zhaw-thesis +#import "src/styling/tokens.typ": tokens +#import "src/utils.typ": centered, today +#import "src/translations.typ": languages, pop-lang, push-lang diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/showcase.pdf b/packages/preview/modern-zhaw-thesis/0.4.0/showcase.pdf new file mode 100644 index 0000000000000000000000000000000000000000..39e5e110c31c451bf6b444770d13c3a9a8120150 GIT binary patch literal 205468 zcmeEv2Uru!`Zpq=qJW}c*H}P0*-dDQh*CraL}?;eC=uyM6)P%=sMt_MMZqriE`klk zf(mxTj#yCa6>Rv;?#w2euq2Co_ug}!=YLMlS$4CTdHcLG^P3qh7h8Kn%*aexD-ryo ztc-EEoCv>QWlKwC4#(InAyU9GcJU1qL=(3*5wYPh91JJ^9u^c3&G9zj1%mHQ(Q{J^cyDF~ujc6Y=IGvn3!ht%&&McRSt$#`0|<(gi6@ez4Udfp z4GM?U*#|{M$8dPW?+F4OeZd_@k|mU78DaI;OJnSA>lDm5dpFOF+maGx(D_F)@ND zPRvB#aE_yIj9{`@b&xn(bp(fXsuPzhCcGtU7jg^5Oxgk=GE&T>#SnK$%sk?6L?+I$ z7x>1+MhT)h(Gw%${e7baG)bUZXrvJ(*C9=)WK!0o;nJ%BvK|~75gqLtm0-Y$5=;;P zJMjk<`i2K^LVf)Nq0zJ|xsY~Rl|*?msuXfa3PZ>}#iJ30 z1q(TYQpQME6N(ulJ(VVBx;f)UJdS-(AR%ZPv*;%@D#$YHkRjxc6tJiwA%i?1V>e&F zP_fdv@MrYW#iJAQSYhcTlOnEYrQ;l%hyXFmfV|Vo77s6s(EtmCz*w ze?hN@cv43~LU(`?5_%(KN%$?QXi$(}Xi!98lyBt31bSt49G?t-^;ZT<7czy+LKtjd z1Qp&Q_rqwuF)%U`MCYK%bRz1+H;gg-h$1s$3IjGUa0tge8niYXTY-P5Z?BJX zNe|(ec&u@b4Fio5m%}$9MaIFvUnF}Vtn*Ds@qh+`Z$k0}Vjkawq?Tg>{vzED1bn^; z=_edB@E2)X9CHre6gEp1;4j#q0W;&9qDnw5rerN*%@rmdYhY9A8WROt1h*)GU}Qu@ z3?a#p5upMn-$)MG;DUQw5MN`0!a%d@8tEGj-XMaVAPVpW+TkeTC&K7w>;msVp%LMM z^dH!T3GaaEfgcRxc=JdW#t?VVxCttR)l!nfAoCapgS_J$9J0>i;E;1ZhetKu92`o( zl*5Ap07Bylg~mf-wgAsy89-<}K9o2J0z8yEfGEx5p=x>HPpBqfA3R7h2dJHgLzMx2 z^H8NgzC1)EAesklgCHA68V8keA$@>y9F_`xi<`l^z-zb}BnEtmo1s@tz@Ly&+?0c( zbOkp9e?kgya}J^fx8PuA@F5@+GehQuaV(%I@jzX$d>)Tuj-<%vm_hP*CLEL#@jyN3 z7iJt}UO*n8A|i9*0ftCb5SoL^6seDh7Q+My96ndfDTrSZUhmCE=@*|5wJEwn!uWjT z2}l+EI#)_3$ZkLOSG={xXuoM~dXb z#v9y2#fYxR3}N#iB7wA1NCM2UfK(87Tqtrr7yguI0j0sC6lH<5Xn|B?f!;GmDya90 z)Mifpo<<7sdy*6$%5Qn*RFUMB_A0?0dKH<78KSPv6;XrimsjVCj174w4;eR)vQe2= zWWbamBah%gAE1#;NC}dRe1d0+eu|<16%BYOY*H~nbVa112th>(9x_)dUI?#zBxn>o zs35}QBZVQer6LLsI1TAL$Xu!L!UIkRpCfuvtl{yHc988-frpAZqARpTDg;sSM|4Ge zAsa?Pi6%OtUMM=4r+^TJw8}*!AzS4Muc%7OcI#Y`)o|ezN4AYyz;bb9<2bT$+yd5v z!wwdREs*s(S92&r9NIpO1ww=*3pg};5U8LQaAdHeE7Tf}3{v(Lkt}?lDi=x>N0C!> zh1wL|Bi4lPA(2p_-Hf_NEK~QUs9q}A3-1yArqmVDf#Np)e^=6*{!b2)c7g1S${0`- z#8H&Qh4<8Z$j(vp6nzg}A4hqn=sB`qsvMNC;wba_zbgt||8aSsxPiJ3xbTYX0d+2L z)XIsjNUta>#`&lml#JnMEDcAk8_q}iMoAcsS~r}B;*#)+>P4*_j#@VyB%(yChoe>w zN39%=Iz;G73-LrbFvL^2G)mTRl&s+>S;J97hodA7hkbj{RY0ZuqB$kiKvMdhR3 zG1llS)HjAq7(=F8{}sKD5;W{TentF(o*3Z@*#EaH;sbToutr}IoyhMnnO9Ul)ori$ zipqr}SR9PHqSOeZuE;+z4F1=2K$; z$jpR&cQ`r@I_6NuJk-hH2|L)(J?r+Gp@MnBE-`FQ>UMF_?}Z~P(Cm4rS>hqH=GEzJ zA-PC)qEK^zQ_X|0hXZ9S>Ulu=@H#yQ$fq!KLzYlCQ-E~hXuJqRCM;@pP}oB9!zA1k zb;OWwpm71p4IpcjsY7$1tQwja%1>wUh$YTF;NYk)V9IxAI1?^8b?&~ zE1e@I#f!DOVjfR6#q1SNMy3C`;>iGD?7|p}Nml=D44F$&J2_M=n;}NE!^RUPU*c+K z*LooDfTPv_bG1urg2_Bnwv_%^44Fz(JG+L9QSC6y!?_1>wX2GZyFu** zOxFH)q9Nn3xM*0l4q~Dq%>;>tlzlxRl}u1&`j(AvB!PZ_Vi(IdVP8&+TJn+1B2g|5 z6J$gvm}bYM>5&9duq|0E%a@i$l3iSxr8?kHx&F@o1xp`k`Nm@Qr?t8n2sC?X&Ml`9r4NdFKokX4WXXeT>>rKHLv z!x*9!AV)w4k_brv!b1!H&|qk&EAl0oO0gryI9xcen~v(BxpJLiNm!c~DiTJWSXdgixd5gN71;ny8q_>?j`s_rv{y0gF`biR_5> z5>0O8=$1^19GHBj4oFShZ|cgDRSv~Co?yZeA5wtBhx8!@avWVIAGSepP_SZw3=Qg_ zSztJ+C$2VDxrMNBIHr%Z21lyIi(}`zA}gpTub__zxPh)M;lZnHc+%S+Y=aVpfmPLI?~5=Lf{pLOx<& zI0V%ptB1qz;>EFYe@CI!Ly8)q7K;WNJ>_Lmjh+RA73dFJ~hH6;FjsKs$4-8>85L5%<3=t3mP4K~aG;#H? zibzxs1h?&KOv_m6h=Md5*(IZX ztC&@Y!3xAh!738atO89*f|QRGg{ZgBAPOQz$|jf+g?Pz4(a1YP$?QCtQ54WYAnZb1 z6zsfCWEIezDF*>aGYH}krL%Qa$j%3ai5#R-ScAFrHVRfp>x+=n+u+yqHmWX7tg-^3 z?@BN&8dzY^(%<{81eiulPY_@u+pcJe5+(83OMUB@B7|1SESo9! z#cZsv2*QS; z0aY-WL=LQC2p5DQ3>k(HX&AMV4`I?UG%JoFcru2-Hbnd(255Okne=os#!$vqTs7H!(h+38?k?>fVvPABQXcCr31SN4K2t-=S zEKkfjAX$yD4h$@F1kh0_jWiUhOtM5KBOy3)FhoLdtnw96_(6JY6r0jgNoYTR&mxh= zNa~VRY9q7_(tm`uLAtzz$XEq3aoZrtYK+hTViN-}VZzNYTx#1*I^tgo5Uv{*XIQvK zQ!3_$ZX?1}<1YgxumWjrK*pTEXOV2(C0J}w{D3i!vJr^(mMD)^q9bM_aDjBAYy_l_ zAPNz|i*QqnHbu;kc#r}7?}f+^OUUIHGE1b{32Z|e#j;daAloXL1l1QV;Sy*Gy*4P8 zz_wCoCk(NKTzMdqLUB83bSweO0f^j}SRO#+%tUTWV3Uc2i%2p+Y9!V9SoNLi6DrIX z#f3^flPLtc-84GBaHZM}JCJm}EHcCwcHn5L4T3orWjAoui-gD;9$!Rgl)nthU~CEu zA%U?Fum%JS+koyi7z6+V3t+j3g;a|nQ%RZntyi23k%k0s%Pf&*F)*8LM5Hm7&LOK# zT)iBU9xb8Z1_c_Jv>QlQy;wM*i9K`sx)PLtr5xjWU^~ znFs7fH^xb%wnSuaT_!#Ca>x)^NIEkeBq(T9LIQD> z;w7@fdeW_+u|dLAYV*PlC|aKtz+JT@IBZaV2aX|8K?1IHlqj#^`3NMd5mo?jbYSoc zVBNsFIDpOq5HA4B0(dV|sZ9zyJZZhMWQZB;prbTvfkShR;M_#IwKOUjVL*^#XM<0Lqa}fmM1PVlB~vP5o{<4Hj)JURDumEiJd9IS{rGDC*-V+Od3T}6d%Bc%fZDh zmmLn3Zn=$(CsOeba0*Z+hhpnwXfu7}BqBqnh8=8`vK290B?d+rFx5Shw zf_jOPfkl@j3ZgUtM>2?FmB~1eTT4r<{SodQ3@i$aeDS1CtC5>7$Yh>c(GTXP#cTja zQ=vH8Hv>oeJ>b-~D+pYNAy^#-5vCGu%qk^vBd5c`+&J7Of{KO^Q^juIH!U!ZgE_F1S9X|RW$CK2|h8;5dAIFn47(3iGQns;Enae-L_N1boNFV(7 z@g#Nbf=qj5^TZgGaB7P}>060P1SMA81);Hv@Z$f|poB>s%q4;QvV}+)`#*&zsfi-F zzvRDJk=AF$P5_liwp;S>e&ZbEGWUfk!4qi z92kum5ZUqnHYiEUl;FP4|303iWlB(&|303iWlGRa|9w13%am|(6V-noPtr0aIAAE7 zC+48UZWDKjpu}#pQ5ckjJ<sXSOCc%>i{&g%# z&5}s}``57~HAx~TGGw#F9FNdJZ#X)E4o92Y<7iXNxAH{)h6ZJKGP>9+Am{xO~WT8_7p% z@sGn{-TlLc}4P}B0nh8a>5RCa5{#6cZmQ`G2)9toAQ3YiFYfo9pMXut($ zhe`q3z%vl(u3XK9k8g1yMj`Qx(G1N0O&mi8IA+9hfjm zK^p5y_P;!-1ke^jLqs-Dmm0gZWdA&-MC}O^Q$*yDZ3k-GzFC1xg{A;~@gHE{qNagKYOI3zKaMFg(O?1-Qw^F)LQ(U7t|{thL4ZM$ z8j*tNSDp&q0}TY=;TBRUt*Om zi_A`#DvP(m|LwMdwiuAX?AR?%{O2(x>bo*A#cH#ce;!j(TXlAeEbD12&>>e6Cx(jK zH@Om1rjrV#R^N)t|GIrkO&i#)*Zk)(B{gkew`BC6$CT7oo!z?Adh8o*IfbJwr*MWd zOyIKy*tc*f=>LEGW;5c)u<{ii04$RQu^zW*vhl`WX8fHV{i*Ze*reW+(Y!Mr` zp$%A&u+zHeXn69pOroiA8#tIkX%rxGDsUy4Pw2X^B$kr}em#PaaqQgu@b2kh= zMlMxl%Zb<+5wSiItR$4m2&+7s@wgngNR7q`*s;e{YST&{e)4ymfY}u4@Of}zwN#E+ zg(UHwgV?DoXj>|KoG`2JSTQU#6W~1c1Xm49}=f& z6T2p2zyOI|6p2;O#Oh_Rv!XPauv^c|v~~G#H1PoyLG+dx`OMKDfgirQo-Ol?9P~xR=&hmQ%rTR8j+D&2hb%~ zY6u{uF4J+O)*)RFtj0$~3+vFS!;}&L4p!Q7KO{8K&dTt_Z18K^$~q>=vKrtJ<60E{ z#8WWV1KFSeFc?ZM#^Zqfn7~LG@LF=UBnP-G@Yp&lX*s}Efu{mT1%3+Llxg)oagr3U zTVU=?J3(;3f?KdcmbRY^aYzQcjfpq_IbQ#sS5jlb-$#BY-?!@a2UHl!wlM7a7UT~7-$54k|N>Ikn&7gVl}!h+Fu$S1CO+XN$qKnw8*r8ddrsD z0FhkFESs)KN*81osiD?I&H2i3Fjf(aNs;7HKOC^J8waE}=ums1V2#ZyaqE6t!#m@G@;j%zb zFqy7M6wE5Eq8&Yh$fKM>WHd0vqMvCAE0!JZs8cE=iWaGhp=fria_bQYJmdyQob*C* zfv{T|OBV>#8xjc7(+3@CQ9qiAc2>bcc-RXv45|WA3(HhAtEf?*SYR50!&TA}VqukX zh>1n4?G}xLF;UGb6wm}BRZCIj&8oF$N_S|fP2F;Nn zvqVv9gvcUVh(_mrOj>6ZGH9X`V-W7^Caw(fS%VlPNFcTGmkdgc9^}D2GRbipZbL{| zVoNL@8l&dHIWI8W2OA9@JP`p50+NjtxWe>~2QmZ#cgll{*(Bt`D#nNifhP{3%zy{i zib#~mDnft~halb{S;8X8oLizuRzYAS)gh$H6}H)bsX-nXDFK3$poLxLAPUNGNsf>` z(o)g*thAvk;g*cR0EQEL&B56WP!2snL%XLzVtMRVvj{UA#3Mx>EfzBr&8ka4*DSry z$%AW^B&5kI?Wm(!(x3^N|5~%8cT3R1D(HyDiV#DT=!kvrq&K-#kP>Q?Gg^0ZlDQKflayzv0D`)Y63-*uf!l3ZQP)4 z6G&=ZChN4IAg)=4(}sBDGnqw7Y8IMbqcltUvxH_@1t^+kMaw8i&7$EPfO(O=XKmf& zhG8RJ^b$R}VRtkUO|xP#i`FA#&@9`yBlKBV258Jl))@i}dB#t}H7hLlZ(CWo-b_NX ztP(A{W`#Kx$sXy!U~?W0Xnh;h+QOq#WrlrrhY`^(6QYw%hjoE?iMVb|% z?Fr4&#-158%PL&aqp{GpNY)v;ckBS?lF=BZ9gWf~NtuLZiDxpcjILRdA)#hT4@NWo z4bv>;`!Y03ye6AIYRs4?LQxZ%r42_jXqHvDqG?tl4J5;rgf#yugMwo#jnOOvcALiz zyG_@uSOx`A$^ftkaGMSES;_&VYnH5_0h)z8BEzGPo7dGWJ5V;zEKwR5`4U$wJgEi@ zpOAexaRsx(W7BK~j-OHP0uK(7D3Voxk&Ff+Q1;)p;3Q02qQk}xx=phg(Md=|u!9E& zk;svT#R4j($gmi8u}T;VAcsiyBA7ix&PS?TrY+X5R+L8xhJ6%PaqXCv|0 zp{6C(3P;lkOZ;1Jg;;WNwUWm#9giC|2>Oo}zegzD%M-R#AjDeqkjU7O^o}zdVjx13ks~!_gSkO!w5h7>+SSDc+PAgMbOmo~k2;P-ok5$q_UpmPn z&uF5io{8l{q86EnULqy}q9d1B|~ z@ZiZ+5+$?$n7&%D?u4w*@JWT*VM-XzDhmN!1Av`M&B2mRn ziycr_M2P4N5u%^UfRKgHWX1uSDn$U?A$*I~T?q}c3NLgYBuHosfKFO_0RxmwdDp`rA08el#vptqvqTYtC`LBIL`5Uu zbu|bhu}pI6Ww36L;e(~`EV3y&gN+R`v>XgtJFUfsP0rslSU1S<*@1fL43e#0BQz)) z3SrV9s~{sI$z+fltA2~fFvQw<2#p2pJL#Mf4$!ce!H39XLVCnlAH*w5l-R(Sfyio% zLTEk(l}k4{b|7G(=p;CV1CZhzlFwusG0o(l0vf|1&8ZkTWHq$GWOFFV6lItUg|iAE zLh*^gYWNT*1y1uOEgD?O^1&5loCvJUhbU37T>*Lz!e=F{DhA+ zG}b^vYlJ7#GR(RRvIFhbr$GkHE}tD{mu8}khU?NYOa=y7MVfjUWXMn00dDCGHa0(@ zWta>M5|3nhOuY;;hZ68}Ae3_*q+qL$8JV}p#;#*l1s{+>aG zAVVT^WtK>1u(6#WT83HIMA-pxnOb|%uq%Qt(bFV$_*tRli?{P|q?^M>i<0BbWr6#Ykh39hS9T7D<^& zut+>>h#p0V)W00ACEzc#e6y||*?~}LOj0Wi>P+6lKqiyBdWz!1aRLwq8S(>m*i#hF zQ9z}FpHvOAa(bG{H6G3?m7InK4k@~5U^ha%!GPQ0O4u$dho{S`(JefEsB1&+j?PIO!epAq9JdKFOX z$}x^2sCJFvVB$X|8fi(k>-#A#{!^v~xW1qA#DB`|KdJAhCgMM3@(anI zk_X7t6%&&K)b~?yF)@M#>-(v=m>AK3_5D;_OpK_%`hF@dCPt86eLpo7lQ1KK&K>~Q zNZX6`i%EzSaE!qwBLXh*WDwXWjQEygZ13dcFnWmoz^EYK(2)_b;Q@jGC$~Wnp#j8e zcH#aJ0YTw`9OEGY009>ilVIpTJhv4@`wPMYe8XdiLZU%x3Ri=ZVb(3eJv<2fPQc+K zR2MyiVFcvWA=GAwE%A(?7jFQ);AgH0(J_LsA>k7ugh<7ag215Yn5YDf&cJ{OKXQXK zz{BvU06`SNn-0Yrv3myi!ZkKBGE@)-_~j6?0>p!d1T_TLQ9+S05mA6MGW90DvGpWh zGX{0LMGPKd>*O0L5*P7;Cpd2nxVj0L!v+9(j;X1sk%a}ZA0_zL#DZ@G&g0?%TqPgu zY|1y{azS!$0{+F#xZpKlho<0PVsmvf@Gn@L2i^dC=n?-43j#ZrihfI^kYI;Y(6=YR zO#mrFl>?yp;3KS%06l?9d1giy=H{ShN+6)XKCKu|-4h!lb4>UcB$fbSfelVnGd>qE0~%{E_60uX=6oYFQ-Jd(R%tA8rT~b83#zwz(@40DX>fths2J$G%bNH zF!+cB1@aB>F{f+_*ckDlED|)!;A3h|8VH~O*bYrspy2}_$^^w5bP{PQYS|nG;ejy| zfwhr-6ckEqaAa&B3U)WL6%b*9h-1J#1-@a*lQVz*>8?;KC)fFizrVS zx}B(KB0fm^CgrWpzG1|7(!v`cA}|^d26o*xrG7SOP{d@8x1qU_nYjg*uo^>f+O&~{ zDHk9BEP!cR;J~!aaC0Lr*i#e^*bRyC4Gr=i7#uic8XqAN2*vm6n!Wcz{hr7(raLG7*mnGC;lv=pw{7At*c` z3NZsV+5+_|gMb(itAXA2> zMf4@Tc_E(y<0h}h1oO~p5yM1*VJ<=h0gFzAr$BK^h^%q3>h6f6i zExF(yD~_c-_{WNHEQ#-dFO%H+P4J)S8%4g3f!DcQ6P^`$hm&`v=#B^P%;9%@cn1n5 zsxg6gHt^1ryu-Qh&J2EM3h&IxJH83Lvw+{(!MlO*&J5lSf_E11&IaD0-`SFPW;p!L zj=bZeH|^nfkZOz&0BAk=7$Ah%skUt#i0f+qYVC^{K4^oCB{h|6Ge>_wlIe`>-0`6Pz=gOofn@@c$U9g& z59tqR6Sx7gcfuhEzZZI-e{2-k%QuD$4x|SXz7-S>Hu#0XkP{gZN&KGtj|@Ci3?stO zaC_o;owiH7CxfE0IoATVJu(``byHf#xK^%w_o%Xm*MZ*NM?#+@8x$Qd?CoXz`g!u$ zBfSS`4e0Gvc0N(Xw1c1D>5Ou@0@WTzS}av}7}R!9bFJP@E|~}2+u-w~{Ka+Cpfz#L z!=lp;#g`r$k+#%vn||>#b?=j}yA+MznwIae=gxt{u_b^01pfK?_~-q{k1iz2Emdu6 zJv->(;K)H)g$~mt{?w^;y%pC|pjb08_8*EPdJaw_gVSP?O7RD;GKW@{t0= zRoVkCD(M(EOT@~pJI&8-;bA@e%(}7zAN1vhI>%nCd|Ca7^DwcB>DijH1_vZRxNoyDcH=?+*+-m)b@4n1bc zwaA#W_Jh{6CNt-pI-@fGVEzxq<4T@SKJA|FlNkNMGE-0;)ur2*jqk_#M#)pkpsyRQp2)Xwrcu;TZkn4CpBzRPc_x)~m{@|MN0;K1vv zij;puO-esBbliH~*s9BWt1bsN?Kfe>^YwGDcufn`bc;Q>eaG6cd)P3Yb_dI&ull{% z`SoDA>-WIxW-U*8y>aE9?Rjv^oE__mzArqex$X3ysSA2?pWRvY`pa|Uo?}K=e*eclG)qgH@{idR{AA^Fmp`0;_MUzX~2@;>^ree%5z zH)`YK=7o&)7N}W-RC(sdeKp<9*I2Qq->LXtm$D5Zw)WIguov@j2ze#pNF-$7r|9Z&CUnqt}E(hf;P6cKE5Tihivh z-D&cJyzs#BFFVe0yiu_}_~8S-_T{i0>w-U&nqL1=IHqKZyXP&-N2Y(OBfl7&JpA5e z^Yz%CA14p4^r~{}t*$6PyXB;+9+wpFW-F{bD(9j%ILBm;@zQOf&D3jSnq*zoi@Tio zrl{>A#UOkAHZL3&TpQ`Tt()?U*OgP_PR-b?HMu5rYW%5>yVDB;2ge_M?CsgF+oS0# zF6LExUbuI!`}F8L@5c4NQ99$zs{Hl&T`c-fyOUG$r%Cf<&5Fs(Pbv*+JvHH#E|lj_;ghJw6C2;bDmf8H%$+14IOr4Wt!>+y%!gkkBiBew%O^*ulY*DA9iZ4Dc ziYt15>&N%l!ljQr+h+`LKJN4Qn#+Ld@R@;L$;nqjn=5R8o$_?g0_EX;PP-qD?)-Yw z=o4MHbX$14Y4e}$E8H@o3Zkw}S?RJs&PM^i;P^4&LC^K`FPvK)vw!KNLOnk0}@908a~@HTYH<;ol&>LAMz(S_OiShzBb`? z_~Umsf8W1qa=YKXUD4gUcKo`e*^+l%`q?fnKDTY$y2zt%b9R0xQ|?mrW{uNRwYaa{ zGN;Dfd3|%%JCiLcyF07TI#{`8arm@%pN3g){`EVMlVrJcYP6kRiuGxyN>|IJJ?FQX zz%_ie&Y*(<7Q1K7BsXG*6!C`hIu# z$2(IxWwg3+u=TciI%@6aC|x>kCvVk+zvJ!PX#>Mre0UYy;&rNC=9v{{RgT*Otgkzn zFJIEOjh^ECv<*uv)SYvd&vlLpuJsS?6oJPpoJj9-xO8;?Zxs_O{`7tnVfo?w9@m+V zj`+_ouI)GT@tD`uPwwwjH5*#Ia;w3dBQXz$_DS!x_|)`WVO2+ab@mzFZQ9G$Z4K3c zou6+Rz^NWOYss|zYpif~(hqedi`DR96H@Y(9z~a0P1wG}5AL<)2`{!@x z8^?QS_Uk%oJvRDXt6<)w*I7N6P0XnIG}53`>bXvO!NdCJUu}A3?p*V+;}%$_jZ3y} zf9CK>hr-I#%o&2iF?1cM_f~t7>GLf`n=fbYEFS&st3~@Qb_y2p)$iAv z|1fSk_F&1#r$$kL=3XUsN{AbF=cpJDq0)*d;_SDS63Xoxax6e%+?t@89(q;R|%A*QK{bCk> zQh40?T1r?|-jA}6Cz7&9Zj1ia^u@rA_z~^sV!m;ze&xcNMBWa0-%cg-Z$|i!%}E`Y zihuPx{e1J6n6ij*;};E|SA4eZli1;}42q57UD^aSf8ed7lIK&bvT~(UnqItH+i;(c zT?c8tYaZWwbg851+}AtCof|(mx0hx0h>(zGoL%GQ-%R^r!c9EC)8NjtCR)Ze$F%i} zZcQGwbwkHZpCUJox;W+c+b)^C$9sKKAEvl6zp(RsyRf^Hv->o?VD;-rn1< zRZ||EY}U`FTfDbTtYFyLSFxQJua@ug^GN2{J;7h|?&DR{zSYj|>Daql>N!8`*Q0r1 zPOFT1cYEive`8v^dH1}lKJ~kQcG<+ip1I#&eIM?(Ut?X(ggaa9_x3-{dG6NJ@r3QM z?AC`|p4@)Ht4+1m+3kia3O3#|2q@87+i#ur(^Z`E4URzzP6WAHqz$~dxqFJ%(fH&X z!#Kv4Z{cJ*=m z+b7qmR;GM4-dnYG{X~_+TKu!a?Z^Ij7k~0`-16&Aa@K)2R&8jWKJ|HG#;l3uEfhK` z={7a%Ib)vAI{WfnB_+fCws{0zvY+QQ>aC{M*_hnir0`J>3(Y@v|NOMp`tg$+x}523+4o58m^=Eti;`|M9}e(<}6yhEu}58+!I>H(O4cvgo8z)TnnW z4f`CZ@mbAT)#uqHg{3KJ(*`Ldrg?ooy4~ot>ZN`am$W?|J!w;;jolqlxzP6Yw6~w9 zu09nuV_Z^tpD7=&7}mTk7~b~ol|C(tuITpFtoYJyy2=U{dF6=31MNN>)56E5C!WUdFLP+@IWWWB4MYp!kf^37{rR~p|6+3{M>UtRZ6TFy~h zpLg@^+!LpMUFYm>w|`2lL2db*gRAyD=&J0!@VNUkt>TH-CWgKX%?Rmg>fQHq%)=TR zKMnt0w+Ch3A2zNjPv^Lo(%2O1^~M+5v^2MTGjd_s3jZ&Y7j@fo!C%kmLhq*@X*s)$ z4NnKiJGVGyp>DL=R-vk5+e|~ZdA}FW`*h~Z)#&>nef6Se{Kyvw_Pg#mK3po4@3!iNliz_WeyU$ezdww^((~f9 z_9TV8?wO)r@WQ37Md#oaBlk}Kn*ZqC`jsorS8m_&xnCEnBc)^JyROwyTVZ38d;Ey{ zt@|#at3E0on|7wxjh0OkZLPgi(^uI?-5x4$y(F>OP}`*!`fSzD9b#~&%5lrl8{5x1 znP*({x4~E1cC0B_@8a|N@7Z&5sHf-Hshf6&%+230=lH#A_dLcO%S*QC zd0|lIa#tglL3=zom4P28TB&Z+FqpFDLXzT;YsJgvFJ0Jkxs!3OgK56BM@+tT!mw;g zME|!AyMo?l{`&bj|FKm!UEF)O;)WwfT7R9k`Jn&1)A6;hre0OadiiGByzBX~J)GZe z+&in)7e`YEZMog<7pt6l$&Uy%8sBbJ^GhAJtP(8Px^Se{!NF_&+A5t%UwzK@eOHI% z&>a)17H_V2miu&1|KgCW{5#Q~SM_sFo)&&|@BSSJf~>lg-Muz>xXszg{+Acuo36Ot z)ahBuxFx;Dj~Lu;iM@Z=hP|_Q@9tVtdokrmdY_{aGxTnJ=ex!m73OfJs|?M)xYqs3 z&8FKr7U)VqY;muLwUI*C^Tj?73 zaY>f~!Kc~ts+51qb+fDq_YUMccJ(=?t-0=TQf$em(Fdc)&)j%DbXn<QmSOclZ12hIe`AzVc3ThwkPo*2DMbZj+zmSzIGGcccpbP*Kk6 zMG)RWt=zRxVX%=xrjPaz-=!%-cHQv7+IsaIv?ai6&ut?OUgf)e2M;ObM?QXf>iv&{ z8}@E_QO=u_(!cAI<7J0uhAsZ4)BR!f&7dDqf|s`o)0@@a8K4;YXj*i9Q^Bi+)A2sT zTra+}d7Xc1uP^`2nE5xy-MGVPIW)t0v0GF5StHN-e^fZwa?aiaXh*@z>#HX=+q&;Z+`Y@b zJ@is49Nn{ej!a1LN=Vt3dtNv7)T+HERnOd`^oC`a`@ZaZAf&Qn$E63Ezd|>S@qF6T zd+iFnz#+qaPwT$lq=WuQk4pz%4|_2szH8`yrA3;m+qkF4zj!t%v(?SL)<(}J-_){P zmRPvjz@e{hXWY+pY)0WA?WUvMee7>(d-g(%h`Y5MX^FY%x9&*7eW+)nr|B&u} z@mxxmR~+ey~nEpV{x6&&~2fR()0vj@f!+OYbE)t-FNxOzFQULVI<0*G+94 zduHc$`K4G8p>n6RSby}!xO26SJDpj()2H*ppQCHeui3GnZ}pz;Z-0M_{JnL}n6@b) zD=&vn?mA)S<^#{xS2W#QwDUsT?a9sb2lKjx?%Jtr85gl|$o}UO@4qt}eCk7cuI6OF z9?o628Qb)@c-$g8O?#@Jf@h(BC%<0?n(Hm&;|euQg8Y_F4^$;&Pxk=Zhm}u zH}>XF#l@B>OU6CSt&KI9_Ps1i)y#f}hKc&%$f)sWUyZo4?R{uX?GCkG>r{;1L|zEB z<+s`U6_+M?9x_JmF7`o?~tO zXi#R~fu|Isbd(Nzo{t;Qrj?&U`2IzG)VW;``X%*Ry)+oZ6w1>5YE?CVL>Df!o3bES z=Ukz8i`q3N8_#U?>3O+|*X_<+55+k~Gu;K8Hs=>kHNLRs;O)HUc*WrGQg3n)(H!%I6aNK~uvK@Dq>Si4tXIPcX*!hd9 zXY=)4t(_d6$?0VpZ02b;ah#JAbFN(9f3lHQdSq_T-YfmKoS9%~vwyi(bSbW}dgX_2 zgZthopV~Pq((C@=_nSVQ%%9d?t@k5awW{I09WyNOJs0~WOgYzS$Kg}FQ*I|G-1=Gj z<56Mz{INXEp()Ag*W(8(&Hq+7BP_MF?~N5xF5^STDYP7QJkO`ahAaO49g?##+-pO- zS=ODmBw6M!4cfJOR>q5>@Y^4T;$M~ghGY$%(x>D26X%x|_w8r%YpnAMkFJmIRzH}Y zTK(tut?Js`9i?4v8)Pk>cVz0X`&ItMYOjh5zHHa&&2g>jBe~g)LxWDI zEO69rzpd4&vi|;G11r9HXhrT^cm8>Kn9=H9MdwER$%zeF-*NBSMFT$ls!ZFxBP{-_&C<~4~^b4yQ{L@vGZdSX~v^~gUP)cRZ<|90Grq?%|hD<&BLv_|tFtE&C(u2b-tm&Ng$A zSHJji!R9V)vep_ZeX_FBJue-mk8GU)v(+S5$^E|Fyf0p9aZ0()t z@h+~}MLQLfHnp7O+--WtOB){OdzZKtC0thU8q}ottN}J+k-6)rD_H}z&9GAEPp-Yr zu8uI%4USxvQ(C^<)PDIs^}@4RhjP~y%qn^0Ff8TEkJz9g!!{p{&OYbb_Lr?*h{~wW ztA-8WTrFv_@w!7FlZTc1!Ee|6OmvGqtoi-N$$K4B?KeHEjP9@B@AcQO>vFo-t6cN! zAs4szr2IP5XJyff@@-~caIkJOx~cQNySE&BZ~lCD^s()U8Af}C9`=vbE8-NO9_R&C^V0i<;B1xFe}=heu~PnIx8vo`2JE#r6zk58b67%;kNG zjq}D7e42mmsQOX8Q9Zp14m>hhJh0XC%6_{Ahquf&7+aC^=D>paH#_cMA?S1R>}Ab) z4+pBPv)I<-&$TLiRYJRCn$fjB>-@(oEb1`&HD~71aU%@(+j?&K;k_x;Gv}7~#lk=< zWj;Q(lbN@5i%*kAuIZ8a%x}k!&o3SC#(!J7DrTwI&Cc_0c8#5-dZFN_(TtrB!SII1 z;ZxBybFXGi?CsIkbLx~SQ(mOzuOIXMtbXBpkGS}~nbkfuk#+}9y}JKLRl)nA*2~LF zn<{g)LYB8$(J4uOeGj!7g;g(_T*~k$w>{$6{BopvLe8_*o86DLv=S`;G-A8oPW83! zW9*NwtqHmHx@GmQbN!8Xy}4UC{DFgI_2;Yz%UeFrwSv`uKRltIzuhTh)Axk?S&wT@ zJuS>hIyxW-b?NQMtW?c^M|R`<8#?0$vOIA4-`o3bR)&n3a^Loc1Pn=f0JBs>37w zxYlFlTK>?>+`Q+^grUt;tMqnl?KY>|3oEQepm}AvPOOH~%OR2bucl(}lY2B%J@a$> zS;NT+OUk=9*V><2(=w;`g^TTrW^M@1>60`3<&+=IGFv&X_#9S}?9)BIS+#MHUC{5K z0Ts_bmwuXY=IXP(PsUYTxM}gq=2f7=vDsDySLZ%IGvtZN2uHr|k8q_v{t@SQu0DQc z)Q!^d$ziAGj?GS#YZ7TKZ~fqOSL=Q88a14yiS3#-FXyV5d2G#=H{W$dQT|3YuH`yj z(O93SIH}cKvYp|aEjwuJY!f<7oCAahQ2s6EMuBx_vWpiT+m%T zJNVb~l{aT48f@&Tu^{~Ubj7e)ZbU#us zCOfgss6VOI8xq5~%{!0pwdhQo$EjzkrUyEOC-;b(>pVYE{@#YH!(%$;PiWri+SRHZ zi32;#8_^+YYT3stos=dD?g$P&QvLn-<%4&b9g|YI3cvR?wJ+26e>`#b%*=+2>c!7TL#rQ8hI^dG}YpKtR`K4lu`8}HPvlVq$oWV!6NN{Ooe^IXOvq2hevlUO@f0F8c(><=A z;NWQ8g+;a3u%Wr+{ z?PbcHw)%d|8gkRzY5Z)PRTpRdKHyWfp?KVj>sw}o56k-{koz#R$;dt1GnwZ5$xR$Z zC@c|HjeuRbN`d6sxw<&I57l=Qj2fH}C2$Z#MMN6{uu*KNZS^&r?gryR{MTk`5Jrayc)Jxz{L3zZtB<7Uhh=7~I@({8V zd<#LPq{K-)DZvMVl7ia64$;Jicn=5PvjUdjR4OK16K< zQkpz2 z-XwU$xd87>@W_We4utXs$Y`P#1T_Y(NZz40kq#k%7?=n79i$F8A8}^_YX__nH2@PJ zYd}0gj)BvXZ$b$Jmm==?(1Q4oM<5jPcaTSb2PW?ze>_wJ!5`oO-4XnOJD~gjGGv%+ z3Pp`RYWMgiIJuC6DWf2oTB>UST3Kol9oL4oz+-Y|s%L^*JI`FGNwILEY4$n7ZiCs85uZ}^3c*dJ^+!uM5GMT=nfVCV4t zLp?_w8oAPYm)?y%HzsI=9CY8Jc=ujU_aTctG|Y^(+%>#Mxoo`g%;=_OyAb!2C-vO- zd+fZVtLxRj`0C!xF>~|wO`QAq)0x@J{Z6^t7;F4YdHnsnw$|1k!4-k$dv7h=KCCo- z)SYF!4T~;~ao?5hFmH%X(VOMdH^&+0zQ3QpN@L#5{GOZRR*w9c{zUudTKC(x-A&w0 zrtVbhzijC6_usvp+@0KG-M@b8l+)C5#++Z5ZmJLMxy)gC;k4r;+`YWCDhAm1T$Z$; z=7q(u<%I*v9F%+i?7esUb+>jVS$!?9glEK*CHdyhn{Kje(kQjJHZvV&hWLl@?rweX zqLU5w>Pq`7Hl?X!PQTbcICn^9`u(#H4;?;QeCWi)pAU@6-udS%<$IpJncTf&ZQ-L* zs|PcVOrH~z#CO=SGJM$#-M3Nm<7>`5$vkU(p!ePG0f!H$4(>NNXVblpy)J0?nd`d1 zHRopBHh<^0y+Z9bFUhr#U-$N7Gq34ex&?pPH}?I5pxMr@8;8ue=V)UZ;ZwTZO7B6< z&t>oL`HV}B-N+e#cD&U~uY?whrcG4HQ6GGIx>fLy^lga;$M?VD_x!E#@CkOhr_RJ# zO&AiKo!EDKldk$lvGtCr9+#>@E@$tXWBXd?;M$h&xRpE|!KCW(R-bwIRp++qGU2^% z51wkt$K3Ubx|V(c#+Sc7>(k#oVq{C40-t8TA0*bVOJSop|x?c*4% za_9bYerkqQ1=HGE_WV{e|6s)dC$-LB-1equPiTKapcL9Ge9FSkp`5fY>EIpbtvR>W zYV_T4**491%$JFn{;dkGf~wQc+>~jd8;f6;o2b3tpe~Q89e%lZV6Nt!+5MaopD%4D zUt_aAd(R8(URMjZOnudNySmjX5xZ!r3qoB4aKs@tzz zjm^&oZ|i>K_RP;;k1BaauAkAezrvd~tD@SP9{iCfsMWZ%AZdYJKh5_g-M@DGo|JXm z{Qj`hBe%~Q8J8VCY5vH0(+@Zu7EGACe)g#~6K{lge3){1ck43C?cCKGnY&K<3?Ca~ zey8(Orw?gZN$;$Pt(-aUosK>EIyW)Gggfh}N4Mapu>2WM`s_Qg>_x8*ULQW-3 zDHobGE!k?Rug;m#qt~Bb$rWucr;V{m!>@Imo9o?l5NF}C@ts>OXU%!J3>mw^W8jZPJ*L6Mwpe{fs-`o_)*N!i&@Ee&ECT zW*a=OJI@NAp;OSYL+R@l@36Ri3Aw)I2#w0pYviDd15zP)DtQTzJ(b<%}n z8!G$gL}nTf<*N6}S~T|~$K=rQJ?_o||6#atpzdt-HP(6VEh_KTT)L#De?)n5x=Gld z+A5p5wZT5~M=B-QgyaYIzMp#N*u8U^ODvNu<}A*=^yVUGKt@FG(`WFO+yVQS+9mFn z>vMBggx2NQ-^Q7HJ0IzP>~p}vfisd(Ge6RD# z+}j+-r_Zc93|jx$SUdH3`Ea8Oy9sv7^1`w=q#iFGP_e@-bkCG=Sj4MK`{rKS)+T*) z(`h9IAM)PM+N){Hv9(+hXX9_?bmXj2w~9GGu6MrBY|+_?i%b{KX~8{NZDFfC(A~0c zN$MxpK1XMF$uvH)`p23H*$X>tnv)xEePHpA61mF!paboL6PjoJ>N0orXV0ren&mDZ z#@C*h>QiBss<>OZ^^{q&A_dnpyS)t@zP6qD(UxxtK8{@V(Wc;*rOMkCxKmh1uSa_J z$HNlCl-BHu?x9z*{TSCYctnwRONAPIGWW4upWK z?=b%G~+seUUhWDTBD;rR?E8@mvgG~zjl2&@3YdHP<7pfKaZWyTrmez?$Wh<@rDjJ->Qbk zU!6Yb_aQvsP?_RP*ye06qkd3NTgv&mZxTeaq@#94Q`e>0cs_NL`wLGMk9 z?RKxYZhh8hdBIVISI2ry9bj>Cy0_rmwlju%CcORW{<__h)eC#AY=TWXYS>X}c|p;> zy-|r(-LiX}J2!f+vHsU*3)WX*%dTtRdox(4+ofwt3YmuGPYR})Uzx4cp|$lkH_s2- zQ!+Ru*m9p)4w{zlhZoxJm-kNb>=(PSb6n?%pWIDmuDqZ3@$4nT1+(L=tg@4CX6nA{ z@<~U{J5kj;Df!Lew-?l6b>6Mhar8`&vJkv}YSzMh+Vtfh?g<*)Ex1d706~Mhd$6~g?#$eC@454v zHS1mT*PQOPvbwu!*WSCTx)0B1KhO7a1F!;u@S+G|I@tmpS?W!ZvNr#!LK7grK=$&d zL?^-p0djD?m_NaKM#e9?7tG4}vo_FExa)fBgfS_L2y$zk6KCcoh^H>b4gG}}3j&Ob zK2B@hED;H*B0uDGaRhQ7lbRB9_^`J}^mxKBW3-mCdMdGrohbQbA)YfQdea7^Y`mPd z(a3SL6LFSnWQm<`Fdqxfdfit3_MFO{}?baBLXnDG~J!*%S+ zjCngdu9>oJEBQ#t0qsJ~oO92Yt)CfEY7wX-$V!^%UG^ho^a=MK>K>apeQodR%H~x| zA!p~|tmiXAt2pb_+fv^J6x^+)J1Qe1a3XtoZ${Ggf3D4i;v?%Ezm4*b@mBRdeOI2l z_Rh>ibcx1ES^S6NslbC9gQJI_Rce;2`2CQ;D`?FZvp>*~jIo%$mcP^y3sXbpa&6ag z($afgbaYIzu^w?qRN7M4n4Tcf+g36(OJmVEFCi~LWHf$&ylcWpuvZ|3bbg|M2FIe3 zcjV;M8PQPmoUj9)YPSQ8rCG}DcCI+*i=PYg&cnX=qFI#o_zeAdonW}IC2P-Pf~gooDy)p|{!{=6yPQZy#DWHoyB%S#|Wcm4-A2A|uAj&B(ssjzN;Y z8H}tQE0q86UhautMN z@8E0Hp0yBnR%q%1Ey|jrvM=?_P#c}TBJWi38mWH3? z!+mfgcviNBtW&CNL?|&mn|;n%w`8x?#c<w*z76nP>dvr7+L)Y-iq9-YWG&N1wiDNFv`Pg9#va`q1&&_|ntxK( zLK1j4(KX|-8z0(I@?~U)A+Rr;R3U$DyoVP;!Z3tWk`#MY&kv*U!{NmBAy#J9uUa^p zOoKwGaK*?N4L?dIxK`5ptx@s}*ZA8OJiJTQgcN~sMf>6Ou`gBE9lzj*Vb#nWx)NN6 z<9v>MVpd0xI}(W-&z%d->Jge~s8Z*f&ho+*!`eQsxyGMLH4o!Gy7Z_S9ua8F?!IFa z48hGl^PO>>H68dBTv}&Qvymwxq&(;oI-yvGV!;)}?M327=eL8pj`#ry)eOd!G=VUR zoITm^;VZ5^7RGOfd<#1o_+QgUi=7Y%o4&-TX8hTP!4_=LY|%_a;)q41XngqH2SK!O z4BsjQop2Z`?wL+$DE!(>hF8V;83HbNwyZykec5pQw)}2LU~64wil}sJ;UaC;{r{-)1JdQk2cb^c5&HfoaRO+O!MXMoJ+BLswb1nMZP%c(}UFq)33N$Mcv#FWsY&(!z%Ntrmr_aEV#e|c{EXU60dViQ#gdOOyA zxt||y7@pX#d0{B8WxCOXK3~;2LP@Km>^b(H+SPmFy=ueE>CMi|uej#iT`1R{_U)<% zxHt=9A4Omx0@%VGE0E)|BZWQ&(LZY#Vo8Vm81$my+4B=J@~$xh_IG)s9US=hD|o)t zwXdl-C@DGWUT>%k^?Xh)=r1sk!iI}XMpW7zGOh&{)6b`QZr z(kt2YoA<{JTe8+iXw=Tjk}%{pF3!wb@LICzrZCLRYu$XYF_g&I=N5M{jPF7OG1QS zp@-XTrtg|%d*1iP;N^pZ+Zb%m< z-9DW(QTVX?rSIGG{tiNZpN`eSLf9|1b!_QY&Fbx3YS#our^<0lms#mk7EEkeocL+W z$k?J2c9pRYzjwr_8Zls^+3z5z)#*((>KP9C-PXxhxRPop8I7Cvxa2>h{RmIT`7!j~ zhl=_ZC-dS>=HKF=zsvFZ7fcHzBmcx_6&0l2yarN2U) zzsnE%moERKXaxjE|CvVFX{|401g-(qDTg#^N75JUv#Iz6FK0A_wdm_X1B z0ExiI6Iui&HvzT>VP#f8RSBwWEB`D z1UMmF0Itu;21+yk|A(voOHvTv%!7;F`~z6!0tHtBmP-I+Y@n))$o5Z#^8U;z3-|wl z)jvreplqQ31FK-L3b;A{9<2UBn;@tI#ztVU3WkJWu*v~On;@tI#+OWBunGpUAgBXQ z=V1baM-Yx-0zn-xzGMP}IWTkugE|SgH`YmK+x(BbOnJqFlq#YRW=Y( z`jZp{!c<_e3Py2Yu=)pyg25^nmx7@cs4vW5Fb94G8s8s03mTs|7?*;2Sy3|7I3ILx5&0U~sOTY|yrAM6Q&a$o=q2CHC12TlqC zCli5_g8pDn(D?o-DF`%6f50jjiGs!lhHC&$_ypy^Ko$%h!I%|1KG2y4gH;YNN(G%i zFlGcC_Nf)nT(f}22L^rMq#$m00X_pWtb@Vm; zOU)9^4}r&>mAp6mr`zRsHfP7GMR*@4N!TViy3pe+2NNHutdvxYLyyas)b@#C>qs>msMpTVCXuSrrc;tvRP5;g03B{-o@NvD6T14{ zjo9Uf#th=0@HFp*Vh~QGgfNVjLPFktV!|1Dy&FP4sT6NJQk$kqLyeV($S_AUV=KN~ zHpJ z)4-S;5??W0qP0w0(7HPUdT6xMNdIxHwbc8m(Rhw*53U%6H^cFx0y4~$alFD-39Ti;c5aSQmW)z-8~?^jG@s(0!rt+TYu zok{*?kDBQoeuRH<_3IQxe96B6YBk{7gaJO+w_u}J=ROer;|C`LNm-#3?^7I=ADMol z#y#wW2Z`VH#vJi|Fms?UvAX2M$4544Ynv!^*V269Yq1fJ{+aK4cw+rlC0lG>nEsgt zj6>hAF(Y2}w-5UyDhTJ;R}jvnW=mcTLxz;Yc#@Jq`H6cx{$JGiT|7KggqOZPCp(N4 zZ9iG}VMe^GHRg>x!sxn*T=>{Q_?^&j`bG};^EiFNiG$+CCjaT8$ z86T`6+2STv9$g#k(3D`OwAd*b2SNyvo3yb-U>2j8!aA$KCsE0H$G|WOdbGQx6eipK z_0M&6jHzGieTZh%r^ewEdaCgBN~GVUk?i=J%5xwbuMFYbHNMLs{;|uMV@XH}*fU@4qy2 z5I3Kz-%h{mbYYRy{S5U8{lKMN!-_`MLRl-HIPPL zZ@Sz=+U*DFivJCl{q0b8!ofI88Pf`z?CvEq3;8$htAVtU)t^N%s_XBvoAl2V`h*r+ z?)SHPCzD+HAWNtxjXr#&h@?`Z2zaO7V(>QNbB;J=;3%e=h%i*kkM{*LaBcQ`5_`oL zT%%o<3$IVf+bbRNGs@k3tv043Mm}QjN>?vS>!UHxBwv%#j<{1(Djc2th$nt2Z~M5K zY@uzXf7^CVw1gvWmLK?bXt}}eG11w4I^?3nO8u)w)dORzZ=VB(td#~9K^i83tI!8a zkD#0YLN5ELMp>`fDgVG1C*tZ@S~q9GC_1*+PG+T&uI{jvVNK=npYlBw!{6Wr+lLlB zi`?DD54R5UNv;U7Yy1E^)oEqaKRvzF9vEZ2uJz%!;djYI?Ib;;bW=f0sl8W_VOUEyT_`5TFUP9jV zZc*+}#?GyV{=V+k>}Yd%1(Z~@p!Rx_9DN2 z<>!mBlV~UP$Hk8Pmx6kyc2I7o6q$YMdb;(?!SbwbWB8KpgvHf7Dvw)}5}bZ;IR}r` zr^P=uuo*1~8Cv$q<~1z{gQaMjPm$GwGbqcd++G#p8Xlj$K~dg!UlbkIq5PIMQxFq+ z$FX{;oy5ul-K?` zVpI}XS@Bs{quQ6dGOL;_J!k8;XBy{1zv|1j$*qhqucSMeJq-oJlu8iYb0Chgk6uUL z1tXJAW({J;k74924|?l*u6r5lYF#IH>L60pN)nM*QF)2->8=}D>~Pgr+74~D>$?hF z5nrXd6{?f`g52|#h1%1EC!`W4QsV z#LZL!n(e8e9(!TmieZM3elfe+7NT&NbG!#a%cWs2z@iz^b}ZGcc2+sa%L8F@h&+!DNO% z`Uz1U{0q&9V#k=&-b%+r^t91@Y8O`!E$de6FMrct$yVpR zbUhPVny3m(N7Sd3#LB3!(aXB5Z_?_@c->_w0w_JsRrVsG!$n!_yXo%TG1=fmm&66= zSe4o(I+Le%Dl74VZN00H6xKGNCqP>$l6`@ z%)kLgOTyLGzpKA9u0*rmdQzzCM?jH?h>|k-YBfKv4Mj}eqX!oO8Qk4HntzkZJP`>| z=@$02va6E>N0TDw^)6h$b~OD$B@v;6x+-O=><^L=9edk5|e)LbQcMMXP= zqk_$VlpLe2ba%DR1(nptCY+jc9iQpi$k&e&4X!^NI4SNFg`9MYNV4*mNbhdW<9E5B zFWe#)EHEP;mf%~{b~(In3LG#6e0I-6>K*I$v#4VkIo$?O*3b;T9pBDmvnsuvLi`Yi z(P^ZFPb47l{^2x%(fCdbNet_er6%xa@S#t4Zg#`o)~T23-#G+b`|F?D%HI$KxO-St zINWKRIZLonaHsm3qIO}1JI|7QOMemL78v%hAd^~|mOh~W)<*&P+PKHj3G_27|p`WWgZ!YX>lo%Tm3dn+N`*FC=opcNgS4sMDH2Q*;QwB|w?L}i= z?2`yYM!E5j_;$xOihND)LX+Sw;nvaoR6E`YNAE~TRjNkOG++vKCu}aV$Pv|ozvKo7wL!!G??g4Ozbm8hFM99aNYrYQ;_`2$X~iwy8;Ss8jQ@C_fI9Dg z-|z&;)PJgh1=#5y3KDRE614v!f&DvU1@L%(x0dps3KIMmz5U-)rMWY`Phsr; zY+d03&X&@j4gjqyKnWXE72+?m`d3i%e+ujWWwHN1ve^Hv!U|UCz}A(&Dy)ArRj>jH zHl%wyuCJ3}A&7Y>NOZtbf#A zkV5xI-vudjU_-;7EOt=OzzQo^NdzmbfOzpIRTE?j0IPn?U|RsF*MF=lV7(Qju>R3T z!Q%rh{Rgb%2dagC(%!)eD@Y#%E3AKXQ;-4))*QhKD>z~OPZm2^!v&2GY~lectY9Vh zkHQMt@=q2!SQ`afkHD(tUu+M5ve?18Dd_xxGtU25S3qj-AB7d%3TS-npz{t^SpU5G zi-ODo8Xv&H@uUQUZ4Y4e6>RGOtFNH({nfexaE$=>11qdxJsGU90+08| z2Z@DQGg_@?Mc?OPO&IBMkd0Y3Jw5FiwWV>JZbhFFd7)P;J*1L%_L;rJ5>5A1)_nXEtAQEJ3vvLoD=@Je?PUwTY%q>bCbgVjr zEW<12Dd{0fYRCaL2-qIe#yO=>Jt#?zvv!%9+Kt(_>=5YW5L-$%p$w10p1cOEXa-7y zLo`T(cyiAnQXs$meBb)DMX;s~p&|=X@C97xXB$~$Pdv76`(Vasx}^RulI!S3)JhEv z#Xs;P=4Mn^$k3k)c(datM9EUsVuV`i>%}8ZqNh|sqwI+E(&o?q>~&Fcs9`aSeczcJ zQ-$#1we4%I`k*E)S88h4hY>xWOLxe$i#v#(ek$2$=kQJpD0J~iOzv5pSG^xGM;X{Y ztz;f6Q@eZk3uhH&Ihfmt_)7`)Ki?w@3QyA@J*mD}S;V-D>o>_anw~yK;tS5m>>dHPOioV zQ)FnNvZAa998Uyvy|@h7jl7fUEj|}jnRP1~^_QIFJ&sLVgWVT=3+|T_g7#h^873(z zZPf{i>?dtbDZlX~#DkdaA%yi{_G$8$m&7QroQl15i^Q~lJHdLVaq15+HZ(Pw>RQXl zSU=Cxx?S&o(C4gq!{>E8<6P#gztHf0<816!Fz17eF*egn)R0#sfv!72R-7@}Khkx@ zD+;ROPRs&N(=dLSUkYN0R(7QutheRNV}CX`X{{C}d`--0=`s;iU}x26j?ye3xx}$n zYbBy?G8F4bUjltMshp^%v2-qulvG<~dsBQ`Ok>tXv=dS!7mkQ*@(GvO<#Sxg+x=p9 z-sNY@3Yf{;o7h{#7}_t(2UA!8iD^z;;gXAEH4OAt+Qx;Nz2-Yq-((HF45LB?0W0wo z3pXyI1owNeMGN!mtOT&U&&Ekv+?5R8_SGB@EWMA&{n~e>)@(A_@S~<{*W7weBFb%X za90C`)0N$M^Fi7c=T%MWZ#;y&P6}CACl`NlPDcc9cAA7BG+Tf6*C*evr7(rXx7+12 zHqq+3mmV!1GOrqfdDDu$XU5V#^WnShpyS{yAJ&$A5xKHCrrWbBISwgI#?XcLoH+lv zMyM|D!c*&6K~L)csptp&^vU-N2TLfp;Ras>k5G-=DjbDx&`Uay>Q>9Y$-h5ew()MR zXzucu_GwokI$=hNXp_N9z&pQKc=p<}i1xJ&J<83u{wVizXc%vZ#W5cQUZRpsHwwg1 z)GSFlMM+7q@quB&gGEct>TqQ$muh|FOnG_!DQ-#Su_|TuP-S?8ThelKy!vQG)<|6F zKvZk#eQeR2*CAo3;v=^SQogU%%{*j{hd$PI5Qq$J`de15ZV@Ti;9-qyBb#4qL$UhEQ;|9Sji-Ryp}5O1(b({VnNXyMBG zHVpojAf97=`X!%T8?3)Igm;!hAXau<_=Xjk`cQ!hH5NVV`>B$EWu+?~9<_-)o*6$u zNT!##5}%-I5L4C0X|%N;q8?7S5=WMG-%KwoHrL;vj^M-NN*KQ=WAhQuf_cVmwELxp zBCNdW&=f{kbUj4fKZ@r25Ut`y+^^a$UZEn{<4buZnmEDZPq&eJBy-QSNxDZvt8ki? z;^$_1d&ibisqCy04;iI-j}3lS!NX64T`{UEZ@KWbx=``vh4xDha$ZRy#;}{Mr#Jq_ z49s_2{{Dq7)vNUtr$9B*0?Kw%6ph!?jZMl33F!qFCq2oOoA-8_Ln(^vWfl%5XSb?&&yhlch}H-dz0<)SF5lMu zdB)48z8)&L1iIvYE*Gi-L=#=z1gFzet0T2b8o!c>(cG>lpMuamCRz$TH(C@+LUAV2yaPXSexaajh}5-&F)3b zdBtNbJ#5So;{Ma>buhd6>89=P75ZXTtCqUGBSNWBqy(AiK-^95;pz2@c(bg1@0#j7 z=b;(9y0T~NY!cn{gOjJo(IDFa~_>eK%AaMCSU($`0q6%ZG#fy>}LUE}}zc)YT zzDal7HY4Dk={Qqix(Q47Jsi|qz2`FBH7~`*BF;NR=_Z~YE$l)ltKJOqjc&Y+%-J0! zTIBtHCOjivL-2M^;b>0}AGPlCWQ7m>LK3R(qlGJ?7K-^+mq6@3K^x?Y<8dWnS#t?40>IpRECJ>a$XE zF8lS1F)ev>x)c%3vCwtnQO=7=fhzW6k4Awo-)amE4vC;nyKP)!$cbzAt>?LWd9iai zKOWR2Htqw%`~uE6i9$5l$4KN5%R(2`S_--8SPxjV;~IHs8!1P$;wy>@Hw9!S-?Maf z)qT}0y|PupqTaC%*jlIVJI>UB-}bH2`UE4Ke~M!+@jGk5dDZwX=GuNn^PuTN+}<=Z z^PXS`rom=~7No%4yG(kcQ+{@b<0a-f<-vvZ^l6ksliGvq3N(ZDcSxfCE}osV)abA_ zGIDxj&PuKkrc;a1-I-+wOtyAksdalr)+x9ldhgXM5ARZ}h`CfU~)$RXF?zwi|NZB)#;ndc|9~_P+3~SEBHFZnlUwXDi5cpfl z-z8+V@;Rs1V?JX_C{^2rsY9F#KUJMXoC`${wS;YtU{YR-Fu2QW z)~}k|@+^9rr)Nj&!cx3b5{Y%7z4?Mhvy3_P;kjT;+-IL%yb(i+F`dPVp^x1!D9=#d zv#`>Uv9glUIa-}NRafv+P*YRT@unquwC<*0@u-*7?ys-Wzi{t>9$fO-#^l`>G?zku zi~ka-mb21*TE{fUcPG+KnBC6W;u&284NtyNr-yWSBn}?KOv|+LzOHLl*@^umFOQ2u z)H2eF4^MM>uHj~J%g9Gc%_CQvTW!@#-m$u6^3X3g?=~E?lcQu0vp<;B>ZJCq+iN#9 zK^XmxneXgQl@R{%zGyKVttw+)o{w6w0=osrRv%IOgNlll+h$KI_K&_1pnH8-+&+N1{e`HQce4X>(yk(Df!D${BXB}%C1_l?yT zQxo#$do~C`73i?eou`W0No@K|5jD3(GPR-J=4(oWz<_vj=bHzHa{p1NspZP zL-v4ExZx~K1CleAba%)iTO7NOPihYK2q)voP@Q;C+k?ZQKgPnORi*6K*W6^GL!L&{-x z!NuP>qDvNG+z`4__9evMDbRftH7f4|WAJ^Ppb=0GAo*vMQ25QG?yn=YN$cw)-sc_+ zZ%)}FtEFoOAxWTm1cEB$y=?8d4HC}!&juVyM1>}gaSS8L(Y&u=Yqy1=ZF8}_x4T%* zbDw)wzMRP>kvRU8zXs)di7rl@jlXpaD^H3=-{0p<)+4?zNWvZ3+Ru6~S+_>TFA6<4 z9!TFW!ssW;w)*PpFN6V#y?$!U!T}W+thdezM~VX9+4w?{vmLjoJQ%&h+r$LSsaSGk zVXHH^2fVtPs#EqMFX=o3?xohr!Z7ee%|(;MIK@zUK50-fpx1|Z>UYrQ>8Fs07Uqif z3(lAXX7)??Rrs(GRLZ*;F?%W@ zY|T$lv8FNlLd=ctV#+=akgo{eXsj!Ct$*)MNwte9TakH*8paZzhwOn#MhwgJ4Uaz= z((c-*iR8r2d{_d~$zB`=F((*%v~%#yiYD3lt1hMOXxdT~A*>g#1o6%b16dbfTjApK z(5tfp(QjU1nyDBvw?v1t#0w%o4=RL7W9A?a;v|0Dce@Kca33cnR(!2ppdka)L$>+vBei=?(e{iOs0>u8oL^aIOuUb-iw>Q0EL?dC{Rof4B%e<9qyvA7 z*^A>Pz8K_Vvc#dR9 zc)c!7HCq@Y>XDpTQt&7C&`l7WUSfZ$MI1k zZ}M=1`fJ?^M2ONAgOobnwnmdW62+ngX>gH4ZgeiJq#FC?eYkqOx;Xuqbj-1JF}B}U zD$QOa+*Ygc$;dFj*I(6fgbdZ6LWsivJ6+$TD?MC#9Z{Ah7&74)-RsrIB!ytFS22Fi zx*yu7k8j(KSq}W88qXdM3!qRVH7E>-aw{PWCB>V?XaT((7;B%(}y`DxF)dF`O zZ&TY8y(C@B@m(angeJr^Llox%_dD`mY|QM0<{ZD44@(Gz|5ma8>tgHwToL`Gi2q5L z_#1d5Ci7NaLxEP_)Kx@I&d|w%Uf9mg`hRRL0IXL38;ZmIuQl7BHvG?}cK@co04M^) z1^?Y{1IPNm$8fko%d`K1;rvtOXf|%Z5`Mq~=o0{}x(DQ<0gwaW0elS%umi@WJq6eS zQ_KJlU~C((P&6liRd53yz|TQW19m|08DK#^;K>D8vJZ9|06zs}(*f4x19HEB<)DE@ zr~&Ui`3rzyYv7{KfK`ova4^7=jp166qjZU^=kF#Yit087;VOQ;=iyQfe) zK$yv&P&;4~KG8X%JnlyAod95x`P4G{STFcg6D?brYZ0o8E^b`|JF z09GmnZ1-eSUfv06u31)YArp+&qQf0VD7LyMmv9xqYhB z{Kvxpa5n(j0L9<|4+f6G1B?R{gU1T!2RH@~=z4gH!DHtJ{PW~%U;`xIfqV^YKu-n0 z8UYBK1GEAP#A60j`UaL)20YmSt$`BpfTjp=A|9YYU?LtMR1nZvU@{(XdVqUBh2yaU z&IKqO4-jDo*ykx757-Vc9q%7A@qkke%EV&@3>lP(2kauCCOh!S#`;$v2)Nw-F>>w? zy87<|K`4OXf-d7()+u(E~cm4y8pm|%-o=$x_`idPvidk9J{BP`U?yM+(q0^1o|(C_34Z2KZpHiM%me) zSS0963s{2`*wg62WVrx+{s+B*pcxpU zf%ELZ0O$z{K5Z?|1VUv@KyU`yA8agmvR{DS0T$3;GGe&v7k0hIY%;#5JbI0t@eMdSz8~cq;@k4}ZC}3ClOL?Hd`*D7^%aSG zkb0(knRZCKp*TN3x=c%MEN83p1v6h1d1fXVWOCE!FJGLr+mTO=uHPMx?gEpOVmr~6 zdh|?Lw+iy_)`(fLD|}tX8lvuhvaI2})IKt8s4!FS5t3 zj&0P?#>sF)Tw13T;6KeC+to#62>52pGbJS@wF*xbUUpL~-kvdKy|p)9^9S__OD=x5 z;g+uQFEcJBRt-CaTLx*@A&-zA%5P>AjxT%aujG!Jj3+;Bu<|!l3sp!QZ|cr9H~GX~ zVr;y{H?vLM$@-bdL+>nSRbroWT-(g<>Pt0wh~=Y1Qp`yR%P`d23k_&U(r1v*XC%?Q|#q-QH}=_Qa!qfm++JXv${h4z6r% zz&T$Sr-DsJzNthnJ$z zF`I6=2li{U9S?#NX`+m4j_Mym;0P4km&)Qx*WKZGPRj3M1RZs=(RN8qkW%xhSu~Rlq4-uA=`@W?O_`r?`2+q2RXn z*Uk3;%nhdx&+oA7AtftfIBt8-3CB$MLaLHp69-{!b9!lfKeu?S`T!rr=g5;$rJN5P zoh^uyM_D;FyJfw4{d>#OVTH0Op-tE66?v0LI>Jp=l~Yen%eKob!mUXVUct{FJ=stJ z^XL!)ZVU1PVJ&a2=U^oTH6S&!3-5G^&R8!}bNyut;pht-$yfRgJ}8jaytP#la+ebN zZTM61gydY57g=oL)+Em!23dTKobcY6IizA}CIFHSI}NfZYfPgR8BuT%1{(FfE1ZM^ zN~VbD(t$j(2w~tmq37s&H0&0%IhYAQEP1<6>NIr74DvOcQ$15E!{v#2F6X{QJXp)A zuOK$-s>iEWmzyrmp3L=%aC{jNk{^YEtKcb%w{cqjHFpTF*caBc+#&7Ktfuz()hXz_ zqt&|ppjz`lt)dd;5FTCuc`y{_I#a~0gLL#7E|oU*I`RuMeo3)cZ$;okB+li{uC=pJ zS>R8$gLbwcC&)6<=<@KDa=i@-{k|2>MyKcZ`5`f9E<)m}iRV8v#`s^f`vs4FZ9~TS z<+Oi2B%yD`_q@EzFXu}YhIh}NO`%PA@#02os6?{5sD1IF=)UBbOjibD=MXBbKazs& z>*+1pESlLEJ(`llw0OTd%%~PRv|j=-VJBku>DrFRj1Bc15#^{w280FvG)(w8i04Ey z^zMG|rall1tF=}lGGAcuo^7*q&du!NK~51I2SJCZogIJjH{H!sSu?I_*KOlKHlFw6DYFr zV@9}t=d;%ZGCbF}5B9OsS8^6@c8Gq*h~BB&T=+Y0)@+@c7RMnV!?odmR1B#h zN&01dApJcil75nKuR|a}(|NXy=8xET7e9})|DHHl{uy-5Jd{g0oQVmnrg$#aIxBK6 z+@&IWHe4R$RQ8#cFa>@!Mr}UMH@{?V43R*wqVl3D4N3Obu=$%ilGSL%(L5%0*ppOx z)LiKgRA1(2bY`O9n1Y{CzKIYNDjQHnf@9LQ`CN68&+jX7n5cS-18Ma6gyzB}OVlqR zm}||lL6^-T{0rM&tyWZ7t-^ck287;0`N^f?1(&CeNM6wi%6uS)cf9)&58M6Ft^Dvo9HfdzRhyC>t>i@d}=7}XaxC3|ygygH^ z$h35UrS(<%Wb_^yt?+Pwb2MC=)~IrNI$7gei+P6*vQJf9I3=f8P*_-Ju7!J2KC+dr zkHC9e1WDzV3eHKBn$!+NkE9+HpTaVmkV^tf+<-WX()V<_bQ%!%PBM?Q(#Q-RQQ_LX zIH6USwko9%@gu}Rr21r^s9y1_Xj#9&4k%ctLs8J99pJ9=yO#_pyvDRqwaW*+iNi?C$0){>LRe11u z9RCE;qDjD_T$9uw9Ck&VSsD>@H8l@HwN80iRq{bXDfO#!@rX=H8J>(8IQe7oaZ?>Z z1-;;xg|D}!0(uOJ)DB7)^eN}tx#?Y*v&G&JCV$&x`Y?ik$(5l;6L`$$#JLjsQ5dbh z@B98X^pqyNVyK_g%+>cI@9RiLWfT++UCYL*OY4j5W9+s!qiD6o__SeRGGR1i31zEa zHO!L&8-v}oYF=Kd#~;QXOeXl5O=OTh(~BzM@SyxI@Ivz1CPTeE+D}ctaN*-Ls|-SQ zuNsopEJrLaVsK7*?V828K?U?Ksl};9hiobx6(5<@1akg6Qz4Ea$IlRKLaoi*vyoqa zwFc5|zYs9ViQfO^*u`syV#@XoZK`T^LTY+P2nkLmA_tMVk2-96!Y4Q9C+F1q z6-R~N>r5zF$~PjfsU2JpnOJnhty;0D1}j+sfz#H}W0j7{e24N(PSR|mRzh3opn&)!f!H;8gb-eEv?W8qe!tsZk zCSG!c`<-3FJU5dL_)cqG&SKY)N+Z;Kp+;`0^p$2{1e$WYYaFR|l&2UHVY$G66avOj zaw$PkAN|!yqC$*=wBg%P&>NyXlj zXyTV1t0_vlv5sZQbfA7B3~z@C7|%gU7%F4IiYFISz`=6mba9b^(SViu6qit`GTa#A zs@vJju*9eChS@GIK*57K;wjx(c%5DKBe|5SWVnqOb=^SJunj4;+b5b=jv;PH>p5EB z%<=L|@2!ayizVgN0siU7xi6@g$b1D~O7#lG+{lTM=P~L+9%RL@5G4Z^dxFx6-yVeC z6HOSXE3Syc%pk1X4&U?ilm5=`*<`&Pj>k3$L3p%=yLr?~*k4w=c$l3}>h_0i(hx&8 zcUkSJoVpH9YyZ~X=ElIFGBNlvS2-x{`X^6;u;%16MKAC5xU~%@yIQ)|;uTwVLX4aHPx%%*wgnF4mS#FQi#0VB~@ z9|ZXh1MOP}3Kb7Wp64GSB6{HUCrw=}gft^iuk?-hU!zTXdMN#UB?x{33`vNid-=7whu}qIe_!^1frsjDbk5|L~ z84-Qs81~|~o`)IZ*098R2Dy$-HcrI1oW!oKmD0A;wP?S{-c5e}!Zj#1xyDS>!3$Y- zY(7hs^2CiKKg9EkaabW&?O!BTH_6A8Z)^^ktXgD6t*wT7SjM+MRh=%~_0qY)aY)wN z&bAfZX=)&akMcV}qxz(`$*7bZt3bXa_$kFZ*Yl2Q7%KrwsZm9*xWw;8v~w4p#RY|b zSI3IMo7pMPO@pgv*|ru%2npnntr0n+OXvhEEo_+#oy+pcDedxakAQeYuwP2=+vPR2?-M_`jJ3RXq6>V8%8j-K{ zv`$1alK$pOTaskY;15UzOYL85FNAqZC+R~0a%V}M@aK>71X~cz)ASB~onP_8m1i?z zXKIinnuUKw!m^3~wi&yOleDpZq)-muefMH?4X$$rnyDYLC8K;*o`GMG7(F3C%T9sB ztf$+U+;7N|VdYYpZr?Sb7Dvt!@CWVt%D@~^(sD++#)Mv!G%u~PfkHIjq}~~~2-3=5 zCj(4rj>jwyEFA^(*ZeWdtJ9$o1{^<&6KH8J6RK#kk$FhhtuC%|<22+O$VW*Ua-?vg z1E7knWm$SYneVYoxX5UDA~b4Mhr^k? z(O)q$My9nSm9wC(4yxFZW&fCZztdRtrXS7}C*5D|t^PsGrhrq%oAJdd)DtlXXTi9- zx)%uBo+(|N+^AatU@PPlC;|`U;IcepO-26#QjTY2i-317nyH^IZ?UC5kJ9Lnz_2vtwtEHWbPax*~&T zJ8LQ2V_WH7ULmASNj3Z`%`oFI&Wv&=$77J>U402NQzDcV#5->i4aV1y!&bi8Z%ITD zvm3RcJf>&ZJ**!$V=QQ^MuiX{XZ!hQ{~QUEmDcyzA`d?hwE`7{SJXSy4( zWMaKmN!gUC4Ie*7%@ZT&G$ z>G5(}|AB%aN7>>-p|7uYog1$SPJ)e~eE_PS(V?+a8BQv-)W`*+QuY1IqLbG~H*%f`Tq9`lh#dZ}0yf zh#q$lv5ePf;rfizLaGHz8cQS>Tb<}`R>W_hZk&6VHSHWa@4}D~mVH#yUVVJw#$SH@ zS_8=wxyW`_7`q%YdbCts3Kva(g9D};v*C4CJ@dO7c8*@@+hTY~Z;yxVEDESizU@Az zDz(s~Z=$>K$+ySaov2IFz6`rGc8oMMw6ru%YA*dxz$Y5ENm=n6D+;Rc?2UwqdYC-O=xvpM1VXDf91eq)=giHa4raX zm&-~WErsmRQerxP6MC|jX8_x(fHhhqF`d!tb}=3m4n)c8wqPGwHV6kzZ4V0GXjr@o z?WEUZ4D%V(LxHUd<0?yb&oo6)g&P8idHKgV;3O-QXEs#EWtxuduBo z?L9ayQdfyriMxn$ev_Zgo6CxT$f61iD++oXivM|*+^{tAwneskGT4L~0)e+wHe$r)UuvGh;A!!ncsF2;$>Kii0 zgfRc{wej$|c}jr=hNCZYHAFIZ$oJC^DHz7s=|+bFeRSSgDGxnswy|UxbcXbZua0{J zJdM*e;16&7Wy*8Dgu_+OU4^&`C(`-Ww+Xa+a+(M!<``wPeanSnO}jEFvS2ydxm4B* zu0Jti`w5BktNbJSxR&&V=C-@I)NIWrONAdxq1{KSXRs}DuTHW5Kla`Ntg5YBA19TN zk`8GQ5jJcZN$Hkuq)SpjIwhq;2`Oo55CI86P)a~R=|)PryZ&o$;Hc-*bIy0a`@i@3 zJHC6p1_gMX{>n<8UcPGb1V$}sa&k@1wk5SmhmtmYy0!%Lvgexv5g6O_ zt9wNz@?zt464S4|6*%Zu-W!m#Jml9xQ5i6&d0ZuejP2nIUszf3N_TZE%id*2M%m$t zT;RQ?t{rrA&M=DLwX*6^gWKv>s?sX`{0l@)j-9I0CW6?g&Rq?7C#s^FE+%!n!u-)g zG5rmy?$SIBk?g#5o zcIetaOQ0P`;xW>wvEO}J(Rf9|V*E}#e>^`u59&?*H@W%sj0z(t`Z&z@P)I_WvSW%n z8JzK0$cw8SB>JqlWKx8=K3Z&WX;Dk_<0CKV`P5(rV^K{j%oB@Mr(4M~`j`;-fHY35 zsozyz#o30J{N#*s>ie>&zRblN%{H@wMR8WJJ{{05(NXktu(!=C2)kLDYcV-7IRqB2 zp!A8mpBPAds>G5~Tx>PSNW5=W;f(gQGY4I&$1wCO#WJm>XAN=E%R2K-Ym?_zcB2`X zb_l4LDQ)he&TRZt`G@ZJo%jw>txrSEDMtJFl`w13$r2s(ABsK8TstN;buBVnOfT_G zDZ)k$*=QuEexfbU6-JuTqKTn^u&w528+0&>(|3lX6VG?t2!BN6)ZjWu-__CD5m^so zUXo_MB-kw23?3rnLKlt_5imegZ4s?xhAqS!4KT zIssT*Xz})w&2a^S(FnNePJZ?l-2K6|Put<|uWRzrK2YPzFkLf~EPn9Lb`X!n^|d#f zScc};5_m~A2IBiCyBynvv3teaD{o>eAB?2*EgB<9e3pCZ(OklXz>k5uNfv(1VHZ6- ze47NhY%~6padq~11q~D%T2HR{SZqc91#NRbqU@j;*K>9>DZ$6a`($bkAA6fY?sztl zj;PWLCYt0Z#db%hJFvy0qC4-i8wU0DHoWM@%T^3y*@8Q+QJk*2FY>0hJGlW>v z=Rz)iB{l2r^6quCjM5K+Iyv=CH?B}KoQ!xqSqqMz=1VJd zbhe~?z6Cz9J|5wxWII#lR9wc(#S+YW;q&o60`}w_arkS`+e2E^Ti%wL=C)2D>|*Op zs3p8JC{Ltk?Z;u3D3?0Y+F}u$xIf7lI9uIfgc_VWuC*@I@FeFd{s+*IX93pF zSghc?74)E~cY-Z_t$nSs0(i3Hdlc?CbvsV$#zNStY-U55>+Pett<2v@V zi}+#=RMOqHe8Al*e^)(5!jJg6O_59yPI2JMX2EuWctOT6Fkh>rT2_-#Qsj&*V;jVSy91ej3}4 zT8;4g{8D~Z3~lp|-J@r$7~0@FF&hVR9H^Gi@0SfMKc^m9JftGp;6= zhR8>Jrh|Z2)0QV*Z_u&zkV@Y;dDLf-YJBEt3^w4|Gh_-uX7ZWPhznVVn_F6Y>-zc2 z5+>eMC6ZeAtkcn==7>d%cl7b&Ti-Mqg+xLv3w&6p^~BQ1B5syeh4|XIEiK;E9_2cH zY}Ph>GfpCYM0HNvV0^#FQ07T88G`#+rnl26`K0dqFVWY?><@BkCY%+P;h7f7)d<7- zUI=}5m34CBA|V?ZOK4aOx(Bj9+h4Kl0d{V+eCe9X%2_`F*TSqP-CAMJAz&KxTl2zW z^0;=-Ycjn_-+nOdN{7kr*Vk_f2Ks9o*2NM6dyrU*{S)9jmVxuNK6SL|%~=_edOn|G z)G{m|X4DHHim1X%66795rBSY2u1J0YoNCS95Osx!U!Wc#l4Rs(JR-D?~*ZP}t7 z1y8ci)DQ$h8ZicucKywK!x>_hee80Etn4E}wi)(sHn7Rjn^w55cMr4U;hIwwX5u=; zNPU>vab4;`)|TM%K*x~hs2{R|qlypfr}vP11upGUrq@ zHO46K=z`a3QFlIHqvp|rft%dmp?ZldASa(pn}^fw7c48$O8xi@6>goVE4<>OLDC8m-$X|q8zF>AiIe$QSjC0=9Ww_;Y zM%YC#kjtPR7i_U}p4UY%kc)h@m%%_TxP0fqBrZdPT(HG1SbrA`stbmnG)W$@+mU>TR;I4;<5=e#h0{s#^Jalr|^2nKS&0K5oCeDT|P z|1PrqUW8k|$P0WKZW-XO{ZI3{evVInp*C1pInQ<8FBCGM%6=8Q>Q8wbwlc;I>n33Ksbep_Y7z-DZ0qztI8N(kzl3X5#Os|jn1F)6;YOZG9 z%R-%y$3Yc43i%+UeLk&rAfNV0ORrXzc^G9_@H==DFs3oG^ z*(Ix}s|zFuGZ+*t+zrY%k82r5_9T3;Xo)`*Ov=3iA(%3UMi}IjI=VZsXzq^Kv?i0c z7CfogSiZfAuyI^9_=SU;diNFI?i1acBGi(SS>;zr(|B9DTsYwo)I z_X}f83tOirl=JsxjEi^$64gvcgmEmMiW2eXNa$$4+}NFsvD;#+mD73sxa-Th=tuV~ z?F{AhCVKx@K?8I22j7~WNV-4O%$l9veD#z*EP8Ka$|X#(ZT>;Ie}kvz@K+MuM+)J( z6`EOn`?C>enHyy*TTe7GQ)jU8iNQDdABGoKC|eW@r}ci^+GMXom=cUc$QZjFpZLz+ zMhUyAI%rX-3HzGCfG2*4MO^8y+2{i{!o<+4Oi;%20j zcubDu#3L)_+hFE9kxU+hNnBTD?N_scAl{g`AK)IgO|{gPY=m);DE#_8dLUL*{Y%m9 zUhv2U#q%eQFJK=K^~r_Z0XC-RDn)(Ckvnrt2`7`F@1#*R33^>;WBg4=*sLJ%a9sz1 zn6880up0@n;Mv{iH!2>Fodl}Bz@6-gG!9GdsCCcn5Tg+%JhOQ4yn;YR4BH7SJk6@} zif~~8PhKasy$@>X%cnQ8L7X=PY?BX)-ZHyo)Jf^KS<&Zz>@9jSx^BvlA6a~_(@9RF zNJ@tq^}uoH?d^FB&|cZ03SF78mAG%6>k+u0Z1LNx1T#-jK|7e3lG@xI#gQ~!qN=FF z8_n2ZpMW-pl&)D{M8uk%v67=W-k?kL8y zFudwVHW^NBly1(Z&?jD9Y z4j2(b6Y5$040it%AzZh#oTms8$~(w0H4=2SVrsKqnY!);9ZBzAi z`)4aLPWnH7>AvhwncD|`8HdtT4`deIwiswrjKFap=`|Ss{7&j?2aS+iYO?<~GSNoR zU75tiFfuQOnzu7X^6C%T8o72!mQRv{^%p5$Q`!!WjCiDSdr;f75&7y1Q*aVT3^O+u zIZCyepeDV&ecg^C06l%2QR34Ry>ymgYoB?*f~wmd81+L7pg(c7j%VSZG|VXdL|sGp zWyxoLDz1d-Q-hH%5*Pf*`+>;=T#Esl@Niy7UFwd58?nx#!OUr4N!YCnpZJ{Z0!y>2 zW0wNw>4H#*rdL!{ThqIY#@{}&o=C8_6y-hS-$^~}(&m-PbeKjB*wf!z@ zbES#qm7jW30iCG*JcnUeX>78bM`mB~tvLT}21L_!&t8n83b^H$uS1utnT|tFX$&w! zHiVY_-an+r8w-XJk4MF(fWaxy8M>?fSci&r`0C`2{)>j$!;P$l0)*I+);n?C^Cq1o z5+{Y5l9m3*t;(i%v~TicyuoDV)HiMv+O@1o=Z<|MH^3O*B3az8dpB*Go+#T@4{2<4 z=)?oxezD|^ePNw}5+Wz6fLp1Zh3THtKzz(qWob3SYfD>ika!h+2+NNZ@! z_+}=Ce<;tkus$hD7QZ{0&Mk=(OITm35(4pQ5t-e96ZZw7tpqvi4D_kCyrvMo_-_Ss z97PnZlDa;b5j)QU(1?x8T>1BR9M|fmtt?H&x0*~M@7&ho37c@oXfLq{J?^!d^n!7+ zts1RnTlN>UVn+qz<(`qj6~>Lp@bAc(S?b%N9G$70rggi?%=e6Lqa~_Z(a$$-bUEU` zlcb3pW^(orsGpFPcqO5WhyI?5=mVH@zm;&)Pe}F9c8?h)dwrxUc%`&XWFxRnbEsXA z?u`&k=0n&!L}d;8#-S!TA&)1Fp&on={Anw0P?9_#+6XL929mX&3J&+o*B2jq$i-8m#P9W}*5j#%ce zfFZl9rfTFt)HbQd+v6!q>mbg%Qf0q=e0TLdCYuEAdzdgjlgT)~#<=nc#4deX_|3y7 z7;qYr;zKXizq}YJy_zUC)nPUaZyx>3JK|f>>n;7%60T*O=Q~fb7yK;sCf#hW1gg4p zxO()_-mplk@KDv6pmQT}#&vT>%)gFbmauu;O7rRscAHKXgI_k~f)DJ<)MK_Gp3@#@ z7O`7}drM*L*?h~_@*d32ZC)qDn+Wl)JT>NCUqRg6ZeuD+ekKVF=U{&v5`P@my&K9p z3g+7F3?J1Axl>2jw{`Kl-g_c|j%t|rjj0E5^RE<+-%;eEk6&28xzD$&TD^|vnz%?h zl6pOK#(#F{Rl*|`F(nE$(g1oVuUZ$3FK&meJJU%BHFeC>k&@1oYz+@yiYnbAc^m^r zj(ngv`PkwijkVC(3q6j^vG?Y!pEBP1CzaxL^G|=`6q3AiO<0fUai4JJ`WUrV4O&he zEcSISEiaBHu`v?MYDqM@ zJ@QK%2N4&9NasBdj*Os)lN&jhXr{Rj2f{EF-kyouU7*ct0vp*SabMAl2gJtSxr7*L5- zN8@J0A)%2)RFGEk36R6ur|Qk#I#zh$IJPJByge<~EJ(}(Ien;^)L_cTy{xaN-gF|K8Hx<9f%1vd*?cD2LdIvt&`d-58Kc$`hSY0!{ zdS?jV5+#(isUVVmJkPop=Be4O1X@^OcYcF}qmr4B)}`^~`Re5Sg_@YToxAfZj)Nz{ z&H1;Hx4m5mZ{Au*=_voqg?RfaP9_s?N$|U``h|*c7TC6plY_6XY~8IRwNiuqf}`+M z((G(H6fNmGO>BeZ>042DRW;ANV6y1pqu zKaRA^*t5T>#m))Dd1Zm@ocXcRrT^lO4pt z%muiBe!SDAN9Z?|*jd;>>}-I0@TW?b?}NXo#0mz3*f=?Xt;avs0z8lxI)@z^oB7Z9 zv9oc4SU4b|gnwus;HEyXiWIqq2`zQQ3 zIoLs9Hi)b3$2)x&it}B#|ESV;nK+Ln@TW=~+-x9LPHtca{7<*~E)>74_3QS17m8oD zkAs^F#0~6D{`pRSClt)AAa)K`z?=J1`@T!XFQ4x(K?mH(e}E31r2Yg28z%<{7+Apm z@*i&n_?s_l{U{ZzEZiV2NESafpb{9&`E&aKck^YXAKS+QJXS7d00Y3s%?x7YU;*~5 z|8%b(#Nvk*0{iGeEWkVpILUuq?Ym(7)I?@Z5GNS2_Z>K3<7DOh`56P=^7A(G@84tX3<`TcEOLw#~)5U?{JavkBj7so&N zhtIG2=am%54WV}?XOekjWo~U_Z|>j%DG&#m0g;rS@@$?LeZR)VY{U+|>3M(D?-@KW zHgteq^D>l&n2ntkq~KR}15m7Zkq*zE9NIacMBdH@8p>IVNnS(@K+4$J0oYz|rEh91 zeDNs+ndyKtmCW>w%&ko?YXT+qKoA3n@`MJ^CMO3FxcHChJd!sn7z75;1cO;Yz`6%F zpkbJSbq^K}5HlEvQ2<;(+|K5a?d1h8o)Wa|;*LOj?DVbeZT0Pptqmbq0d<6x06PpK z?U0T7z%75YhHlTW$ak}Mv$803v-h$xv#T)610g6rm$6kUGqbY~u(ES1Nqn09%)}v2 z_h}LZ0jB33a@?<`C?NF2k0Nk^J(vX=sr-Kh{6A#(5-k7;QviObphJ+jKprTT*LQF* zwzK}>L|foQAb;oo>~oSNcd&Z|8ESueMxx>EXmH?bh-*cSxLg}Ihu)yl!HSmLR28i7 zqEI&oXZ=ikglyjV23;bjy-rt`co%jd>ftt;J4I)Bhg=hWZ6GEMho#V5FvByJ+p1Jk zc!LcnRgy@?2D$dU3j?b_<_S>11emJqdZigzuYL+Y*Xgm$Yy_)^?-p@M5tGud9ySn( z-hqavl;emE>yB{8)GvrA_ZKdx|8amqk{~Tz)dw{oRJ{L2~+qTUE0|*@x&gYky zUQR6MI#leDwV{K#jWu-WKsPaex1#~@At!^O3PG3|cm)En0-a?8){dA#94yddVCn#I zv4UASSs>YDAxZ!YISAkqt6S0l`|BLG0YXjKFmfCPc)>O5fZX`c?(41~K9R z-2Qkm17f)R_~fh912Yw%4uJw-DhAXdJ79fsaYI`MjBlV-gu0+0lx3t~9_>hPaIdudDm ztE~Miw3p_=-wf4r+wTWi`!kUL5wt(s5a(9I#oP>eG8c#6hw!C+#SYa<&_@nLUb8cI zhNwDbRyGbcHX!5`q-)Tx-0XlNVFw~q0i%KyFin6A-P|BB@X88|>>qU;5dP{%)$#AN z12Vk-``Q7K_wV-XztfI$;~2o~4?M^j0Y%0}&Il+_Ae{w*f~M$oIhtA zX9t3P{p!x9P|f|HSj0aJXQ)&{?NdXbHGkNr=OsWUc&MWgg5`HR?bp-%Ia}+e6Cttg zelP}1fKX+SF$aA#&>NTlLCH8TW&Yv@=jMT|v5~pHkPSqHASeOZZ&)}1su33(7zCt{ zKUZ%`z?@^~AP=#z9qh@WOVQ_Fp!4#D>ahl(3 zHoIP>D{Polc>l#xAz@N3UN6(G8Ln}~q{q1$m$9<)t0vCZL@s`AoEX~BF&$XuA*S|) zWmiu`)0pGasr2DHCl57FUE|-+d~tVW*HzUzcyRLQ@WcenXtRoMV1t1kjy^zok1RW6 zc%*G=p6Z>M2Tlt0ZAWYWKH?`NgFc(l<$cXQO81FoCRMw=C`razxN7d3PnV~KKaFWd zV4JLse*SjA0zLO@q^iS>88`~vU`ZcA(#`ZvULnt$pZHU#zH(Fcm3oB%H-ghw{F*f6wxz)%H!499A3@r#} z1dWnY8fKxMZi<9NALg#X*>=$~ns?{E9S;5Gr` z9R7Fd9jJHxFZ9m28T6ChffW6V-T?#jr+=b&3e~l2MmTUh=Zm?9%I)wE*FmtNKFup7 zxUD4(o)(9b)w|CrN?Fz3mv{+CP|`%F(Q&SZn6=@!)NOgp3w7$=SQ;5~ReB$SkDym~ zxTcS~H8J32-PRswyW@KIl=d1XCMYrOX=tpmO5*IOhG0n4f$CHO{*Sben2XM`NN*u?hj><}S zn|}T>PhS^=^0$ekaBgTAVKND(Ju>ULzqDIj3F_lVWt9#iwO(F^qn|Y^4W-~j)E>_1 z;hz6XKY6KUg)5oha%r&BEV7LjA`l`JAS zZ6mwl2q&+!7D`l|eFA@#!_h0aS+}R_h%&D#sC{t8f@QTlV<`0AZ%nM@)<7=9ypYnZ z_Gp3Rt>g$&QCPmhFQs`~uT%6!aS9u0n)+?JwLy&p4}z*^`oGy+0o7T7CPcT(F}%Kc zop2#`8zpzqYd%y-!L}`xPxd^lC7f4?IiASvl7Xe)3QhL@wv;)L>YD7c7Ss;soa%Wj z@6bjo@lJMMqyXdLEfLJ}+Ix+6X&q6k-dbvhi`a7!D{`A~GzmV7c}mBPD`d9g0GD2k z`!o+OG&|T0O+?u{MZGdQzw0^!inR6Pc?Ik(nC(F_0>jPO9!1VAJDr=EpFU3MzhH?t z)ermdsT5`!`6&AXrKkwb{eD+|14X#!5>a?WZs2$Nx-(`-)8x7F`ZmdGf}a~wTtE)A zR-TU&Sw9m5MlP;3B zf%+m(I$N)l>m()Z!e7rx=X9IHLowI5RoG=7t(3s?IYlP6sroARYyJDFz0FJH%b#w_ zJ+!;d(`8`#7zJlD^mM3;cI8PEM(1h#JOvWQ-q&7u2I(7b6C$75>+j!^pp`s!EmXI? zzoR)5h4(&jwT`N)DX|OI(GhzscWb?^kIivo-?TPgSch!&J(G(78TzAB=@jv6#ca=H z;>ZbAvZi*aX7M*Z54?p__1ZBx!)W~W+V7Xj{O32m|5N5rGm!ajBDl1s5xje#LE>vW?5=sa|6-*tS(Yi zF;hgrdKAAsJ2!#beopKYXs>VDq$+RnI0>c$@2s{!e|Kavg1zdEcYdP9CceJ6H*+DG zztL;Dk8rA8MioMDQm_#+(`RHBD6eK}>TA64JJ>1qGvAk@9>u<5v*fWZqnu0E_3VmY z&Tb&~kqGaNdo$PxF%xYoC+rE2mTL?0W*5I4Qq?9hIx?*-WgWy}^fer&4zx!sd3et~ ztSKOM(h6B1e|Y+8l*oK?phpRImc{R3-T()pV3qmHVxZPDdiRK8I?`lve-QqV$2#V)REvBHfZ^dwvJ|WGTID~YluwnP)!xP%5OaOm+ zddH4}(+_6dqHQ}cnG$zx3!o0n()Fq4mYyMc|w`a#l-iY$1xxH zp~S*&-6!4(lTdug#b_U!`XTL;w}uV*9Ak`i-&FE$tMLH=Oakp55(3ro@VAj85f?&V z&sReTv!^^q=z)~Jqk3MrMtL3@S2S!+jngv*1EOU0iDAXU^bCuXBv<{j74ZuD#8i@ggPCV5&~ zNn6@fCh>~cym8l*w695LUqh>eG2&5{L$g~Hk&&zX7T=IYagEHe4l`2o5}hZ?hi47y zdQWpD@DX!_kP7A6j7FFY-uAg>Hd92Q`1_l|v|dvV5xp{l5Qf`AU2f?|tDdL+Rdj4I zk-8#xm2NU|jCsMos)wN2lZVE^(#klq;ZaOhy_zw3XdUa#ZKQIadP=*TyMtkaHHBZU zn#(4wKiErzy(ud4x`Jo@=ACR%y@F>_^*d?P>CJ*q&B;E*Z}D49_Gf&=%w*YPZqAzM zWR0{H5kC0JZo1}ul$E#ARObge_Ld1y-gw2(u09rOLoiob!#U)4{Frj4grBq1Ux)71 zz?H|zD#vX@lh3KYR_6@KCioly8aUlTDJMhpEob+{p_@HfG$-ag{|2^BZyx8K8$R%q zbjx4!_1z2;u!qzU_GfMNcCQ>_KkXOKw$>9rbSr$sP;NMH-^AU?Zn)69Yphe0$JCzF zbhw7{Y0Y|V6_d#ZR4@}oWLx4A+wir^_X)C=%d2a*GDUM=^Bao<#SLT#bu|-5sHK#I z-escnRZ5XIiWrL>U6mgmAwk~rc~Y?$X#07!VivKy8(~piiH*Vn)jKrqOY`Y{^Lt!H zO+*-8U{_D0wi>hs1YEiq=D%` zg^Y)OOR}S|e|YV*Cp35<>&#WOuRStgzxTtO)%=)}^zGVR&E*u)Yo^-H!~>5u)>k(B zit-%0rVzKrtktrZ;`t1mbLnoYz(y;m%#4mEdtozy-abN_)Ez#%SNO}xfHN_spNcBn(rgSEvcPMYMzStYl5gbYXwgk?^biCHZhN6}~Va241#nwdR@-&x-lQ>Sq&*9$cglSMbMMOKU3yhFbFFh8~va~`S8;8i;?LlId z0%BqU+$9PakojY633K~F7*G;VV#K^TvoPLOjL7k*k=K+pvS`HVV${g9QnzoTs47mE zz4I=G#d{2cpen1SP7Blg5-;fU=0p7{F?2MBUAHMpn0~oOD1y%-#&bd2;Dm}Ek`{_BtHv!n)*hvzlw zs?*@K`su_H_H9nn=v!dk%*M~fZ5(Xh42wqK$>(kjWL>=`>ZQ$iXCTtE^y^eB8ZkS; zp@o|9%~Qc)dNRxwVrS2$WB2Z3O?jH@S>u+T4)J-1<)cUN=23cAOjIlR^F&#!Z15iICJ9Y(^C zE!}^RbIbb)Bkyinjh@HUQ4w=;&Xl}vky;qfo2@T9zQyw>p8n#k6|auYD6+*3!`;p} zzfNzM1$a@B2(OEDQ^yifXGpai3-AYoEiLug%rNEhalHDKq5!fG{AfL$D~h|;);2$r z17ystp$r5?fHgp_#mWUN697Sl0Ut83puh#@0QeQa>JNyU3vlZLiwj_2bp>!IL%s7t zz*3g6-MJU>VkyMf-hrG>-_{mbwla6Vqi=o-YN(Mz`3XO|6wgb90UsvRG^D$GQH2~J z2i*F}kq9JF_}5;@155q+ClwiG&l=GgX&DB54zJ z_w{N5K@1Fsq&CGfoFkKCZ}6a8!`FhAXEPHybNxM^J66BO4M{)PIe3(x#m9C38JSIS zk+hw2JeFO_{@NEb?)~Y-6In+G5xM(GCSInYFtD$5-_At$@G{xid8FRZhUb3U>J5X7 zXeu=y0MmyOOhR47b;4)({5VF^E(N@qM@z~^*m~Mcw>S-pQDd@KAS`G+R=ujKT%F47G7sL=(hKl2@FYA4#!oGZ zWh~$NqN|H3NX;Q=Uzk9h*WFt(`ciIlsSDgDpvzPiBYMTC^dq{pkF6wLWyN(LhSjox zdrYu;Ij-8{{r6z_skA@Cy@`zOt=ENnIj6FI_{jen)*$cwPJd~=^en2SfmbJ)$u_VZ zq06kzW}jXgoeb~195c}m9Q}Nte1~C|!AY94z@61i7_azMT*#;Nx>F6sGbsf+6e^;V zGO@FwJVJejqD5&Kjv%E^t#$p%vzj=0QBM2>2+p_RI1A|t>k#a96W1hnya~o0Y=>@> zy{X9gWLUO4+|!t%skL;q>s_-xG6ju^pO16~MePLoOKz7}v}Y@at$xY(Z^n_oo9(~v zXnh;5Kyqx-k;UY8NSfIC4NE?Qh@d>zZvBiT*Z#6_-4?9ueDOD=TV|f%&Uh^Fm&`8# ztA;OBkfpraefYrYFGxZ>QbIixRv#)jdyRd6>zGA9gO8KV;wt7_ zUAEw%WGq&98pBNVd~wpIZ^@aI&10oE)sMQj#LEUrA2++(jvyJLBUHooP~EgN-^nDQ z`bH7`tpTy`xs?wos37cxQDArQvUIYBq4Sv%0{3W_YO?w$=l}{8kt%$Ax0= zf>YNRDy2G}SNA>V04Kb+ElQ?Q`dVmu%+KC(W!ax@6|oy;B`A#8N6yXPQbcMr3D&@o~KbfO{p3xH7GrQ-fKobUYinKx!*L&v%jMLnmZ%<@N zH_WwXjGFM?tkI*GQ1F0c44!WmPz~s$PecviFeHbeOt{gT*i|Oud@SEJfuHwKL}R@t zALPI<6pnQ~8ge!RBmAmFl5tU(InO(+@+s{TGAa4izPa^M$+olUNsmu*^!;{PSLxTi zHH)7%Rd^C}=GeYN&Yvw-;L4iozi~bD6usr^308hI(bhZO1)tg%noET&1hz}-xyvUH zoFbbZDJk1cA5i6$J4+kfyl+Xl8n<|3PwHSE9#dN)uek1FZ$;5>uj^1Ez6rM*(3uxx(8UadngC=*!5-ImrMsHlTV!tW?zaA z`8yX+VB1Ym-r=Bby~#0~>;3{Zq-d_3%pjM#uLSuC3j$K3kA%7K;2_ihWlZC-sn#-8&oRN3`&1IC?BO4n{{Jk4oc zr6Op(p-S7!u*5tysj}Jn-kSKpNLzX6$$kIz=c(YVH-$xd9TKLEsq4K{$Y^k=cTW~3 z_Cg-v7KgLrevK1If=>#1_Fniy_pOu0^qSW*R*7ylM5rq>4e89$bMlrdzD{bHqbN*O zfdsWwampwv1mbWK}M^jwpSL?$Q;8_>Y--Vc5G zN#BHu(siIy#!K%Zjt&Ur=J>ny>x0f-Ann`HXB$zu>N~WP#Kif}Ox=3ig=mooiP{mS zLO&!39cAH%X6OedchG;z?Fr3#|0(;CyN+j7wbtmdR`mO_I8#%Y7N+n!AC;tzeY5KX z1Y|d!^NL;1dm;aB4(VQC_Oy-cJp_(fi8 zf^r1ald%_TI#msOyCYfl`ngOe)g+m`zMHLU%|M9MM^Vd74|U|J5Ju{7=bzm^9ivy9 z;}9R=vA!u$-R-g}Jus0e!0i-v3vCvWHOZFomKj*k(xbD!x(9>Jrg)ok;2^=M7wOa1 zA^(}EvX7{ui4jF62-<;X|%kFYew9h*xOXLd^d>ISGM59NIDyH7RrJWiU&msaS{3&H=)3jI#| z2k5`t%s^f%2vweq8A#H_!FA55{!0tg+}gp;=C`&d^quby+mlyJR7?!W8wN=z2K)gF zGcyCp*qAv)fj#qVz&{|T7zgk>2jm!7!{=ZWDz<0_Bi&W59JdfCCQT zTu2!t!_AK`qCnQKf3;`-&MN-Of(@j95F9uGOd!YX5R4$-fn!J+(BOY#czw zy6^G=kU!V}#Qqwe^Mypfkp2}uP}1jb@c}yiqul%z7Eru^{~)pfl`Q}t=rQyf=Vh1p zLgWu}J{us95SfCU4?P#a|KG;+SL+e~T;^DSts`6<0Nd_6sH^~Igc}g6ze1JH#8}_q zk)5&qZwDebLCOK~gVcpy zAEM%bFA#BreCK5SH&OnT2lF3`BZRL6>_hnpWnjw;AfSJP@*jk;UyX4vbV=#AC&pU}j*; z%Xb7=fo+vwF7|Ua`|q?abVuUvA%J?={tUq%qu?(!?cY3qAh^>{-T#jaWMB>kwrB!d zD!=z0%mVC`<^1cpnH|`X_g5p~mnQNby@yCUL(ej@F6+@QU;lGAaeyoJ97UG z8bCm)pV0V^%wsk#7C;pOsgwUe12E+Q{_|gp!XFOn-x@05Uz*5&;BnDkXrCc-;>COk zHI2FcrvE^=tDpM+ADO>w92|fW1U6uP?>{G?DcLx||GCE={MTkMfWeP=KwhB$Q2>b8 zfDAyC1H@*4j2hrOq#U5FpW6?R-yoV3g5jm?Kz_TFslR)@`ZIpNGIjsoTP^@Z;=jH) z0EXJt|7djph!=UG2B0$zbaeotj}!sYJXAvfpU`(BXn@M|a%dIcJJg;6KB03ekhL1R zssMaKx3B=8(1i!!^Wu8v>~!Ee^m;$9K0urCFRKs09`}E=JlmH%7H-@UmArOzD_lIf zrH~MjYFYsHF3iqVHyA?0k~I+>TRJ-tVM=2;)ZN;*rLXd;Yo0eL8L2UOS1b5tx-(O#f({(>>%VA;?I6Ek7pY_E*I~eE!ksUAHJUbmK(>?yW*{*xGICSPx z0dnnW?^^Hr5S_pmckgU-+4tVgW`0D^ke5p=Pt%>H^f-a~(+D;Fv*Ts7=G4@ag(2~-(}A*y<5jgTe&?k-0`3Q!G55~4 zhsc=f&nBDHyiVXfw|gc|S7xgYfu`K_I$mCKOPvd05^yK`822-F{2 z7Sfc__vhDFoiLWU)t_wc<{XNBI1>2M*L7y=vH@If>+5Q6tp~Vppp%v^CZ^Lp+&6qMWHE*PJ2?AeWtuzhWDgDxn#3LKj`HW7oX$>G<%&mA zN3{07kh#KX+Dy!^n7BfR`PW( zT06w?Ku7V}y`$CpAp-FPy9A7$ZPuxs!S%ASJK1BYV+MxR5*xCzjnaX5^)!{B{`GR> z&sfcer-Kg?_{3@i=F-hSJtyrDlQA!gs0xX@VsQv2Yr~bSIkn9t>ikQEltSMz$`}C3OQA_hVMr7hi_VUG|eYYkcX=AtQJSFuI#vGUXPUN#Nu1YuDX4wpj|o*tQJAAmOyBw{Sfr%$0Nr4>_;PJ1<~6&^(~ow;vA5})DtIgwLsg%c z0l(kLat^ct(FD)3deN+4=gDP8+ZM2M;t4Luw``W~Cyc9YMQJ z6Q@^clP81?Li4X1W)&=0R66QBBM_*4h897xKV_(C!Eehbt@B`{r#8ivolKx!<@QqD z^MxhZ@=Yu_Nl}tbVCar7^ShVHL%G13!?`^ zxEVTP)o=gft~hsTwQtt^OkhTAw`AE%||ju68ddjB9>2P zd%+467M4m_R6J-rxwfeXdCiHftlcO7*v8 ze>hj>Xr=M|1MYJwaM}Byt(fBIVEdOs!h_N3cpnZHzWJBMV~nUc(r>9urF^!Swv7uw zdd8LTMMNZcmRT1!h5mt+vWUc5x*S;*4Qk6HHX;8v!ueBJ6%3E&5*tU1hhN$Rljf=? za$gOXE@*OB>u4p)s=Hm$7QUh^B3-OscNBw2M6J{huw;2tK==e!Le>SXD0vEi0fZ(g=jJ1zlf*9*K z!(GjSu4(AFfw8(dA|s`#o=P8a!^~312j?`4ybkHqi+Cq|O>CSQtCb8R(7jQZP3%51 z)(G=vJiHC3>UCc4rN$B}PkkNK_vmx5Y#)R?>hEkR6*QIz57VLPx7PCJ(O^UoIJVa0 zP-ugfqk|=`@qB$3AXrxYq?jjyYdV~(#nti}FNybOOhN+Zj!KSg!o&ujJ7@}Y^K@C1 zSKuSK@0J^mg6r?KejByznxcs88R}g?_BSSMEzYKhtemJ(F>Gy7~<*hgD}zY=JAd&RD|b!H-+N^%v#>~=96K737it2cng-jXx>2b z)o)4SsYq35IsPb=iY#%!(AZ;YiKY9p+tl5rH{}av@pi(Vl(Rg?pxREt?c@5Z9ws{F z28_N;x{tK0-m0O(pDh{gKT-i^hEuWVgBBaj0MFCm{XRW3W6}*Y_E|BDgTusnyQ6{p zHB`Fd)1#EmZ?hD{Lt2K4m2O@KA60jG)aE-ShFmsycPKm(Z&HzvUdKj6WoDV~PUnXC zf~gbCi-!l({1AR65<#6p)!&Z>59Xs1!3ss9e9WT#*6aG&o!3{xgh+-Nru46u2N{xU+Hu&#uCp2OZQ)^;_$3*t$Oh|Px$QR2 zpg<*!|1eh2wX2gG2bKA&2G@NGSb0PCk~M=SvRva@4LF{G$(7ssXxx1gTaz%8Xip3+ zhOyBtwO3xlQ^1xyHEe4ZCUduo;3z$uzc|$r2(ws=O8ke#QvG&f_HSUZl*;?13!So>6uWyE99k; zXo0KT4JJgDH%P3^^3gF;U&jk=VcKkd6^P($MQ}h0i_y;L*vGO-bb57)@Ze?AjM^+U zHKCeQoxOio#47cBV)K*hMt&WQ){CxiFHR zo;n&7T*sJtin`rN5)c@L-8o}Dgo&B0V+ll&e^WbaPc+0s&F(Vhxy@6y>`&P3Vn zOJx>3j^TT6+9NV|-;292Te}3QDhQ~46cJ0RoRKHg`h0^Jj?}Q*RC20K*vK+IKmlv; zt>aXfj8SN&LcK~6s6S_xI0_b(vsH)};m#WF^G+7RR>V*G{0}*?^9`9rj9!1!WG8Gd+N{63vhN*PU*gIBDPo-BDQDCp^6OLkNX9d1aB$z3DAWsluk zB3E1&lCNJU%@8(Fg4ODXkZ3Xt&G5PUD4i&?_fFn7=g=_ULw{FNO2ZG9)7Si)1+zY` z+7C+^y?(7wU&V|a!m*e_r5ZA{(AI1y7{K4gEFvOV93$CjxF5|`WF~^(nnv}m#i$Qdp~_EqcQJwcX5D$z<&*c!<4bT#%ge~&-dq$u-;9@9=ma5!ogR~X zuii(7y)(RqzWkC{P`Stt1Lq+r{J4P<-8%{v&5G1!W47j7x(QUSScHrZ9hgYJs=&4% ziSoK*CaX!S7wI%$qy@~1M|jj$J1(XYhZAnq$(@irBGmFY={;K**vjLdO|co!^3(=7YhO&;r3zI;-Hk>$`8 zCr8SRo)R2s7Ft7Tu3#LX$(tVLd&!Ed9GxqhEEz79em7atTKRgG9E~{5LMDHN*eUZeDE^xBd!+$BiClS6 z3`$zVObgr{d&~HUnRI@1BpNP-X^KdtG?Qj`60_$1uwi&gL&DAA1b9qtT#n|X{7A*L z`@J6Ihow8qY5Zuq(Ni6q+=}#;1KBJFPqMGcKnipjXTOvjg)0F z0+QP#ZV_jV=PEyBTQa6pjJ2PTZG9Q<6M`4z6B_J2L>B|gRG9f`K_WLu_F1=_oIlY{ z=FW^V_2>Hd(7UN3c{t9|^dFNCc_Woe-&{q#nVa6@>Dwl#h)DDvi_l2}ca3nPq+4L% z6@AhDh6z#Crn=`UVET5)fupv({S8A6-0TP=72X3^YYX&&wiGV^z_ZzrkQ?BQh*PinsU)r8KgE+|Nit#s{@Ov|6v`FpDF? z;F*eCd6g8>Zp+Xb(_xly1C!M`)LZh5yB!zOs8b+cIJ6jwd#}j;eLa$Ws*C$T*{McZ#D>@O%b(J#&Ca} zx(P1o_3&Ye>yR}`lH=;I@<{{;Bb1tVf`e_9ms6&#C^MSa-h`^t)oS*_68J|WfT()t zY@!Ie<8UMgc*SyMEL+h;#H2XFD*?6k& zUdKl_k;$T$N+KP`-6$*`YXdS&kU?Wn2)dSO%ND0kYuzeBK}od2_Yz52MaCA3rYb4; z|0C}$cDzsWNO3a0vn_bNgHvaZ zuT8hNN8za@?bh}L?uGCN;V9t{Yf0B(?IWKtzbB)#naAL|`~6UnF#AP()yWoP>~W4i zK1}C`o9jsO{ZX-zF#2**){i_&ts}#@hVV1-XWCfi^RZyhAw%L73f7WrLk)L&2{7J% z_E0|z()cMRrM?TMNPY7>mBm419P)PP#4z4|=BFjj1rmT1FD8K3?Tuz_(gsY#phPOH zk@yenD0Zq)cL`GP)>Op9TN)+IBugdnLF=}u)CfF0?ZeB#E)^m+O3{AI^j;i{XnB$} zTPzY%@qQ>x3c~znC4jsD^ux{dS8?9~Y%F%rgMGh5{^**G3+SEb5Z~-k#f8i0p&{pr z_|lMmh4$3<_+Cz}k>OMcIr%X$1J&dmAFjki6ZSIzE`&YG6wNNfio=O5NjIGBM=2|U z=tot~0K*Z)!?IzPC}sBR(7mLTw-lGyfk`=ddriQCoQxUDCf8hM^;$)YB68?SW0|6Q z91j7weGe7{Bq0Nf&gSn*b<0*23Ypk*m_JkyA*vcufQL$az;X*|Fmm~jJXHf{ravpj zPT6rkcBY4<~U*^<*kwy#xURdYWJ5T2q$$)CsHOi1>+b+YD>pDb1-Bfh zPzw1>02UaM{GfLqZbr}|r!$=~f4FvDF(_ELumAbDLqfkufoOIZDXxJ~w$e8DB{GTT z`vVN5n!*aZC~=WR$%aq%-6EFQpT1Tm2H7TWX?BCZ$&i{n@DGA{*ZR(}Wu0WQ-eSE| zR-{1ExMwyxc)!le#5)Wy73n}p2%302;1UpIieCHHF8N)FVMzBAa=z(@;S3&%!Xi6c zaS=-@z1bndVmf#w?jOjS6qC$>VuGtK^Gmgt$eI<=io^&t_#N<^7Mmnc+$5KUk$Gq5 zGxq+$*j%K12Pg4`4CYbc$c%gVY$fZCkccG{nR2`^BAZhnROkHRv+#`-9{S? zdx#0nj|UCFEeF7zcySWB6cB}qM@T}>q6Z-*lB1}@ljzIu_Kt9mr144^92_?n9OFi- zSG*t6VKz6bHSE5h|N2`1nIbMIpUrG(9jC@x2Gkq6uhhGUfv})Rb}f^rx{Foh7r+gL zTGB~**j*z09SO{)fcNnXpV7p3cPI<3X}t!p=p38QPIqm`j`%E_$gOJ?cO9=+-KGVx znI_zpd6)To`OPn@H}MR2S_kh5=MgJ=y$GazP`i^w35v-ua|-HfgeXA4pfN%r^e}Ub z`fFauK=pbo;OiLSCu{9Rh$%qV7d!E))G>4H8bd9eP;+E!3ECaieHDkJ51~=@Cgo4n zl50WeJ#d>*$v_^i)eQQEz;a-#d!~}Xfr{`0|7&J=kjosuTt3)ptupurV&GM15fTozd0+75Yqk!p~~ z&%gsq+UTDt`)mpYKVaf ze=n#msqq-h=lQ!!1S>q!{gtVkD`x1^!*Fng5xIk2tPw(A_aAE(x)7kjZ0@s6ak=rdruhU&uPzf`qzF8}(M#vsyuePH41h@?||tQ7~5tdSfuX zm;Mztv974}CVYS2&zMXxMxYAwvP9UZIg?JJslExev->fdO;XM%Tg6v!Yh1w1a#2JR zahRm52O6lyQ0)dme7|^I$0n#kGK5Wg9Na)d9}n4BLxFpzNmq~5*$XCt2hQ+$)y8+R z!4CJzci+6EhhO@MQXD((IVOnieLt%fS|Zq?Bea*tc^Ph09yJCnU)~#Y)uuTNWJ2DR z-|Tz8KY96)-uZBS8J-I>&8zd=umVnUX5L_9-qhL2N@!}_OuX3sh~O%kpdEF_Na@LN zwXdl2$I`(;M$;#`5J{l zO#PCiB7#aq=?zVW!Ad~V_r3Nus2PHi-#q~OWDb6A?&hFKJS-d4Zu|??g|@Oij~tHV zg(5emk&WC_Awbit4xCK&+Rt<}G`e8JFCLMaS0M;ZY&qjj0-I3hD$YKC48gQ-HGoV; z;V#Y!j~k7W9}xJ+=@-A*w0HnH0;@~0)}4-9MjrjC5B5897*;K_#D!*m0y|5NzB+=H zqRSE0c$l}l#>ex`=wADRNQF%i-7&!OEQnh}GSILA&8Jz$8h3=ij>L|eVv=`tIQPVm?7uIl!g0@iWRalUq+*K zKnX5hivYE!R3N+651d3o^u746#g;Z?h7Ox&f#c$B&7k&&HB5z{f>RE+SZj7lN~1Pe z+H*Sui1PjAzGE!_dRaPxZ(~+fqA+9 zj?#z0Om_kXNRWB$m^$WM$*)Xn7qXNYSqi~o_m@uTq6)K-Ga=~54y7zDz{-`wFjC#Px zx?mDleK!VqtZ{vJqBNk~EP(dtE~oD60;*ch3r|128?S?eA>qmeYK4IP0?9WDGt)2l_ zTNTZqjq6n2hGS2s4B;*g_@9|f(PYDjB!a@n((d@6*q7^9;*mdpP#p*pP!RK=cW-u7 zuKVa+6lw*OZyV^xb`t}RnQ|! zMdyxw&UT2TPuJE_x1tm@?()ifz87i8?eb%gEru2Cd>DRZzADez&A^3zk@kxj4uMqb zGwdtza?~cazKf;ClR{}xB`z_i%ibgdQ46vS3qrS>3!BAew7SH0z86RFx}sKnsug2R zR&l9)G|c!~Pa3Y=wY810mq*n4xBA>i4O{Q%3nCSx=d^Xt$d>@*44<3D0gsXc)><-* z4hMO1KSJrV<-5BcO|kouQ6m2Npd}(Rl;`b{d$qZ>`PSF_NVqM$oyW@g(WY0`wa0@@ zkDG;Ca)-;kWKU%!&qop6CLjA-={;*L>pUM-WrCJ>sRAdtyz^h!Y%X`*U=*iJIVix? zojsUg&ts;{NWY5AV>h<(_6{Dy?B>HHPv@bEd$RR93v&&LvEn_7?3cngJ!epKuq( z7{041l7}Lzps1xJIzKWBZEwHrXrD;LF~Q=*H1h8B`B!q(55g>?u`UV3JkUkFq9eVr zsAeHdLynu$*Zo&)sk+5lwXKQwBr!3}A_OjwM2zGeitUq$6DirC@AL;`0z)Ju-)ERk zBIg_U)wvRq80{g_fcXy&MHi3|OCq?ZAfuStfU!m=sV*KSE;REXnkgWM?{f*)bc z=UMq+!W#YFx}BM~?3tYVa^Z_oF!`*#+R=-*(ynSOWfpt}RoY!hx$lkzI<60NN(Gvd zuYc@NX1^TN3Fvsgb~ARm-~TA@d;%4C-nV(Z`62N7u(T8K-TQiOWTK-#S|{W6W#RqH z^WWe>e%tq!JqrZ({GReFYt43NUXmBD;E6ZBiGM`dX8&LD^Vpez90V=^kS@vvG>QfS z`#{e2PdjI3=KqP3B=k2Qv%i}C3jMML1p?qecBmpTqq2hJU+x3%5L1~tI@&sLGcr25 z**Z8f0HubEKUo{U@bW(-?*e{LpZvq;|Bit1NA$e^pAiWD;;-=^5eWY7^aONO1S(5^ z5(s`xpMR1U{yOYm0DhoR z94P1>d1j6QXvebcQLDy9tXi1;0KKN?MT))+%%NSuZb3j z7FYUyY|K19OwA>KFB5+ts!}ET%ps8;eOrFG)ziLEn(KOP=JZ{mmG|+04P4l;{7bcp zsfzEqFm=`K!)3}^_QLH_xiOSw^AILSm()lSM=q=%{aLNe8faH|2L0>kc(P8P8nF-z zS;D3Qx3O9-ypDus%D_kg8TrhLc!>+Kr9)NYcQV#n+3|#}b(vCp3oQS&wK->Si7EbM zQ(Bn7dDVN5M$h<3O;mTRF6}KC3uzsg8FyjJhJH9W3Q^(iM-^_oG9Dx+mCE&6mP%}*npzhw zzpaDSg&AsKA+}sV+01F5P{$$fYG#ZwWVPP3C1NrQwfTA%7O@D(jGj!%WstcgfF1fQ zw`I!KTrDj!9e!}?PrTq{5z++;DZfSu?I$UroVBGr0!l!mA^G!D&M0VDIq4uffJ5h4sYe{TdYHX(Q3)CxqCf{-dJXI8;Nay|F zk%I013x$M-`{j+Q;%&5;!{BV`F8vEna}&H{R+9NmPxEZ+b3`uFp{6P9&l)l=M;vaI zmA1nPC*?LShs}W!{XsO%@(M3DETG>UpC<#}+j3_HFD@-!@>tT?ct*_iLgYZU$0$Kx za$V*JoKadOWTa!4enFGsH@2NV?@UQkksnZp)(Z1l8gTR7L+Cl>I2C&CAKTB+53htq z5#n_fQf{Z$o>}c!Hp{S+*z_i%eisX>rxmYsSp!?gdPr=0PZWYNeT)&g4HvEGw>jW9 z?<#j~`dzFzH_PEe#J;5ZJ7SaC9ptQ)!;vAQpaY{IzpW4ErP=g7GJu{Nz4s<+Z=6}m z$~bs9?aRD8y_s94BMVTLVsC}^lJol=E%P||4UVHQHwX-c-}}(mThiD&Qa96#vWUyY zhGlpyM(aC_M}69umU>IZH=RO>8N|i}27;oe#<@rgbB*zUoY@rG?5SZJ@yzEJO5lOi zEjiqZ5DJrz>M4rUw7Bd@K(a5sM}z{x85dcmmXLtPu~}6tJ3k^ z=F=wF`qg!4aT~k_eWR(9TT)zu45^BKGn-19SHJoO2?kb%+iYS!BB`@7tJ|Bja4Kw4 zxhv7us>TvBQjoVn^EJJO`6s6`c`oLzWMm^rkUC|;%X>7M3SIX=5ipQ%JT7gHg>g3p-sbN$g8hU33sRWkzx92}g# zRxHdM3{0#*|6FEPHlXh8r}x3nMGOb~|45|#UoK*ttj(N_?H!C6fxhAvKz9R16H6Nh z2e*H>xcNPA{|^>7|MTnqWDu4j|p7c%yTmf1d69fL~wEs5@<)1e9K!zxga}V^wXJBFnt`Py8 zEIr{$BHQ# zRsSz<`P&}n*Ut-(B>n4)^XKhfNzT76>z|MRN}B#l{l6zW|9ZLKKE=OUQLzGZsetF= z-+E(@X{$SY6GsGEtq3iJ#>X0#fL=A*wbf*DzN>7Ct1Y`B84swCsA;lXlBZ}$_vxI& zUxQdm7}Qrm%E!sl1vh1#M96thsC%}im6dr`8;r!E?ri_C7aV@P9bBi&$R15-{Jz7z z<=!eFby(?!_~jC}`*FSQ(j`6KA(79kMm`k`@l(HhGIg~$WR>I1=79i*Y2B-(a2 zaQ0R%mQUOA&VFY*=i|;M(2{~f)uffH6&`}jE90R>%`VZ95*F)@vNWgitKBGZYHKUQ=E> zPjwZ(MOwe=E{)qTyd2#Ltb82w&5|wA$u05pIT{~1nOHiweY^eE&r{BC;@&LM583kz z*F}u}C(ql>fq{#yd~|-yb4Uagyc49LGh<1m88VNts2@H;$47T=F6mt0*l)J7D9ieW z^|NRfO!ju}_*yY1ppA+_RJBGLy&5ew5*D(UYRo|C7{rndk_a&<8ud^zR~_JQznQZ@ zvGk%eDn*oVqua13Wm-3`d^GAh>>@dSFWY)pm>1{hoGx$I6Yy}f-wx^bSgb_z{a)zO2uwL=5nX`(9Z7j&KEW3IWK61?V#+1Q~W}MjonDJ z$3V0@OC^xP!K0p=@DSd{e9J*)xboy`)ByPLbmKyRA6WzJ_X!H8mSNL zF;!}J2+TPAezHL`5uW5J8FP42Eqe||uDbswxv{i+Q$v?A?COTJBWPY~h5aP(6fGQOjbhBi80l zZv-fbI$O2ktLjDeG`1#UnXv1v()|W5*QuuQ*&w9qb$RS_4+g8vZq^!&XhBD_KyIa< zX99{VpegPx5M6-(?Mr0-5Scha`F5sjgLCa#?!otGmMg; zL!V4$eVu6_iFsYEZxYcK99E~^0nofy2QK*}2o_8r`8E1Ln5KxfuOpT*rjP4SNJa~?(k()!dD zq6NPogGrIZK-pYDIevf_T1SU4o9sm{ZZgAxD1GUlmIx-%V480cBThkwuxm!c;8YO} z7p$g+sWm(`;GGmkj+>@B)DdP9XC#AXfE1c;?}g(%>x=EmD`t+4Vu7~C?kPw2XJX1b z^o3JJfuuJRpT2rmt-(7_r<<4D^ws+WPZC>1{ZC z)4>y3AfxH$PQKCGhTzopT0=7c&s6_NFR5}iVjOhuk0Tn~88n_JZ0zA(Z zyUJ2)y*_FKj4tA4widrcrCf1%(@6DqFvoY_{2KJMB_{ROzWF(AIY7e;N~i~`)FV#$ zD(I8IP~$CyS+m%UE`=CQd%~pnuZuRNf?+34?9mGbCPW?sAMtV8*u%W(MosN;lB9GW zTlTx{{YbzcVqK@dj{T-Hh>3g2hC;7cvPuME%Apalt!}>RZA9MQF@BCR*QXx%tw{q! zsA4RknA-S^5*#m(D;;`&Vq+>Ud1fg1B>!S%qp1;Z7Er(xpoMFv)^*9@qb+~7ghl|I zh#%@U{j%~^9M-DIkH?Jf$|1z96K}@v_c<$alG=_1Sg53>s;0=>_XRAFhPPQH;gLy< zo7|@Y*da!l6WtKANGoR`_RjhK#j$9V<;ZSsxEPnW_=|jOh zoQ(D0DtEstr$|4oV6n3NuAYi-)m@uhhEdi=+F<_~@0LEdk0K(geNM)8u5{;X^yGIP zmUushlI><_NEI<%i^c?ATs=XY6}5&u#Lx)CS`hKq)rbmTZVx?$&GgL1$ z%`E+PpWJm3G5m~-jAMq1JGEGnPzn=81AO>i4|83Am_dv@RlroF!Vu+3>P?X|n+=7@VB>-UPs?0zU{%m42m&McjM%>AiViiv zWM%dj3jBx?DshC(W&X{-L7#-14ALK}ryrwLjF_xXXuOtPwH8z=s>@P zBAOGV*OZ>9$M8qiCTYjYZ9)oKB5~vwno}<41#DUVY`!TLIXz@26QEE8Cwqe3oIrKZ z1euh+DDTG`&;$p5|MQxe6gy#TCPU(Be;Ni*YH&HoRv4Bznt-6g54IJJwPCyHECe`w zDLKd7VTv-w+iC@Jdl5{?`6DKhM$=+Ic55mMlS*ugY!KbOw;e(Vfotph9XSQ*Zg_10 zreBQKs~|HAx7JRd!nhZSuA{E1?!RDXW(yElHC99! zir2v>*vZ`5F|XWVn&-r7KTD1{F0vSFy0P4r+1wsoX7A`YIXQSk4G$C?)een3*;R%o8sf`vz#2(I58Dk2@;D78h8pbZQ zZm11k%r0f~o)rmyT5~Vbsv!ofX&}ZG6{kq!D2mg0)SYdpl&-jyi)Fst#lC-+@{wZ# zX{C&|^IK6k#&9>VagGnE_!@BSn8@pV~ZI z1|~C_A`j%eTV2v66@{UBu~7WN2-DkD4l(*tWmXpWDnCV1F0c)oq1$k&xUH6NYt9qN z9yWYhe5Oce*&M;Q!E>>UWy~+~XZ{m3E6-;L(t69pRJ-oxHr?+=%-DT8Wl&UQu4ny( z_7XWi(huY|`el6oZ$c*~A_g+6O?er}cIfT9Dvd-i`ZdTx7y?$@6HtJ2tE>X)IVK8e8{m zN~}+_5uinvglQ((8D`c_wrfVE(_T2ipCJu+7vhqLp~Ec5uDsKa8CQ>kfb1+%7UR!a z$&$;x83%JRB=?Y@@yHF$yuNzz>T&9wdG=%-4-f64Idco(^MqFHKj#ejhV@XKF??66oQ#>y>k;Fg4Zmm37IyPyW51&KdTqE zBHC*(NHhMf-Gbms&@>}bhf0ksUcRCZrAj1VM|mgrGID;3DYQ?oEWn0iO13_!hQFwR zma%+olK11$ULtg?0j`rwme&e5ZgH=6#|Om@^8UG#s*0)EfpHGD^N0Nv*}1L9pF8=P!8l`a$m@~>&+LkJQMWNyeSGJvtzJ#hWBw{yY% ztnV7J`p`v){C91o>17FJJm*(_9MLUV`=%BaK9+op`mzLEl_}O_n8j_*{y8HQO7w%-kRjKfWziU)eeE&f``kC$Bqd77lMPYe242 z*`*zkv?jIcK}xepZ{FN$ZRtpA=62(XY0oFj+VHvB&4f)b`ihK$`3|~kl^H&PT-)U! zlTsQVAO**x?>cnFKToZ;lq4U0?3Sse7Nfmd9=dEzRzk|2#^v6cV$hL-bh;8bUnesV z`Bp0Hd&s~T{b^h}c#axa*w%jC!gqM&h6XD|!^@(_d_~yG-dafug8Imz;^|mMhMGi za?yNGP~NL`DBCM1C1p*aC<}vuR_??GF>1b!ox#^JP8Mf2Q9nx>tyTeVMF^P=E_g2I zfUP@_UQ=-r1VFHwM5B&DPEe3MkEu0v;2f)CTAug_-l6|4{>ZaArDC+3PN>WC?#$|4 z(|gO$mzg_UTTv}%1rZIbS{}}wjg!;pT^Dk_b7brE)Ow9L;h_%$c^W`owaLgvR3vj; z$CCRzZE2B^%l9Q#FH4g+&`2 zXy^HWlgz8KF@t-G^nUgSv1Xx)#KssattN|`_RoG*owc=7P0wF=_Vl2yE+o*UCIu zYwN@vJOnV@$-KorqnZj1+7dZ!3_5uQ%^$D}{zCxek9ZLOu2cGVpE@=spg|Zr$Ik$7 zW}t%~7t_z4HQ=X>G&|r=F@ax^<^Q8A3*h&TVN^0^4vs(5r~j$B&iUV%3$Zc-jRm<_ zfGEJ%YO&`u>4zI%fCQBe|y<~M1DB`8=MRXH~`aY zftU#~Gte5GgNp^|?Eql@38%3990NiuY`{S8KeycbbMS}d_jX+W3jX|R9{<)v{r^fU z92hzKmo)jmQJR1q-Cv2^zxAgW_?+^R~m-4?8c7D;TeuhN;Q*7kV__p7w1-{$Q&ip@g-G7b%JM;h0z5ieJ;aPq` znEw&i2x#m0FMar5r;8ZqiuUtQz}sKuBfsyr|9aYQQ{}Jyb~YBS|0qRhPTMN_8++W# zXWi~LlMDxh^1G-JNE4ps)iG;CSj%<(-g`ZlW3upz#nh`!>(}R8GWon&O9d8%Xb&sB zmZ7BH;68Vf@V@Dt{Pbs=D&6Co%@IaC5{B&O%T-#t`{!_79X4GrazdZyg8OzMl0bB% z`yLC3vjD7Cj$X?SM_q4!Jfn879GT zHIlwLHEcqUIWj9Pwodl<=|pKZ9UjwKlCH5obg5cgP;t86N;wov zjlsej3Bx&MmK(}>1TVsDJ|!`T*4>3&pR^;HKzmg`vw| zooOW`1Oe;!#I;%XVAnV#063!$rxD1pU@SYww_qVKeqd#-u<0|znJz720Cbg54KUNl z3Id_VI8j>B6Efdf!r3lv>b<=D|gfeHl@@O)e~0yz`7u zUj)~2;f@4F*Rn~ z=M-@wdq9u*?YjV$0sJtK#%-a3HC1uQxekry$=3j@SiJv^ZPFZe zAGs^%A|3gD2i^KCz)QQQ6l;A}&VME(9pt%sV5q|oaz7C^){Q6ZyU`bSJvTG~i)Vn? zknvf$;ahdb(h;y`Mutzg1UvGsk0&7H7U!07`)~YzOk07R%}8vEwH?~GNh0ENeZwCc zU}NPU@Qa({YCUX%ytG1)8T7kAWgR+!K9p2;8bMWE$sy6pIQbS>T9|Qc$k*9{tlwyN zC5!PkNzH?;f8_#IA-17O?D9*Pc%s^4hh%SI@P1Q~bFh4EK30R8i#sucs6jo2J~+xNGDK zZ!0))tmx3~g~!cOY6!);&+qmLq!Pq}|7 z)wArBr;3=Nb=|kd+Gu~yut@Vdyf$R-jQS?1jjgPSx#=C2C9xwDBo(P(yd0HE7;ivK zlblME(aDen-Rf}9E=;zMPT+nr9S^w;aczuc^oO!TxVW!*g*D*ig;%#slLAIi)=r0?Awsx?#@uFd3CQ4edMu_@`%hJhgIO!JkFr5VH_d%q< zEpKMm$-++|63=7=NWM|#dMw2A+{Pc}krO=G$K#m1T4WgA@cS>+C0$?994Hja*+f#h zmL-g-cQdm_fW;)%TV4`7ohA%EA9QuG*4ks3jtk}`=+SdKkQNM?idB_q?=mU2NT}j~ zOl^GCPSq4myNU4Amf0cu%K9w!2CeP24H?mm;Yh^gAm4n!KAcGumPDfdvSXE8&skvL zN=qTbPR^w8l6-NaGTdLD2;Yj`Wu+$EP|zX+0|{PC-Iroo|K8wkM*J&-H>#!oAx3E2>xC$RJF#G+9-G8uk&a{Km)gMKOGBE5smH z{<{9tX0cXrB$5(EsoG({%-Cc+QhArdkw+zgMEGFI&&99PC#9VD~1?F?~4IJIaD1loxH0U8rY{$iT!{AP-&jj5#d=T&x zUV*-Oi`>jmt&0ctmfmI$5%hKN;#kO?Ma9YGtX~Aw6hG#|GmWhDQZM0B=*@dEv@Xt* zzRCR$bw?x!7^-87=O3u!i-&9G2+mlWnl7^(?7yGWzcBPM@U?ddPou~NOb>IeO%u{0 zP+3K8Uc&E#1too1L|wSx$IYFWB*^9_UR%zd{m~7+cHU%0t_sO-!o(h@B*ygA)uAv1 zq9L_FV1!M>SF-Nu;;`~54l!aODm_H4zeSs6lh9%X96=j;VA$`C;af>%pd3!72UNFF zA1anHp6U#wt=>YUt+lEo)uY8wdh2!tB9jF?kAwrE8Ahj8zlQYnx;F-$(LmPrEC9a% zL^+2gFX&1SR|GoAi@q%W6Gu;{`*Jm*6dYRcPRW49QF(;PG{`StpZFNo^ zn1r6zx!Dzm+0X6hZ&O!{Vbh?4!683l8%)-!l;B_NBU6hAz4f_1aj8S!TxZP-ZMrgc zURW=}Jx*P*5(2DieWrBDFRGMhX=3(+6T)ZVMN(vz0ZNc)62zsrPMO=Gwj#FXA?ck4Cc6FmQA>@lD4y zSsl^R0B9WYr22`G(l$iDJubX6S?-NaO}hCVrjN_t(ulH6x77R?zMGMSm4_6wjq-U7dJa<=1}03q3!<&i%+v8>)zp0^S!gB z`J-F2=fV)}TNo;2|640(5lmThGs#0BX8hnL7`9A(LQ4Ugxp^Sn%{3D1Dg_uI5(;@-_Q5jxOLzV0C z+KUbsVg6!`O|3XM4$Ay_yvDMd2mK^c=e#5PI?u;kcbRS3&sjtrZ<20kHM0gidnJh{ z)=A^a<;GW`x>aSNGCAaQTUM|-%RR~iE&Q2DtFP9%%YE|F4{|Jyl-xO?3HT4Wryh({ z3SSNP+B0IS_+PqHajho`CZzciSL#z7jUaNaCbM@zOUc)=TPy{y2$e2xtkz^rfF z5(iXcf}tsBeDG9j3Eg{|MRrGbcEv?B~%_v64ZEESo)B!P|Y;=v1e8Xu|r!eo!g z2TMWkA$YhmRDXf2gBqTvk7!ZMm6-#$CB1B|`|3(O(uucj92>hH8Z@E~U61t^+hBo^ z(@=CJ?$9w5-s+7EQ%$`z^s>_)_7d?haa({O9k`Caea)cgv=jtvTwxufT@|(utxp8Y~yxY#NW*6~B5fTyeu%h2-k@$XPi(Xz8rmTeq<(nusNq)|FORqk&MW zf9xIXCb^dADT3MBVqBY^9;*ti0&uSB8_RFa14BvydAA1m{irbiy zN@F>75L=jXQiBCGCc)d8^*HqtWtkg7 zXrJ+C&WYFbaVeM2jx1x9l6+BNT!o%6rhg+9<;jEH#nQ;kZehs!0~ki!%VA+$zakjm zSpPumF-m66%fT#Emyb-a=ba*u3P`1!qtB(=l3$ohDKqJT@xz!r-Oi3nyt- zek5909>|ML2jz@RWLc^?GijasMr_Pdm*o#{)K~hW(KstihTZY_QH~u#tG2y1B`A9| z2_b&{h}=Y6d;ZY&DaNq9IV&W4p2{@LU>(DiPZY44`#fQOvQmp(0m@`Kv1FJ%w_(?} z^zF^6*(b+-#q0R^ajd4Ph3Es+?ol%rrAFQI9oVK!twtY)sEP%%dfQc}xi*p7FM(~a zLKYpI+1jeMBS+9q+~q`x3kpG(N*O+%izfnb?Ud|p+!*oC9MUo-edWuUpHjH`IK~~z zdkn+YvK47+PTQ0s?Hf7w#1n|hw5-&PWpX?W^}!rd%d`CEwQ|~=KQodQO(;R`1;j``gsvbG}QEip)yaZ4~FW4(EFJb@8V?=S9#35aWLFN2YR6d1oisu!T;d z`9^f?oFpkSDk;a*o%2EknW6kdHDVkND9D#P^Vy1g}D6RJ)!8?9**V#(u! z!V>Rf=*R`1!soV)b`2x*7xB@LPK07fZ(Lbt9AcU;%*R#JVBdqpYQkofhGFmRbC4OAmo*9B5hquMcw&b8;eor-rc5f(; ziE^*^Ci|-zZFpt&m$0DW%`dPSGohO7luosuG{Ij7X?Ww?Fzc2|yg*o&A%(K`OrlP+ z+MOHOICovM=3KbOw`lBBoEhW{!V{c&E@D{@lCBGq`ki6$@R*9t4oXt`o%iopn^rcQ zE+10jY`#>zH%%|djlAEsd`NnfjQf_{yg*4%Fzyszeq%P?x@gSSe(C( zVusi6Od?qVdidHsCr*mR=BB<)@}*-`;aU%rtZoADbhB|_`QYkye}Y=>vi5QKR^1xfQt);52V$17W8! z(6tA*0^g$GA>8`t-ug|W={OOUYK=9F$ZpPcMp&XV`mPnQXG@Z`<<>XE*et~6_dU^B z_K5!Q%(z(cmZTflho$cZRb~Y9j~WgWLvURr#EE4}^IO zrt%EE#$z>69{jwFK;9Nswsn@yW-CbTlX09JKkJ=v`I2y*W0l4dUCw;8USX6w$VBEG z^G+vQdyeM5@CG!fB~l>WAtB4^Vd`^>MFfqj3jZ~oFz?MRw@W96<&vE%kQ z(|Jjh>N|{5{g6dI+Hr1Zq&2Yj<^J2fHqLH-Uq-r@!@yv3dF)-!)9u@yah)wpj6K%e z8zU+JH|54QGs4X@{&F3;G6Ra2P9b^q09MG&Sc8kFI;9soYP^XFjmYB(U;&9Xu_c(~ zQ30v;$-T51*2A+w;;`t6r3259xzK?SPR_Tufrp^*)&7YOMX@jzFhfT0%HObF*S>m> z_kCX?@3Hlc7e%44UMH-64t5VNQ9ES*Oh3w9}Ojz=)!+@k<~TyjAOi56Gn>hFeb_hNFCaCC zda0Dt=|E?h!roE2!|`nXWB>1B<@x0#J^Rbefq>5G>-}lsm#3;Go7*buFNf-yFE4$J zo!Xs?uQxZ`Ca3{WTbu+q_NTlwC$|K65u?=muh5SvILdzn6mkAHN(P{c0vI5}!pcqz z%u4|(ZP!{&Q>kTyi==^{#bY*;!-yT9NqX+?M%_ zWUE%2k1V!<-B1Zz5UqlgTqUNl&E13M@VU*AtX&Nqw)$z4$r;YD&5}>G zo6$Ogtx3CrI%lqg$V+5Xk{nOu57bb2Sa8TW0wIe>+f1;Q{|+Ht-w6TJ{`uC&C+LxR zO-sPV?9f2YcUA3(>`P^5h(V;A2U~Ego`v+TUj)w10$KxNL%=_ znoo*cKS*xXqOGa`Ceq}Fa2TYSno!Jz7|V34HZHwso5;UJi%FFPZ|huzqsJ-ga$aN; zpPKSN*ojWBr@*Gd67YQE16V^dzEQJ|f1wBX2kt?!RS=Of+j8If!M81W-_cbf`v1^V zr{p^ELM6^^KZgf1E!f<*bf*<_B9D@^nH?wobObB!e^`bp^>8Q36-EE)<&bI7m@nuw zIQU(?b#|ARqrz=fad0TaS5Z+H6H|~cj|I<7?bjY(+}qeg=Vq$Y+&auaT(ZCj(~34E zjIHP*$UcEM`YWvzyC&S06qVTLaKF!g;Bz47Kg;B|6e`KQ2kk)$G*eQqI_*k}$aH<7 zVVo7OTQjQDQ8SmOjv9LK2HToRn%1h)Vg+}(pq zkl^kXAPg4V-p@P>6N-Ve_pRas<3*w>7;CpQ4@sB7L9|TeW9gcpn}^Ca|mRES5#We{_I7Jx8Ep^ogwcsQoQ(G`2xVonQ5tr=aUPI;S}c5s z!?n66L-7Zfql%ot(!eyCEa2$=o#kwD_!iOYZ(=wasSb1nYbi$>Lz-%9__n}(b@k>c zSZMK7F%nwx<$}VqP4==TAD*@@@X+A3*-w2URQ&n<;Z41aGQI%>LiYI*M<~MSgIj#x zsy(GZUnqeP&g7%qN8CmY>*T33Ce;rpvx0*AeZDx#)uN1h5=kzslKF93c=b4$d@$doRM5*A z=DRfxah8))1FNIV`Gvfy!SYcI{QjHSSXCX@#;~%A)0D$Bj3P$cM@%lk&Q1rr*$Lgl z!Vl-|lKmF5^a%RSL(zR-?@!TFf6AyiYh7Br{Uie1nii)nsifVg!xhvFwGx<>YdBt> zlSdtN)Jr)aJ^ATd`yu!1e_7A{Z*Bbfx10k`cX9~<=WKz4)Bmk{?w@0Q|K%kvy#MKd z0>_EYk?~5G6sb&s94`{EQ#74QA*1(6FGdae|>tuwmf|%Y=QQy zsTSh8mBw2|a*mODVJwu|YwraHU9D#3q5WwahLLP+pa$j99mjD=O8#OvQ(?|>Mw4*f!KQUl*EvIEwjlWhv>3Dyt-snxQ^;z~f z9o#4AC_owGgR)H>X?}7LE>aH*-pfnf7~hz-Ny~228H5q1lBEWJAeJc3`KYn$aLgC( zXtzF^ry+^)o~mFpMg9;i=aoYnwYV>g_D(dakBc62HRw+w=0}1jOWx~Im^l` zAl7>lgOluKux*KjHy}Sa;%UfhDZ&y&?c1&_!YTGvXZW2KpONHuECng*l9ErjW$OzW zvuH>-zXl`qC$LFsUkjtX0Y7Rm)qZts_1IQn$#e1OxTd3mg|vvT(*ufHG+tX{-(4Qk zG(LH#-Bs{Ko_M1#Ml7Zi=Hk}wxOPq9*f^TEGhehJRH@n!Xu0u~K?j#(sm7ywYO;vP zv~}v3;fJ;eR=ra1uuS@R>OcqUO`)}r`Y`s0tnHrG>*80tzu$o;?^pbXm+^$X1PiT$ zD|y_nc*0?;_K!}7gEM3-64Gk?3GW&CmuXzoP(C(!PS_}Pr+N8zQQBKmIvPyBFg^7c zHnGdsuLHgYB=~V|$<)R-n;_iM+caWb$EDZG*m>q~&8<#3&WKbX=kqVm?`+Io47kWCC~fwy}}#y(<5d zx70Y^@29ZY=C|b&Dvsv!dOJp(K_`{D$?j*T%hNLLQ^h~Mr@~7Y6{w$9Z5 zX0d<2+y`7v0pB$S^kHgi@;7y1AyEHQ7UKp!ZTa6ifvu+>MIcD%b6$2hmK|$7T@iJ_ z`tlu#htxOLIXQ0-rSwd>X45P~ZsFBIQNx9BMl!n$ntR{i^H#6zi<6^mUR}|p{bf6? zJu#mPeB)-FJ5Nu465rw_!z|gT!<{(ZKSGoE6~fzM&BtN%?f2FJ+}3i zH|2xAkhjDky14lb=_0(tcyRNS`=+=sxGbhR)-M4|!;6U0t4^DlY#qxm+vyLon72<5 zG3jvc^{u71`w?-Q0lS^;8||0dzHPJ9zkC~XT3Tiprka;a&kpQrhoOzVC-alF`}>!( zWhz`8I>jv93f%tu=3R0>hYwGC#XBWR>wYRM| zs!lt`K=Aaum1VuKfyczgP(#~~@UmbAjAA@47; z{6?^{0|>W#J4r-`^z6p2<{Hy$Bpj1oQ*d{FBdWJ(NH@msQeWvHvRUJdjHUfG1=Va^ z+S@Bt{YF-=fytL~p^dxmGuY`BjimnA){mdkEFxILoM&(*nymrbRb!>%jl=0ng0o7} zgeBT9I$GL7uD63+IR!htJIMKk7o`R?<~z*-Y?!_H3u|j$ggWCtZX{8*(qEmgClF$V zCo`BqfA}Qg7}?9uswti3V8#^k09#-(h}MP3=6f|!GJb0cn?4;4%cF#X`af6? z9=y;X6C_c;2(yi^2fr|ER5#{(^xd>(wEJ5uh@j)G#AmMNk|&1&mHb#UGCM@auYx*O z!nqU-whoI&8LkLya+J=ikIKU_Dl}T^a39P>U~ZSb$q3a5{jgr^WL{4ZLige9S{V3kg?8eHkgL(9G z(KB>3KZ2s<*vwb@EAf5kFFZv;>yd^C*N7#RoQ6<$eSFvn`mQhA!C40s?HeDJH6d*! zwFifv!uR_}@~S?5f8SA`H26eKJw$G`BGRDt#iAjH;F=^-MUUUnv6hLp5ToiQ(izCy zwnDi!Z*uvkT(_b2x+hCK1*X9Jg#7m8XmrdPg>d5vrR$hf@HNBuSct*E#1jRvU&}kp zMZB>%DKW!b)hhIlc08XgM^>(v4S(^`j$D3ubTT6WiT=(Joue}li7m3_$vcSu;Dw{& zq-Ib#wyBKCwpsF1#k3OIv00nzk6vXYw;?gENpIsK2Bog$hj1BTPY?25j~vP?cCU9y zrjR`kRO?33?cvSr9R1Y$y*)===edjVnxDHD53J5iJVi9S(>aj!tO>_mT9hq)L-u3) zuwa9rB^vqGI!X1r&&nqkzZIJ>_FDNAgD<^8()@#NHRU~`RvMXUd8r>rLf&epFZ3P? za0^#)^{E)&R$RoidbP@2QN zh@C6uN#E(W9?f?@Q8Wo<$igIA<9c|ZW29|DmYohIMVHu&l)QV3&vb7PuB5&-QRgJ{ z*veq7`CC`&S?D)wEICn&I{Aa9e3!65>A1jeS?>lsHKR8yPxSB~ohlKt^?v$7rqJ~e z)RFs$i-ur%EgTZ!O_cWp=?8XAGDS@p35`kJT{p%{fA#P7BH9*%&axf1ix-(!SB3AC z(LXFn*b4dX*L7d?X2qoMuqKk-u5Wzh@)PY3d2BIMshK-k^a-ZQbaZ94O*d=(iA>z2 z)}wbvjp5}yZ_R3t-QkV>bNN?hyzk90FIr!_3KZ8_)R8Zz8dE%F@=&w>aUlFEv5wMU zN%K+re(vTXk&AbeT_V=bs|9bNFT*au=f+tvi3TVbIqy(EJnTdlk^q0~;a%ANq%Qh^ zB9Y8h>q-?nv}aeIHeeij)kP9L8!oW9=q&lx>3tJFjU)Q`edyXBv$nPd<$Kwq@u4A~ z3tz$t{EClqHaNte<#LQ)6cby#`E+j^l<4a|c#jl|m#_X`F7^N8EA;=^q0GxGfVhwc zvAO*}HhuqHp)_3H0oPxeQa_Wo0bXqXf2~;nqqc>K^9O2fUVixVlborA`3GQ)1a95= z+eXID+Rjk}xNiy&^upBD;=QS?qp|y6inN8Zld7qsjGc|Wo$cRc_4(g#lsY*(ni|_+ zxuyMH3~l=|PKI&lBJ4uOZ>i22Ku=E-Fi6Vzyn{}!@6ZlBGF*Jj4p#rw7=+-s-3SAU*w|Fn5npZO3Z8S3bn=6w*7X>l9o>s2&jp`_?2K?m~tFgd?? zxkEOWyLqrU(T5c+Sa88E;!qj-zhIGPgrD3}edfko$+W6pg zZapx%!Di_oAqMh8HC3UImoIidIuwO*gFsyKH*=TqGlJXktCScZP|nqP8U3>@LqmU0 zb`S_$`$Sc4>Bf;^jS%!sbCXjgQ{mox=~8D94^+W2yGe3vJ7&Dli42mPY+Yvwncj1V z!Uj?E6JZ2|s?+MZs)?Wf0)fVk%5>W+<3oD*wkWAUl2`*0Pk0nUKfKmvU&8>Mq2_z|LN~J;vFzz#46ykx*_%B$$u`^_E4>&{-gQ!1m zkvD#(4^gplj3NP12jpnyCVzXuTmA|QguSa7Z=3L#!=hcx3vlbpYXWkxu54B5Xi^*?Vx%#gNRcU z73h0#LXmD~yxHVtDF`I#IFDAJNiRac>M#ugQ5Os>JD9VK?lIICfk4sVr6T(85eudu z(9e3Ed#X9dX(SMJsEo#PbeoT2?OG`+ND@{!LPI0Y(r@?> z%~Eubr0p&TofLG1k^uB`2j}rOJct+wb@%|1^u(VI_d z;sJqlpD0O-^&66c{03|23#O*FOL0JcJ>%JTFmc!%(8jXq-D4|Le%LPXJD=)-s}RHm z1me-~VR>*S=K2f850^r|dTQYm3Dnoe{CM9Kb_MXg^Nh7|A%bBcflRWP9zZxDfj|?k zm;my2LmH5u(tKzxTj`J?5Xwr8kzFFeO|L+p)ITht=VXuw5J=#g-lNdEN_NN>5Gda8 zu-Qnb4i7YjLyP9&r2PQ&mH--!oYPQ*3MzNtm;Y2lRKExORNI#eltKK0L}O_?P6LcN zL2+208sJokI4lh~m78BKG;HAuGH50QMLu+~o(&CD{wQ5O6c>S8%6*{%Q$PY)cU9$f zts`)wxn1@M9J~6O72=nI`a5yRH$c_mrv+-?4cS0`IE9Lq*2C~$bAb~d5IDW-w1U(@2>Ol^zyk8a0B|5Y zd?*M+NexB_|`^bn^28Xsz8bU z{$jQKC)RKEnK+=aAg-ZT5$XDn=9^moGB44cUIudSsmX^>Z}FRkJHa;#t9}%P4ifyJ zT##{!|Hpk?vGasHi43)*`A;Ok<=k;~u0rpckZX}ZlJ=P65ry7|X!n!?C4D2HFdw&r z_HaDA=w2>d5GIasBa*4UbE{of2mZRw(PmaS-kj)UJG_-IYt?yRRMZ=CH@>Pjdy|bG zdUVKsEBH{~*XIFE5<^FmA8?@(PIsl37T6C#(lSY<<5}xjq&s+f({*JQYCL~_f~ffd zcBl%|4>4t;??x)WChk9VbOzx+?U-n|@wR=kzJqa%>f^CdKk)SxCaC=-6_hBF;?Khe z6=%2MWT>R{AXE}al9rg&jAg9p!l}|t6anaC_;aw8vyT;yJl|Jyx)B*Pzm<15oGf>i^zTGiHOe@N5`W9#7swZ z)~!f)Zf|d1;u*Ik2$QpvYw;M`kUQ9%x_9-97lcZzkwke>xv`uk@L~VN^J<45gi5HC zM4Tp&F+t`|h%1GL&l$^AGWTAf;7m#OX%I5C9-*<`HSQ7HR{@({q53ma$#Tq&YNPuv zCLM#r^{0fA>?g)^Z=(m^q)*xHvM@A{fIx>GZb?(*(MuJV1xfbKe)1qte=_cPinn%* z5Y=yD6IzfYPf%yI^fMF*krLUXb)B9vt%$8&*9O=fQ&6+ST4x3R%&$juOFpZkt=gHM zCRLilhJxf!29Y6}A}xamCFriE-Qs%aGwVCg>9?aKQHDM*R`&c#f-Lsz`YKsu15zKa z80HMCC~ar(9L~FZAITs&EPk76+_<=BvdDJYp@emqueld&?x;e15hoN?%|Zp8B<`$U zqv-MJcvJS~Sr-q>Wy)DxyED)dyY{i{j`iR)FgB4Ht>MNb;#Cu;urC+!DaG!7Z zDP6XPPoHpF2U?tj5++YB9&Kr6RVF@L%OH&oO*VJCaWrQE|5#Leapc|>*)|LEsZMPd zW24rH!#kOBl`(ESAPgJ(Si59~a#21szo3C!$(`$;*OU5Sd<>}bEB@f2l+!3g-Y9C@ zk6`o-^QaVImjvu^t~0-TW4&+6Bk71EzLtR<-4dgJ`Ku*@i(}NA|E0~N*4-cWW9qO1 zP=gNe6{D?G%yB(8`ImKWM!Xn8%!`?xWRj&Yl~#oT>7?48NHJQnlmV9a<&SDAR^=;V z_~Xvr_$DRncHX{~_98hHecC5krMsX3icM;G|Jzv4obcQ!v|=MVAPy<^Lra<`vLsKq zUJnHnW0mbr*h+*U6+8Mn3-{C4W(#3CbhzWqMeBwJjYg2SPAqYp3ndtMSW%GzV7BJL zTkx9b!RZEiA7SN0PzN0?&Ui_V$P_)wfu=$NR&+RT!#r+A@eJDlm)HlIbAr%6rV+XQ zpjlx`yVOCQpU*qE#Ha||ZlP<8zvB1FFYiS3p|8U^z$e#^5|IYHH{WdfkoB8w-YKC~YPs`3+SkJK?sfT zS@9v>iG~*Jv@cp6+O8&y23Uk&E=18TKW!FN>h-yxn8>O-p?xq;XCLd1ZbqXtuKK7> zEZN!isjmDSXfK$+gp4{Dox0ny)JyHVOT?^On7LjXB6&5YG*?#wm)_xHTc=K z57tZZk`)QDl@ZpJMAa%>ZYrpty+i=3-Dcy}6CNiKNH9%OD8uJq3p<#(>Q)T(Bjo!U zu}Cid-`MlUVeCUwHB!>3cYd2!3AZ{^j!CqNRS=J)C;rO`NsfXfA9vq92QRPtfFiUG zC>Z6wH>lL7K9m|_wh#o^s*crIu)^?6iDbiVyR3Get#(CQ?44Sd8e`<7D(uoJeez*^lG*7ZNX!f z;_xt;9BW3j4nC}xZZ^Bq1Pc^_ntuk&)TzPiTq4^)z8i}TaBkW%=e~O!CB zZ;Qc2MY$hkx=$$rxgvTmX-*he4IA_y6wK0{Soi~&ve{;EaD-b%)0gO!aNbN}%<+)s zh-X(mgKIE)x#km6W3sqN8UjX2m-=hWo#eR7X33-;6Y&Jtwcl$fcR~6Q0KYPQ`!hPU z`}KlN03k)fUrf(8)1UF7T^b990fdGKjHz_3AZLe!chBNWxlsbrk%s{mCY+dLybd~D zi!bCxNe~#~HNpH`R{L}Ov1+dMP(VMW`z$GfPx}q}m<5GtJ6(WivwdaboSs&#ns z{vXcosKGhBeAW{)5OxR#&Ffw>VQzfrkr0>lR1$;{f+DqrB!xMC;pNY973#chOP#wL z1ZG0-;FD$w#3A1+U4c>c-SiV1lYK4FX~^tyS-AbA*%A%!2QyEW0Z`ya2%P^FFIGoS zgbn6+y;s6t@~Z-;nfi)-M;J`1um|3!T1sdXw4t-?(jghn(euDg$!R*K$vwJ|G+7xt zz#W9aWt==eFUS9GSLn;_Ap@P4&0 zf|Z_j4mj4~s@L$0|Fy_ud3osjSufaVZhAQTB`#2PYvOiKJYdWbViGvuObbD9U!=4e+-}}Ksc4{=+tMXk}afv z;=2_YcL%zeY3neHG#sxN!C+}*9{(FEGvvl}y`^~#07jS{j?p4=xfx+|;0VE$z7~I$`T(%k(ocJb_w%rYbQIm` zTpDmrU88h)J-00v;HqMx*HtNam>M5Q*lj*rmB%)@;7@#-9l{7;!Nw*M*fJbh6vnj7 z`wd0uAT$dcAUhfG>RlAU{2-Swj%18g?UYqqf%hYaeV+HnEbv6rD5^T~V#Nmt2rfG_ z5mJ1pB;HkL!>&BkV1KPI590W^XDISyNlz7~oB$y&Fwpvwp93?361Ae% zVM^mKN)RnHSx$6hQ4Di+^|v{42Vsc#gGW3S%n}Jr-Yd&vPlxZNl8{IBelsg&wHv_h z{2_^(T#tb6UIe4}CAsmv8D5k){Jp0xGzdI^;g8}V(K6D?t}uDOcf67(HpbGiNYS~b zh2efwiQ3|O__x^)MURoh`n1n{{2SW?LQ2R1J9b)1ly}x`d(VE&R2ZfT*eL&+Im))3 zKJ#?FsLz~IWj{Nld=?{>LN+E)Cxq{rH2ie#I=)4)9*fqu=+kh^ZMPlmg~(0{wd{&u zZ|NG0#_bp!sX@KQWytqC1%>ze`5T|ihg7L@P_g9o8~^)xy9W@0_HZi4>sTtAq|zr- zCGw%aSzotwe%~>fsuLQf(lHM{XlTNuB;3#3Lk-~un=g6GMKXC>yX<`6DO4!s#k?z< zy9QF+hHZbt{b=CMpoqSSi}&90ByUQdPVIqI|9t&Cro4C3bw@&dhx29D?PG==DzfFK z_`#i+X3mv`HlI~ndirB0T+ie8*yE$-Hd{L?&>NxkzNBr@FO04=%NsCydesS5se_yc z5H{@du8avjb`94_g0B}y%#96jx7trMh!i{QS| ztQQecv|y4qiF*ST5hBB5dP&|NX zPYl*d#TiHIZ6f4PmfCf{n8x1IuDWe`Q@ROzX5G~yK4;Aj4xVrsj-H6Vq46wC*U>VP7V!h`)Xe!bqRlPw>QO5#6YHR5(N@vm{@u zv+SIt{9$8E`;c`6ttjlE8=Y2Y{e02-t*^0UKW6Sr(SL`EuWA|3o&yQVxyftcw>Wj>NFQ(O_ zm2`G$->Jca!D5tpiwQZB^p7ozqe=Hl=+R6v+PN^4w`}P(6p4OjhfnHQGClVMYdrgp z_HLPM#!}{=w#`zCJ_r-(+9mcI5o0~)N&@2(-P{Q**qFcDVt;hIkw6R?_IQnS@UHMl63#HO>9D%?(N4t0V<|+dJffiS#C0YMsso zlipY;5~~R0NFhU#Y2Mn=6i(zp>|b`dZeJ`}-bz@2ciox|u&rli z$AWGcj3qce;Eof`3y;2v6}VsHB*m!P(-hsNK%?XNC9u(I+yAigrn*i{0|)&spehtHg5)e`A>Rowo0N z69gYPtkp1@madjQ!Hks%z;>thYM%(&F=+U4dSA97I>s>Z06$B0iO!@ioTd0ijU1XM zghokk2;1O%(l?rlO{yjw7-oSpK60FfEE~h=-S80ooq=@FXQfTg;wdhi=68c}l|SUa z5H7L#=&c@sc~Z}fGvQkI8Hw_`Cwro zb2nB!CT*T1eh~jbt`K{*lq94)4zOb&M&4_IbYoWEmb?2K$rNgEyHMS!b!E=4fQelw z4>(we-??N`Ch4OSKf6s|Ug-{zvT4#lvy5HKFuf8!bcNMhK4>BO-6mhqPOoy*tK0`2 zgbHmcL89?yJA6SF?y2dOZ^fbTG14UO`3RYEO*u6JVdM<=bDSz!RJU4M>B4jXCUTne3h+X%Jx@i z-FRR0Wx<O>6-KfK4q97hK_5dmEW89MpFXC z-s?>1poKnl85`rdd5bFEznrhXJ?o417o}>b4%{(PPQ}W_=-^XFJBXoq#(OJQ!VV_+ zaLutSbpEga;MKSbH|YyDO&-W+2lFo#9SQwKsxQfy^j*XY#uVa=$EAsv#gSo-GcUdf z0&maTma>7v3x&KXsrm7t+>IgF$!!#GXj}q!ww1pc<-+UgIGP`>=Eb?CT>E>3jeZkA z`Lul~4a{iOVf9_C@%1$6u)7mFa86Ys;N%JanuNxV>I98na_WFFQW+oiM~AzG7qEi! zo=2Q90)503*jdWl4Gm6e0^e*GiE#bfuS3Bd1?e%@c>_gZ$Den3YBqn{ehCXZi?g1? zKU<6eu+({Kq<^t-A0d6wF`M;!1#DnJ2x|;5l8_BNMj6I(8`?=yXjQthhwYS9(kl}X zDNhbAMCeQ44p&}W2HPp{3{me7jIM=1QX^?;-&s28<8zW&njh!(k3V2(BzPKT3;!fE zCJQI%kM8J9!%XS;^C52>dkm-qL#Gl1Ho}FHG&GU~9E54WQVGORfenb0^areQEM=wu zmXI+wBvQwsIBB({VTc025X+%t)8`xDNl-ArmA(=WbVWVM6h~85X-E5-6nY@^4IfG^ z8^~?aCwr4B_d00jZ609ik!gfU}n-eJsjk zFO6AEF>I%Rj@!Qi+COaWlv7Kpb@`>CmO&~-k6B3JK7;1$c2MvjFnc(AcKVmd5374 zbJ7<(o@RhKeh754jjBO@{E~_y7|v*o%UwfrkIO^~7h*sAo|KeFZjEuw1);Y*9l#u% z;GB&R6xGPvA01_C`>zg~sV{=O3@0BTggqUIV3aYFUwqMs3m3=5>=uWu`*S7~LEib{ z8HBA{kr;;uAHWy{kF;_NGYDniga3p_=JzfCVgQo>5K?4wwb9vx<*#`HQXLF4Bq{*k;)_i z7H*gta=rW}{hP|92%uZYq~B1P907Dz0MQ^(YD%ypj1cn?1&CcLt(6J5YXc8m^?_w! zsw&i(0^R`ARv)l4lO2pu`mgH)f9~!kn~)~G93g9lu_dd@FOdKJT{B)01&)?y-%|#rks$rT8$7E4P#U+wYP+OP+C$uh5;hdf*4I& zRevng>Aw;6(ZU=^BB@w{F{Pj2a=upUDFuBVt^Zd|6Kz1vwi1}83|vhvvSB(Ivq?xJ zLN>lWm`;ZHU?Uzu#b-^Pi*C#QHjWEd8JYR~5vjU!wFbibH*A-}x{lCs1l0V)^E3O- zDz+p%@(*CNidVwG!w)cZ+UsB@{o^VB>XeZ#pV0ix;~&eeXp;jfNw6JQBbt_-y^#;{ z%Jce{uAu?YeJxjt5%egsVFsCm{N;Z_^g`p>lgFgHbr=`!h(qX@8&7V21TU~Y0kPu6 za!#Y`m{5g)MEiXM*&F7PKf;aUvmvICa5F#qAJ88f#f+MYe=K#l##6arL-$V%qEQV~ zD~c}<>LTn)`Sd+tXhPn9$blPY`cgrIO9QhAdg#72K#xsN2j0m5Q#N`+z^O0#%e7EA z!fjtuH2R~nYlrC(!3G`EsobzOCxC}Dz4{qSWo{lX7F_?>J}T*ih4o@YAfO&o0!p&2 z{sY=FDF&s^|6_>_*yGBL@UUS{xYWMc9g}{|PycFYKv9!`om^E@g$)<%I57syNrtB9 z;|P@mMgIEQ($}0EuEmDQ-mHn7nuz&R1ehHJBs=HGDnukWs_w8=<|gtYTwkf}fvW3R zR`nlH!u@02W3SeKz%PQ)?C!mX|4w%Ox@d+sT8`XsZw9g(f)l_ctJ#P|F)I|oe(6q5 zf`J&pK#WyiG=q{MJwiqD>m)!$z5QhyAYTK4Me|UEgHa|d(q$AOYmh(bWrDNg5d!)Q zR166Qd$b7eCKvue(;XY>M#KS+<{_mn&+{Oq+&x6fF*|-kuecQT?w_EGj%g0=i!EE5 z`Ny^<8;q4EmP#auT+#PJu+qdWUx9>;w~52SAUBSfZ9n)?A5 zI(yw9072GBVW(GYtbYQZaUF~kbwI8YCSib&c&2`LIfmiZFb%<)!|J1)(2PI*kL`@# zV=XZ#zKVB^L4-p@pRYeVDf#@rbUO5ChUIC;Q3M&M$)7!$Wcgp}Cr*0B1U{!nh{=s3 z6vNIU+SiQ;2Z5{_z`-wjoAMEQUDa^a&}0rn91zT>a}G$ljxFJcXed?@(!zsCZ+=L1%O zo7unXw}v*%Bg`K@yL~IS9V<7`VIBhrc<(n?CcAq`Q^rSx!28J>!1AWn|Ez>}dBE!3 zA8gw2ko5sVqV}aqf9%oBiz{z2I&l@8Aijgvb)Z>8dXh4EhXJ{Nes?r+8;2a~A{3!YI0N78eI3D{M{Fo8^MhWXkXx2gim@?oJMiW zZp2U(4bi;@*JpO!Rt$&~KYV&eC@*Q4$gdhNpuI-=Yb-wDdqxfAwbDF9jZx7M1m5W} zRAE49Ira>^${z*`Z@_YfHTpBrx)FhL;?FrMX*rmRAEboFE}Fjty%XDpyi zqQTXB{4FS!A+V(3VIe$JES?@yGHEEUa^?%b?dMRR3T{Yh%GiaseznTVv*`-+*oB7) z*{7=hcqu>~ez-cA)qp8|Kgh#AvI3yPg(59LGptE)!UFuleSbGM=DB-{@r zmhS=8n1G=G50s(-1!~u2^op&eJ%*~AaJr4*9jFOg#-6&P2PeW&*olh!lKKfY5Lqjo6P3-IN(WzvST9c zM!P{DO-M)dteaeUj$2{^QBBk^9;m^TrCZdJLH6%8`6O*NEdh&wUM^J)+?uxM^oGV4mf*lf0{kcDw zK9d68n^ruRD*?+*e^#M9qUtRm5_A;AM83K_3>b%3#SCso@4i2^0B~S zlmV|Fi%;eH!yE3f5o7wUw9w)|(X7o`Cj?(v3zvtj>OE1`#({@K$_~voyas&~3y(5u z&N%pF(QH|75JB1TsL{kl)L@!Tl^%MSKBBRmd_Ypn+kW=QxY0-3UJzY?`B7~1@vULN7RqihMEEQ1=7V0{|pneI@uHfQQ za8_)wxb({1i8T=NDje%CSS(R0li1+&u+{CndLq*bXDaxpE2ir`k(-wWy-E@4y|&Gc8|stl?|K>pe+Wq#sC$ zCyfK%k>%+s3={M4ZBP|Lj}nIk3M3>g%|Yv0xNytYK-!?Amf9YKBBW~tI|-t`xL~i^ zL6~lGXaNU_w07u2BZB`_93mqbltHS5cmyi3kE6V?HF!0S5MO}4a0_DLX>3C{kL9KB zQ+zG$_a^}LX~&;uz#C``xg!O}zcAqJg1q``Bz5-wk+-dI;jE{m5DCf8VmwLD;L0m- ztidos9Hh`sHdTQ)H%Ys*D-m3`RhA3;Afb%mw;k2A{AaETz?V2KoQPia_&r!O;`Gxrw;2#(k)|FAX*{yC2t$rR1 zaElHt;;NouS#z=+rH}85j%9NInvf1G;^J=%VVe!=sK1LJ-*p?yM*EBI2Y6kvmhsis zNb@F*a$j=5)I)hPnkcCIegnLQxm`-iMZ39O3NVHKY;$t1fI87nq)s#}4nZ1L4|Wdu zAzw|Tk~%Wu7yf(}ijAL{E;vQoIV1zH$^DCX(YeP^bFi3tc96y%>DVeUOuGLgc@}jO z*CdarkE4g7yl`5dA+v7$jj5z?p&6H{I6YC2a0@OCMT$L%0&xI~$z}f^arM<#d5N)^ zC)%cmVPcGK=2*HxJMy_7cZY-|qS5IZe$Zq43U@1Q(gI`yo2G63%$3WQu=9qCYV zmAwC%a!sau>$8S%`k`AOHl@S|KMYSWT!s}spG1%G^1zb_@p9+NUDf5yTlZRV7D?E! z>NljfP~HH-+R@W2ZcE_tfn(mhS&@9>%gcqAv1Wp>1iw~&X1!>)h%`sLIOiybM7cDq z1r8)B+&=5EjiGA$ff{S`80V4(MS47~{m%PI=U1)Udu{wxv40LOA1VUul*JJr?~|>z zHdV#)GX6*m`Y)h8&c}dgNPe#4$>1lD67qu!ZrET|N*~hLArEdyo5~cO-S|rBL&R5^6+Hx3cGtjEP zdPzTBIMnciZp;NpQ#3s$+*T=Z1~2tR2#jbND1jq8;3lVYG(MxKGx5;Vv?^n&SSt+J zT3@_ia1%Fmr}!*5HAk*^G3}A#@^_2Yw`}=H3+YIYw#;j$g%7MATh>=e!z7At8x-j# zef|VSh5;2ILq_D3+CA~+7rQU8!`nq#2_32DpB zGh2`RaX~Wgi>(srgu6GFwfqn#Nk8#f<<#aV`KE+lYeUH#kzqv((7XSQ|%Y)$P#atN6x0k*#a4>BG>GfZctAsT@8G#%2jl zJq9vk&fA=!_S?Y1l%zDWBc1tBKB;y%g-1g!!GWPck=DTf!jqZ0m{Vvd^>Jo2bFGi} zRcCAE5}0Iv*bx6n*y$WoXNVL>;@;yu}}L@3=-$3AxKd6hdu4V ztqKt|?&)%}Ckw?Y!vp*=JhX=4)EhPW9^PT7_r_D}MyL>kTk}c(BGZbK9_$3#{`m1b z4`Oruy|M7zU+soi6e*>fwuJViafxr&(q8ZsFaFT|@@zA1_*$ssGDMXMrtClL#0H~# z#OdNX8RO8fq{8UC^6={o-a-p9B_4h1b2QqsUlRN5RxGP?Kct(0D@a8or#=eE^`{M> ziwj2Z-?5#zFQ74IpVWtE^)D_gBIEYbXFPAJvZKCl@aKgg!5)vdEHJ2k8`OdMNL^7L zaXHQLJX_MW-I~k88K4@_f9HWCA#Q4_?|`8#`C(c654RJiF@?-%%y8@RoARlPAIA%5 zKewJw0d2KBufWr(PWa{xPbSg^bk_PO8-mM5B0k?D^JAp-%}K#*usbF<6~_}J2w{8a!4$aP;Of(3c(h$yy zy4ZCV=H2U>d)dIG*m^E9$kq9LnGQ7a6bJT{5^G&63gXXRcN`>%eP$zaX;W-?^Zjjq z1`>2Q=EvC6jwq3)3qsK}v(O#2sIti%O>c1FEi(Fvj7fphkh&=6_6dhUyhrZ&W!tY^ z`aIqay8#@<62tHBBJU3_d}l;!%D$rfsF$lTN>UFc={YB3@QZ!gHYjZgy|~-ANWYoa zAZ;(KGHfRE%20@C!xB_nbKKh1yh3{_j@2l1*yp|~dpK0eX=XZhQGRmpLE_4@PK1-a z#!_{KipUb(SJBxwQd?tw)I)jY@rYQOXGnskhk$*P-%H~Q8K0BkH)M{e65aL+6HraO zrjzS#vIP{rtqnA(YqY1({g|GKg7a79NQCF-j+R+IHojO|>$5fu80IP^H0^U}q8V~* zp~@)~W}rAdC?DvOb%|;V`ZfDb-mcRBRLIOD+7&4(GfK&B*V@&}Z<&iE;|)*CqrPe9 zfcwYeA<%`+%EI3+ze#TVo<+Hd&6>p3`i!2OkSuBNPa-k@96sMVDCl*<>#v+USFATD zetgY(TjT-pUR*yZ^R74AMTsuknB^6la@$J2*r3wt41SciJ0x6%+Ph$}x<^~zA?r}M zbw%Wyv0BhGF8rR!$Iayce2V(;&}R6XH5)JF&rzA1!-25DNSS2+S*Cju-TTO1wA`J1 zxAqr!x5&g2&hHI3jEc-VGP!#*-uRzf^3NRXybe`p-VODx561uEO{EwA+YVXBYr+3k zOea(ZWBaDAb)$W;f$B|Q;bPCG=*!mKux?cgw#Bn#1|dQ0=Yws66PK#Gh0eQHLSBn+ z&Ia2QoFp13Bka=BIth~}svezxk}aH&@^0(@YW&@JIEzj}NT{%y>W`B^l*E2(PWJMr z%o0ZJ&wX3IQ@aq(S^w*pb*-XKzh~1X_jx!LDfh<=O?@J>f@QNWKk*7@zn>#WuiN&~ z`6eK8br!`t`>f*llYS)g$Zh%Iyx`rU$ntgM2$Ai|&}Tu9%<_^rtG)G7Djx4oA~fNx z-mTl*^<5mvJlAQ{_v<*B0#){1E#?RQrmB_k%d6#89%r5&Gr#(IfuaHXv)S+y5yxLL zbw>7@agNHL#^x#JF1L_AEmMhj_oQ`)Zx1F3oGor&FWaBB>nnP2e>I2@n|tGa9@p99 z#k(Hd9ZoWs#C;SuP1Ukq={i(sFY)9*A0PVv6YeVX+Vq0Ssuu9=CbTpUY&K9KeJ>h| zxOZ__HV;y{a6clu8Y*m9j__%?f6W9_OTO-ZQPgbJ6mI9cR`M)wSpU*(si(0 z)~@9+DV@z;BF*57>)y}x*2GsTckYu1{Q6C9ur5eO%XaL0SN6_ZlOE0dmPOl=xwN^0 zd49n^`x3u)Xk?Zsx!1xge2+&%9?`vO<~8Yyrcn`{s~d3U3bxf8N zIZ5PLPC{l5E;w6Yp1TpF%ftGL4~kQ+7n4?>iF#?5g$q+oz9aYYoypzpT@>Vw>lpSp z{*Asc!YaEMhw*vDIivLQ-FFt31}dEp4rNbkJx2aiw`B*+iQm>!^`}BDS9q7sQ&ex* zQFOT1$G_s8xBl7aOqtrCEPfGDcH!1ZC3kNzM!}(IFTv9mW9lKck8RU{&Dod_R_ELoSPuchP`?NwzHkfFZG#5X?hqL%XVEO^!?3hQD+~f=?5~4 z$ri7zVh2im8Uw?X3uUv!1?d+TpF5jYm^{f32} zP~-B>JbC)B2%{7IA_&A`YP04ttm9(9Bh7Zty|$$yE?l92II*?)NQp+6-Q%QjYRl(k z@xsV;TYb%Kq3}5FZCc0WuAKR_Ssl?;srKln9`ku&G>$TNbF^7C(b6};!o!gSAK9Tv zzS&hpJD!A7o{GPBlr zKSpyHNiuBj4Dvl%sv>wx?u15o%R2F_2K)#nd|RH|Skzy!^IWc0cU>wn<0x`gp2uy+ zAZf=x6Y14`ZGULE9PJH!CSgJ4D6LHRxwU&nWnFslta*IGGglXA{0>#EQCW&8%C{*Y znaBINqozCI6kmK8tS&Wv&4Dd;!7ScRDL>SvmMnLYT5WoRN~af4(zzo%y<$7q7<9vW z4T=smx?Z;9Zt9tD77Rx(@(6$VnIrFdM@kXbv0ao6OVIkVKP3`O5Nw^~Fx^@RgEHT1 z3cKtS6|$0RWP4)Wd*7Lz5(x|>LTrRjJ^K5?zcmv>&~?wUdYk<*3X-pC+Q3Duc263< zy$^?kb~X_Yud$wZ>20Q%tipn!4QYxWMw*c@3T9GT--j(;4Rnzeplm;mn!Og;FZ7N# zYS`j)YP6Yma`c#twLM!rUe2V9A3n~wPnr5@kvRS7;B7|sk2G5s4W-~s+2<{+kbz54 z<08h>nK60S>T?Qj^7E>*#qmueYGsuKmoWac7~7gKWmn-%s>_>QXT@(aM~7#QQHi#h zjtP&4rqiJ=8lLUVNSTw4mi%d7Tme=HmW|8%-N3Q;?PAg+%EHO3>}?1B-SA$?Q$Et=}6%r#=}gzhj+QE*70*(YzJOuq2|`uI>~0Lqt>;DW`fffTSGV zGK+h3rME3rZYUQb9oSZ+dGWbKFIbppz$K&WHEnuNI?YyZ{;TlIfy2n2J;7%*++o8m z0~?;=8WQAee8qw#o~a9LFS}Em0zXHYzSf0Yi*HOc#G*?nDVh4fy^Jxv=V#o!sb+HuIJA2E`lnkb#~UXs|cgj(jYaNT7|k8k~qR2yCRpu zac^G+i>z8IJ}2M8n--?|e~9|ZsJ5D}?FueMinq8GC>Goc6bbI`5}ZN_Qna`h2<{Y1 zad#~)MT2{h0>LG?eQ-bTTHngQbL}&;{mf)$_7tyXZ;jMD>wfb|V|f zUZ#~|iWb7a&Uh*-Ek$?C5H;On`y^cXS^*M2E)u#-pUS>;`-qo*9_ex z?$k$k4Rd;x*{0OLp@F!4#XqM~j0UfBGeWZDo3LC{zUW7;L_w(+^qi5OmO|bZ)+ZTf zKOC2}mRZEa$_7uXmvvQPHln_7Bc#?McBf8d5b{TfWm~V0b6`Li^BJa@;SGuQi0Dz} zwm&Eou&r{=}&YU*1_AI*CO@#ZIO2|XP!y+m=R)pGPe}&r%rQ2^ zkUG{e)xn_mzua1PE#NX_nR`g7ieJys#O@*^8&T08oqjZ2ykTrgio8+zCkMaNIQj82 zGTWV|Q#zQ!$A6rszUu6}zBOt`!~s;|K&Eo z72inz1_j-{{%tOdOwFE{v9peDDGWD{ZQOlICx3=PAHw<|k;j;U3o{N2(!2o3a|CgAke{*P#bo* z_G-8al^7cD&{5ToB*#u{p~X|4tOb%P_M!QEsqZ@kj9udSi)~BD;L%Lwb)HM%&DQ=V z8Kn7dg4;&f66+$HpBp2=x2nG{y^+Ow-tT@JxcrKPrnbm7m)Y~Sx_Db(t(?>yIWrx& zp840kr&_uF`#F=~)Ye7&>NNP(K$|Ov`m9UxxC5|iIjZb$8_HcbyQ|CIg%91Tv(k4= zU`y2!J(yg!9nir1Udl79 z{~06W$g1*3V)o_>gx-vzHXaoG-5g{=i@A3Y^aB`J(;8JL?CT9<-`m?Rr^POJ9Tuf| zt1}iQkiL#S8QK*3a`3*osV;BK?=pHr6GWKG5mpoSnkns(4KY24O(ruq7$b89a@_p(;+dC90z|53dLnI^)I>bFZw3DwqOH)%&G2Sw11 zH%jhG$ySpz8i%XMl%x%QYj<}uC1IkMZ&JLzf-#l!9mz1auJb1vNK0d_v8-d~cSVPz zF7))ISzL`QMa+YJQPoVT_c%{lAcXSOw=4M5z4=+uGeeXkB1p&EGxmBN0`T!3&Rsds zey64+GI9I^Tk>nRhjsizyzeqBH8(1n`Q6*Y-a*P1A;b6W4II)zj3E; zJ$_;q-XnR!J}glPC<{U`Fyo_L&@Rz_m((qSCcNqY@Ph)q^?s3g+>geO7~YcCE0Y?fZX7>jtfDCBkm?%z@Z1lbf6B~c3A(!blX zTpGh!5sCkH+Y(K#Q>%-k8lLIk!IpU3Hz3>@3EtUq)W}6et*HH9KeE28Se`{ zxgZ_cKar&voR`8T4%4C=x*2Xs`;X;#@_2Oyw=m&Bsy)K5VxmYYIzp4^Dz?~grwsGl ze^Rm`qyGv`2mj@FgMiZ4XqS_cxO^7EuNmUsT=Fw8AHE-6GJnrwFD*E%02m07XFmsl>L0y}GyEvk{^bPRQ*SEPikiX(b7vk>7q1(hQlQ*^{4EJf zssMuMVXYI3QJjg@YTkEKr&YQyO0Fa1KsGe@v?=C9?Wwk`lkW&PvEM3R(zLIm=o?RR zl&+@WIoXPmpu&((*!5%+CB-X2p>CUFDyE4cPU}xw9*tWcPk6+G6<}m3b!BT_vlB9Qv$Y|YV8^snX0~w zN|qK_(o%0iWk6>?^OGWpk`lpi^{*aoyr6u;ZpSBf<}*UWYA&PFW7j@=WSj8^cU?ih z4qEjI%Lqn|`h*#O6%!iZr`iEkKgzLax5SFuurEGBz>Qqnc)aVrVBAxY4jv}Xo`ORI zz)lj_PA56RI{6H@V#61Vc7SQ#GPeE1iO6S^wsc4A>5pNBsb{$TU®lGl!|jUo8D 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 Qwj#YO2?}5{qw+*WSmtntZ@j z>u5Nl4GN(6X|;#;b)V{m@7&h7r&gzHzpAMcFxSvvaUgJa`Ui-l+3Drf6812lz^jPd z=?{pzNFgAQRfzuDspHVls0Xu-DJgwVKmmX2lYdn&Q@=O2niksM=1?;BAoeEtsRzq1 z#DpVG7Hl4cS^1oA8H-wHb^I_B^=S&sn21f=9=2IJgu5;paZkF{Q;U@Vg$GXElCE)b3;|?$J|YI_yQ6 zJH3;Vmz;ikYeT)#Kgzw0UcT>2qd<6}6Lv)cnWU$&2hR5^qNUIqqH1fCP+IQ}1T5_O z#efBKwgG(2H|)UN+HY45h{M2QE`ZK8z&$s{8yI(nask#l1RVNeHM+KhM>JR$w z=(BBVZyhD4vR5k(*$Dx8>*066sU;lLKtrWmjf@)J#)9O)oT2u z`0QsRtbOWbvihv?LJ}fJG=h{E2NeYS>oOYSR|irvam1rfLS_3w529v2Q-j!(jPI8l z!*uz?M0?nlrpCO$;6dXl@J~JrPt#BU$Qy3Ed*g_G`heC*?xe4HbgkT0@zqqMc3*r7 z+y}j1e;TNgz7bz_=lrAT}0W(n&#MBp_h&8SPi#7qw@|7*y zO3u5XVorQgstyTs`!KTd*iDRr*2_2^J?M0iM!^$~<+2 zlU(DdS`Nj-^K%Xk6D|x}z3UI%pEB#)73Mp!iP1^3JvcLT6`x5F0dxn59uyXKJj%~U zh4bX*%?_8h2pr~Ca!-z|Rm!CNuBewg%520(GMYW=xexUmd#LgKQe*zuhoZgTGMD;x zaX7-ltP}+J20;M)J@8;hKn6V`;6+)3x1#kz|KQG?ocq(=zrJnynKx7f8H|dv{G{mm zc5s*+{;ekL5*WP0)MB+#X8U+%=xfR}IKdI3;ZE*TQxitWr*L>$TI@U2IDXohaqs7y z3YVRc*L&@{-Grfmjq&y0rBjgf`JKiA_m`;ZKU+Mv1frFbbbw85`DRyECWP--Huirr8p-~nI+%=v4mUb`i#QcP33P3F3UOqq2}Nn zE;874=8~(`Tz%uENwr1HEIn)IcaYZakN?^uKg<1hX+_T41xSq(vMdD$&| zCkniTG7tJV6<523CBM<0GdG*OU1k4UOJP|Z@BGR)^ohx#Pan6mAM?cep}C@X&s7PJ zJ<`2qFhYA(j$Z3+y;53>OXp^f&@l5+CiFQ7!u!v)?a}U=VZH!^NcM9fAH!RaNIX%~ zWM9h=Iq(rtN6wpH61@Rkg!l5?;Y;C3VZouRKBzf3V;itQhBly4OGR zUULm&wAL+aM;G|1F7O_AIi1WxGN#dJEzIB>%?s?4zdQNw`j)ZVdo*pXVTa8Oxvh{o zFFXZ-l%XcVD0b5lj+2^oyAo!Mj1tIX1 z&=Ba_wda5xG?T;#fuOTFMlkEEPw(fJ3@+ff%}-YEs8Sy2xP;g3pz88a*W2=4WaXQ! zV`4j-VO#I7ITgGgn1o=VY<}sd>4N!MTY-yJje3*9U0mqT>&(kS!0qNm1l_J<%FoNr z$1l%r0m;~ZduWCxe5Qk}-w&?y8W-{kdT;G4c>68&#yK)I;10?>VD9B+;<>=NolT-O zo#bss;O}B;>xk{=m;NquDu}Umxo8q{Cf2}KOyAtrB}&mld0KURP@hZ)=TuGo0V3+v zrCq+7NR2XF9+*a*dG(5-c9oIOWVQKUPk|*4EU@j-zfPIjiB^4mw2O?zi zWze!T>Jo8!t3&C~8eoW4ugUFM!oUmxD2(6+-R&L(S)6dp=fun(d>?>qL^K66s`{vt>_ z_@*F_Xd;kI)EJp9cV+Zf+!chcYsLZTnTN^y*WYa1J12K?o65c^4 zZn9NLG*=uz6Xe+}-wm@AZ3T7Ph0TX$@IR~6uA3>f*KlWSRICdgR$@Q<3Gv$6j7~xm zbJju++84Zs*}e7J#H3F-dk}u5k7r+fsHKdD3oC0RaqQs2@!g>M48l8#zly(`MhPQg0gvx`Y3U|#;l(755W4C+N8wrOtHx_s<4q+H_{r=01Zv2 zqi=h+^J}pgroql#d~%>nHnz22wu)8HIRz#sI~B=N)(g12=~} zzs)SBSYJ-uA33e<7p73a#p{OvE=CZWQr}YCTuSu~jNTv#4GH~Ke(Z6whg*7wCTY6J zNw!pxe3E}A0Mhd-Q&chd0E%b(@Lzsh9RS_+^V9tKxv+j@+u5PuIsu(C&*Y_Lmau`@ zp8Y}a-j#WX+=ck;WyLMgzM|MY&Br%;4Ga0Ta$bqXg`-XQox8#d0z8Peuf1243%lAf zSen#IH2^-379`i(ptk+SNXMb@<>*U7zGjd{W=}?y_j}sp@N*#kZN9%7b5r3Z3u(bV zH2ktj7dcS_h9}B(z?Y8hlLg4@(y8aJqtk48o_gUkd#F^`w`;IHS$QGQv90L4Xce#~YVH$Qxtlvbq z@q5M7X zE^Ft6YG;$3-MkMfg#7+@*Z)#KttrcT$9dI{85-3KCT>h7rF;*6Xr6~j$xp#mv&3X< zb30vGTeG+2Rm!~+bbE$)2T}6WT?G(2k>eW)?cG{Q(6;y{Dw|UpPrK#Py)7I62l$WT z=TgNrZ={7Rx01WJOr5?Cy2|`V63Cs+anY7IyimBqS#rCPmK{yTe0A#We)d z^A%`|9SRLM)^KnRvfS$NG!`3IA`ln z;brVnRHJ*{?2JpV_%_l8cCu~ov0Ere)ap9i74MgxyW%k`HNCP)pS`SyLKiM-Hy#*W z;!*DGa$-&ssJC8e(>lOr%FI?s_>?4*D_WQ8>cgD~{#jLsJyDFo=g}@!;SeVc$b5O= ze3W@dcsskzTh^lGA@Ft>w!)yHvAw06^THa`1L_vxT`3P21{@$CNTwo8MPIcPUWo;R8w5#R;gQtq1>BgSQ z6VSs)-~PvV{zZ%RLVxJd*`buoJ3;I^XW}89us|&a_e|a~$f@jag`{0id2wQ(wx0TV zTRhRIT&smk4S;-n_8ui_9eNuR#KM6f0><;=SGIN9mm->Cc!65(`N>z&aTEKwR#CE{ z^PGyvb6iu6>`YaqSk_ykOvjRVQH!j%y7XhTvR0qAEd~3nszlowz2-pIX8!&&a@tbT zw6!XKFX(GQ^z8B-r|2=JT3}b#(mMj2lJuQVRR5YwfD#rC5 z`}`p|Ib_3;4kn>>-?siy_C4Kq67A^1&m(qUY01x5d16p#oDFD#$P+ z6eQOEbJ;mng|Hpv*`O(FQH&^nLgXspe0y^Rg2?P_3p?V8`r!224N?Vy~?5qczq}#Uk75#>U zUTCXL>s8wdv~-0pJsHT+_cU7qD~X>p`hIB2D?NHe5p-7a%n2_->ePfQvkz4Df_eGN zYY%SYp_BXAqof-Xq^aiI7d*j+Jspz2{3Cw3+Y>hG~sR;k_HOdSG3Dq#9lpUL}$r!X_<3Q2g5P7mfQZsKs6%x35TR{_-X z+dH(Xb0e*+rKqrOp-L=Yq!s(raQCjKR3J=W@H5{RsQd&ov(2{(b=km>m8S_U3*k(THncpQC)~h>wF2i|9=5i zfzE5h*?opFU*-`$Ds8t8R~n2n#ZRD}lX{D!=u|NeCv`&F?9{L`y*>hr*U`rbrEz}Q z!Puh0h#P>Y>}v7b>M*KZ7#_zNki5I@6Ci%L%Z(ve$@aYD?o%2U?2%SS2ykNt`8z%` z>N1<}J<39S)LruG7z}k0bX0^R9O` zGx@70iCO^RHS#H^^!LhC8KDR}((MG5zE_$xGv{ zsi*_~fVH$SqRK~W0~fl}P?Aacg>&?vVwS_$ZCxlfI7R*c5cl43O=jD>c+|m$4XM%` zsnVqcq&rG)F@z90N|n%i2OX7O1f)YyT1Ww;mk21*>(HA4=@5Di-QUa1nRA>u=l4DL z{&DYp|KQy_e3HG^TlZe;d7kx4hNA@#``^w>Ucv@YU-j=S>Ei3_siN6|L7F(9IkHkY z{OsW5p`%lolQU*N+B0V1TDRZZl2N%KAt!b}h47$sM+yyRq7OXGr{I*1oAPr8PkelR z=0in{W%;~b5yVbmpEUS&^h)otjV@b3Ytm-VN`cfQp8Ra)*Lj?GyoPqcTA2E*c2iwe zcg3oVy`rY3MHdE_7wc_8s8(eya7`S<4M37aSDxba`v!Wb&|(T;vNK|BX~{OFY(6>T z9>`Pp)8B5kAG=IIx^H_s>GzM$$$#V=ro@P7z+gO2eHxu}V!QR`il`zI==tAZ3w^3q z5_Fd4USED}E5Uf5+I5`O#Y&m-wtjTe*bZ;i7&~36d-8bMhI=}dEN_rT!eFzxTuh=* z^0b4MG`F9hd6AZV`DLe(#DWl_3!AUG+rGl?^Rv3a&wn%qXbW6_Nw}we{-bJSr&vuC z2b zBA$jVAEG2VZ}{9tXm~cQ3DE7GjC<=XEWewDwdR2ts}HYj!gO>-$B8{4dVl-R-(kx&spW|#k}}0 z{56(k9k#rVo{XsxosKSYHpc8RvIQ`VP#WR-wh<@pwntJFQDX1oPV!Vhas(l84K6xT zum%EI-FxtZ*UZ6VOPLj)Jz^7-dipyBWMI7B*Av8xdcpL){Rv>x_D4|$%U=|aJHN5h zb~4%Ptv;SG4aEC}50sWgZCK&_A$D%pctZ=@T`#*{=EG*p7GQlVA$B(VUq|M=-SzD~ z7I6CuxdnR@EOFHPT{WX3A&{Z<#))d=#}eZ*CT9l@<#=UnHn^- z5D%1;Q)s_+wtaM^=y0kK_AE1gQUxZ}tYE@RW)*e>1iyoFAMFlZU-}`6W&FC~0N;cY zJ=*T}bKD$oeNLfM@f;YGrm)^7K41LK>&Yuh1R_(s;-KQ(X7bbqhrMRawGH%l(39@s zj=hJ)rF9z=0E@D=3AFZ$t$mg^HrZ7WMmq``uH;$-HV z(GEm!iERmW^(iEJVmc4RadG%ZAA$C{2Y$d6`)nhkP#gQ+(bfeQ)vYwIlsDH%sjUhx zFbNx~*6Tx~Xt(K&qV{|~vE)h#giOXg*h4O?bflC^6s%erwUuZQkF`~{A=-D?XiV(G z4?Lt+*<-ETNRd60H@2@qULKo1FAGkZplPactv!Wh7ucQp{KIygHqWO!Ck1xFKJQjz z@ozgw*|*&>7T6dp!Bym9Pj8jPRu=rmykhn001cF}V^fJtnRvHMW5~sfP14#;Hjjrj z+e>ZPEj|C*+b2MEP7hZ@ryAAa`k}0HWezHAtrD+0Y42;g6m9C``-G`;P*Z+Sfd}}q z9u=}=sjlgaurM~2kG5xpBXTStR+cyuO;PNfAjpQrY_lJap$X9eAx+YDE*;FBVgL={ zm@r)z?2)hBxnrwQIxZnC)wNu1a}%6gx&yXT3uQogJPa$AuUj?9K9}mHB&Pd$tZ#}A zw+eeanE8dniIastd;!s3nh($?bCI%ZF#uf#mo^J`jR!I}TbMnydxYz+E9$6Skf_L> zjSL2b4PXE8D#BHV6n6Az#w#ziu{pV$vWA3eFQ;Y0+s&A4hn`y9RzvvB1L&%5Q|)jF zjBm=^)K!&*^H5iW6;WjFCk9u4L^)b(tq5sp_I(`jneEGrw+H<(pV)2_psL&k4(;BO zF+HdtkwUl4tJCisvQO|wB_OKSeB%L440jjoDi${nTR&$*Mbi}XIS-4$TK%E1^#7Yx z`r)Mhqv`MowAI)9EY`tpBi z`GCxc=_>k)&a{Y?i0^G`#wv4-2baXRl3bXqtms`T-Lywnk`x-IiJO|Gg(%=#%4Vh)QTI=b2M44uT| zx6+U=9)i7x`t`T#fH z#lkS7oJ!B@-m|k%(xSjk!(lvJ8N8$Rw$p{z({3@w|5cuj<0US=cHNlaqPtiki{`=h zNcv6x-4v7rUrzuJ2O9P?UhhClY5+3{{ylDCTjHnObC14InIYG035e6)2T_o=7XEbW zbnlX{+qOjPjq0>TyY0m9Q1$jTjPG;${=R^P-&UTjTV8p9nIU_8z~N69-(qo#s_c>eK@zDS%$09=nXdchC!;vptYCe;#<>ZxT%IBc zmMiZd``Y(@wG-#{w_ldoY=9H1{U)EcKDVwTp4d?Y_x@VTtyQtOdD&(oY5m@=G~ zERurAhOK=EU0MSt58htX_g^wyNtc@T^ZH^RGbI33_75?wP}oeKXcl!ZmcLydl5sZH6D3w%j(jO$^A%n7!AlT&pSt{OnDRm5aecED z0?fZ#A$5Ny(sP76Zlaq2r-HUcz!h}NRW#CP3DjT(qvj#>q0L@*dyVN_sy9u?So^}z z@qi!u{1_z@_M@k*$NN?=ovgFft!IIvh7cQ<9QD*{Ue^I3Kts>IBDzFTkrakNhJ}Sy zhaySyu{QI**$Mj01-|36M59@g(|jNn-9a6}YW(^WY+*9LQO>`l=`pi|Wq1d2y9mKm zP|FfiFa0yVIdg?~AA|8wVuj2;L?n^8~kg3It-pM}^4J5E??&p|-9xr6**XW7z> z*HdCSB4#`<{GPj{mBcSeQ$rC-E8SCw>dWEo5Vqyjwr5|P?P@JY+KUe~(&)JGtZWgA zGB!!5IYDVkE$OSSR}q&p&Fd12g5S+gEGIHs9lA8F-Pi^1rc~u2vnB#mGkuCyb|taF zpxQ+&UoJ2D)yECEs3J@gpupZXdhiz~&W?FWxN?>tXP2&`FhzYc9unakw}+O`Aso?}|{b_edg0h3=>_0f(^ z>FFXTG0K{H-%KeFq9=PBWlA?6!QXU4ee!IF>PiDSv>>o|Vf4N#xg%yZN`|DYNLQ*6 zrW301Bs(Sgp}Bx^FQ`Vh-D*f!jtl))=KROm)q=|tWOyFu=SsvIo(H4MO# zcr0x6JYCVEU-Z@_nMVpQ208$sjFcy57og97bPsg3sE-*l(v>!~|2F)#t#3&$qHU0u zS6rXX7ByiW-?}U-X;gWxEj4C+)~>?amP^tZU)C~@Efind2wJI2zV&zzJ(D2zUU=BM z-poNSV>UTz(TDv^XoMBrIGcP*5^4{0o{yh*{*}6*fAB9;%{H^qrLB%M{jp86n+X?V z2ClgV@UQ`Jk8maH#8=IH24BfH>XZ6sN)2)=s}@$t{q3!7m_>yg#bZ(Lk|di(D-WBw z4E00L{RS~DnrWl>fiYq#yCgzddUaNDx6o&5BSe55H} zaPdxVkd%*CG7S`bi;01lGMH%>5(1#L5QnZ2y{UR?*3o4Ehg$FO%&&vE%C@ZF5?0rB z|3A2mf7)~|r$bc65Y&v_{MbfTw<&vEf9D*c%(!Zdd%7SKOzIDUpDlBxcsa_W)2L?9-mU+tTT2bG)4})i z`IYzOec1BY(D3n?BDi19V#f}#YlI46f#eA082PH?D3^99enOU4aNSvt{>fH$)JRT~ zwLlhEa`cfX+BwkV2W!6J=WjWJkH260MnDT}Hm5h?Hjyx`M=UpiLkwoejjB=Y2EP=l3J2kJXWG0YrcmpOxd>)~^2mG*M_ zaT*jyJWR>`SyvZsWXoNN(Ap;`GmWKuZV?Ifzl2%(lyaPbTMs*FH!?riX*Ef!e z3hlbvWONHYP5PVAt#SpXZHd^>L`$#3ZNNEPd~OES3!%1Ikta9+%X%Jn>T= z&ZYJl#$o%7cML;8nCEv;RJv@4=_B6z)a|#!H*P=8b$@gxx2|u%07=`v7SqEYQzmOG zCd^$r;PP&CSw63m4;Nb*R!cp7v)V&~dOIRF%==j~x>;{M3G|aC@0F0LEq;K`VP)?W zYN7HBcib9TXuR(SjeK$FLuJYY#2AWaDoD%-mg*U@GT*Zm8rV>Om2~gjEJRHpOs9b< zzNvW48A~v-cH40;k<0Wp9tQ*s0a4~MIGkJhYS8wEgfsPR0u{^FcMwYU?)izSnk!(u z7-S6q4+gFUKZ*kJH|qX)>QCF{wbz(0RU8`-=Hd5>*3A;eRg61Jk`X!ukzt|pTCMSS z>lhi8bjQ!!6UsY2n^mLJfXBBjSyk7eJlaent`fb;;LeH95YX z)19KM3vO}MxCeMq>F7k#(pzO_p#U*uHp$MJ4dsTi#Ne;cd;na3rF^+rywA~Pb&$=? zAbHogm#fgl4MAwtjA7liR8o(fC}G<1fW{HID~S#;{v9|>a5ZM>FosH80eMM3x(!n9*l#i)n&P$NEw79^8qADbm&{0m)W|vGe*@9T15o zNQXq*SK$JRnvW`66FWjed-4@V7zZ=Kc_F8p`_FXwbpOz$uV;6Am|5jQDC_j(va*io z+J6Ibar)Eo|6wmVsLnFaNzfj4UNVL^O&hW)Lew>Hw(=KjgE0esOB-w%yx0^Tpx6f6 zX=yQ1m`$XW(G6dFgI=RVC6~+mFd=tohXJ}4L9p0*4eO|7ym6`8_5vBqnASGI?XIKf z!Y1jbI%IbIQL~bObkFrtFQE#qdR-;%s1&cv0J>nC{WsJ8_IQ>F`0(Tn$suuOkGZIR zeq5mB7mX6`7#1~dv716OZNtO^E`C*}Dc{WaDDz?L5V*BC6YayxRA6CBUrD)54v{G) zGT&5Ibi{E)f4o)t8pinQ@bA%>qwoDo+ z?5^*5708A(`WzJq065>IWk4nD)+*>H=soSaO9k4c!vVCf!TBym4sd#9g4>*RxI#>s z__k1_{2`ZrLSX%!_~OID{15f}lFkIM01Y0#>1!j2rET3PeijqRfv0FM9uCZ!^#Eet zKrU#Uk>_fD!!frwp;PN^vxVbEKj`L9c0agz#>?-Pm$i*sC-_<>N@=e~RyHBlw9@n0 zY>LN`%?PY;k^XDpSIVau&?6~55+^#A5g(SBx$}6aF!0%G7dJQNH$}>toEJRIhqT)O zKy!GqAZCE6mU7AZL*1ix{?XZOcT{yncM=GEwOzuG<36IYy27%P=XAcR{?Ga93@~4% zUW^;oiBp$hXFw1}`5q<0dW&`#YDRfD;}LkbvWrEs)YI`cbgu15mbnJKeGpCI29lK;2z5yWt{43tKk!K8d=;jLd`JF{0JPR+uFV| zJ3N*&V}ZAesVM|XEf0Y`6%|)?V3#AqCo}l0Y~Oha>=(wY8On&kZidA+Yk$E)G!<}*+so%U6r+MCDiFHs0iS%Y8TUKZjZ zQ~`T&ErT5md*4>-pmCf>>nXE^FInrI^fIVZ4Gm!)c@8Irbadi(6CEFYG;>_0xl*<( zbe&YZNRY9`S{F-rH(-vd8V;7*_?s{Dgsh~Wz(AnHJI{ac5r{4fnQ>vBM40jJ$0fJ+FSXzPB>q!!R2|d=`Bb@Q>Me|z(al&Dm1+@2xArwk zxqX!TFlU=V5+!)=zI0OPiC((YzKoll2%dS4VNCDYiOs3jXHdR)Q_-OZPn1EC?IY$k zCRrL9nogHh3=K4kA*|MY7Ri!CK`kmO)&3iliYgm)?oY6*m%rrz-cj)$Q;=tD%aBOA zG_RCG%q>oPSd8y|27(ZL1dgzrwKba6OhK0==wYV(w%S^zBC+I}RRvpvP(WXk%yuU( z&2Zx!w4geYZ4_&~!}HX2(XMC{=c_}MR!d~tnTs(@rebGY$0`(4*oc+A>~0Eo$0}@VjJ{S$4M@*fzXdT9pZw)q z{D+QYxi9C^ox-SrC#AYym#j`4QliqgfXP>Agd+S{;mfP_rwt|!AKK|Mx-GNgkD@R& zEu(_%g9{nE_O*BW8ycq9EAJoIw4e*jO;-6k1Wm)6x{`d|;RDp@z@OLxilSm#n!rZ$ zf`A+_w(wo;{R=OpB136)^GN)~RR%RVv_U_a8?1>BP_yCUdeh?&g9ZZPlZVQsiLrJ} z6cs(XWwf%t#p9rQgxs!C8`^H9Pva=?&%m(sD z)v@6ZBI)U$W=;lD+zZ#V_Lt|DR|b+yZUBoe+Q3aIp@VF`J61<`fCMn_chHQR>5hu- z!`_j#Ne|fp_0o*S!oyFXucd!KKR;m7PEXd|p;ygkY!{rbKF)m+vS%6l#gOX+mNMhk zzgY2}woJM(XTe09Zz}kVNA`l8Y2;_1o{r_Y0veT;o=vIDWNj(d(W0!jdxb0>U?>l@AoRhzmtb>m+f4QU3#QkCY3H>T#$5VWd6^f=o z+3nd@0q?OMZf61)2@{==dVa3zw|^Z2=2YYI>K)hYk})14Fz`kn?8m_JG_~pZB@sy8%_&?=?mQufK%x`4eC+ev)gEA58F_crDA#bTEHj zq^-XkP-^9X!`9a6q>itkz`%;TS#>>GtsGb)_>G2HzjhYeI~9|m2hkiXT6VvpuHJG^_pi+eHo_0rck02;)U^$Emu{=>gc?rBTx z<>$}OrM~3QN9tE+6Kx^3xoN?TS=PQGhJ96b3Hd$ggP9#B(wr z15xfMfL~x7~BS3B^+s(HhJw zO*ENnA zs$tTelY~tv3Kvd04V&()!XQQsBI|q1xellahgO_7-nX=xE=AZhzOZ#GunOi)}A6+!w4YqK30`*9P?CcH`JH4m;s1RrRow_-b^a%KnKrldtrd z2;8x4Y2N_;h<&TA8A<8y--~&x+r|il-=#zt*xaH$8wNA6v9!TKH36->OqzDR%sJR? zMcXBTUT8yJP5Y=;g!P&@TUbySQKL=TpF^y4Bex@rp(g?fq(FMESK(?Z^up?TN&w}{ z?!?S7z2n=HnC~Ey9oPUBYe1a9#>9m+s-X&;gRU=^T5eCr+*hbwvZ)V%7`yG|!$d*d4N}upTMkA%*Ob#`J~(QEFcuO=EY+7nN}g z1No(`^0S+_MEDDN2%3y*?B)rK&p03t%h+A}M(*&N%dk65hpChpx@GoglexMKQ(B!A z7bn`a=ga7)6gbzBg;sk<$_I&9)JPxUrL#F#`})M9UatH!BYDFqpH5v|{t-*@7n{uT zp2j1hEXS1~EgaXz%LG;F>h$8b)9BCzi_Ly3|RL?QTGBGbo7^uhM02JZtsU1l}^oSaQyDw!Z1+-;v4 zc^$PGMy=1fRsdq6Y?VC*)2_6zcx?!S$Dw!p+b-k@)I5x3QoP-OguhMkYrc0@RKW`3 zLaH?%+l%j@$-IZSmU|mv9r!U6;}Ws%TlsD{^?g7QczAkY5zuIAR02_aegFLQ*8j(L zc70D|y{mUI1<9f)6S?8z<14^X=d{|>F1E7QSBy68y}N-u`Y(&NY?xhPokr%r2*My305r|otKiFIdfnx!99cdF1I!L6RVVLk|RP zkU-Q7Aa_>FxGC?VDYrl7?g%#}ZP!)!?IAnwopHPS=}#9=_X&HNZE@G9fFgI2*g2iA zV|Kn!4^8Ya$pXH^))sYqlS8f_T;?%4>Kpmf>aV#8x{xdRtAP@KEj=-LvPE#QDEC3i$fd zz~`p3D-Wiq>2qQ)-Bz?rcZ_#%7=Of5?uT3>;fdk&{ac1%zkKWd#6*!H(0`D}uFpFk z)vU0C%o=X#;mmMUH!6HNb~Dj0&!ghjHogtZ<_V>OH2GO;HTD%%3T0Zl4GGs)rJ&nn z*iC)|DcyVr3<+#lxf{pY9_%?ZKK>4Qx`;XW<<=@V)bP>SvdtYuB5k*xVez)Bu7ZGb zTpE%jLgKz5vHh#1|9NrDlWaw6UUWE)V1F!c?KUReHLk5#Jj~EEr{e=%?pc9YUuU7p z&u{KJ$6wf!fvmHV_S&-@{q;FTQ}%=32mZ^SOG3(C?gPfoINhgoSMxVy&GQJlRZlZt zj5!v!7UPHm5_a~kamlnW2ecMDwe=+jhY2iCuB7$Wx0WvexlK?pO;!{RYrTzPk-5Xj z`UO(z3oFyju_*--^i|`~!sQv%-722UfU(V5Ppm@YSV5NyBX!o%SsSi1!$i>lyV3PV zk>!fTHvOBq#U$FDF5ivi|mNec_3+;&+hF zYYYB~SMn>bO^>3&PcWBTj8kQg1e>cf#pCt>W`-AtDIwx7Uj|+tfAaeO{QPGV2`Ad_ z``&f6s0-@)k=4@2BJBInn^$`+P1QK1=Z$Ob20c#AaIWYv&fn3+#f$Rt@ICdHRS?n~ z<8VZlbpmi=UUX^0^5ISVrxM>2T9X~WUFmqmnqEHI8mux~8Ha)iL6V9YmGiJ^*v>+e z-YKqiMcH9-l{k(s2UMtpT?WNbdfV0|ex7TqZa<$5D0uLvVZZOsC0Y{@!w%aLV@69? z?W=Qnt8HMvW58Je4EX)$`*2}nQB5Pxwv^m3fUWVxd1GwlJT!Vt#8xMq^Xhoie z%VE_%ZHv>n=+K%?wNoH5km|Wpp;s>ZC}f%r0A6-Zc^F*w^_Le}t$8b4F21%jl4mLZ z-$lq(cRP-<8j;J_=m#bprmXj|eZ@)przr2mbr8ra-LAgwl_p2~ zhjQ)W%*;ibyr@`-Z3v?+?YdAgfHnIvb}pW_vpTcdtBK6`eQqpxP&`h_6nipxCe4-kxQ+&z&_M`W+-lMMV7C*;R6vP$F(^Y&D++kmQ>q$bD0x z&nd$2Kb}S4gkGWy?x3hn&%Yl6ua>~|3UL>Hakbhlpzf`9^;-|iF})FMZ$GG7{*7pP1I zKwxmSbE#gBT;}z}DD0^Ckw+JN9T{IY|<2Enozk{=Z~kiSE_bJ&j`8dMdUG@-LN za{Ey3a-n09s|oKo9k;tMeh0YP8bH*qez?~E(X30m=@hMQpHpFLl{=OS_G(-C7iW-b$=#GKcoAWy^CMwiEGFXou@MYrb2+1 zGGDh-`zM{Dki4xL*PN7;D5dQFq`B278>mm&fR<)Dqy12^X8M3+Jb{mHe@wt*jI$Qi zV^z`j_;Ih&u+1VS(+>KG$%kF9DU%&aT}5^6G0$?lSi@YR)hb&--b_^9QQLC6NSYwb zO5o|@5=wt5BlzMB=zLZ2zdHrYz36{@4(mn932GKh>F%qIAG%+q5UmBHE$U`@X}=OY z0=Pul8IK39m&Q@2n)a=M&N=n|{r4oEfV>wM@BQoJ4q)1cI=gIZfGLskVjb0}CNg)& zAX*Ko-Bc`WVV$KmTDT>jlqc|si&kg9W<457=zGLCFeSl&9UwKj4klQtSekpRD*Ar& zImnb414pFMSvnM`)g-SF=d*X&$6&uk0QyrX1M}YKy|s+1=4Hu0pPh%k``7Tlwy{g~}A{_usJC`mq8 zokigktP`W7V}fPeSzBQlX_(oOy7=C+^aCe*hFNVQPyvA%+$)vk`PtuYmwv(9GS#Ry zs$@uae+zW}ebwop|8*jLIo8Jdzf7b>H7do`fedg#7*M4IsPTHLF_%EUFjD5Oe0hp@ z4-%mQ;>gSU!Ns%n>%U-1rOdHIzCaBtRb^N>k$G1bVZUg$(daRbQq!lB=Nm*ER9B}Q zU~o7tw*lIlQb1Xg)%lus!tW_yc^(qdhC|;5$?-L6WF;i}IY`3( zuZ{w=xOykVyLDS}v~SLv9*(_Q{+Pk9?7q+rY%<*UvNapItZhh=NK0E(g{zR_!9GiM zdr13@tYO}Je6e{U_hsz7f22?%t&WRyS)MICLdR1V$EK2mA$BwirK{p|%7aC5qD=!v zTBWdRls!8TK5}yr(oAi`w0)rI5zcXU#AWEuEKg3zyaV-AeEYj;r~M21ai$Bx8V*Zu ziAHlh`U}>TIyjiSN@iqtz<3j8m(9v8xHTyR&_ZkUP~3qvnE1MmIW#RFdU{Ndb;|*j zg<^$y-X+)k8e={o37!OG^+6~vmcxYHLgq_b1C*i~g+8)GXFbgyIV^4PREn0Kc0A^z z1!~@nW36ieB!6t<-)(aE0q%YJzcamal{IvZ!Q<;=aq({}+Wi%45oJ_HP3=rc1)4{T zoz*@)*A{M@StSqNuZ3&CsWqW^^(zItxYuDzhUNsATuL<&%E_rAMDA&4iZ4VS^Z@EA z_g_DsPCa8q*&r~Nn{aU|v-N%0;W_<1?bX(SKzvCv-wF47)AnhhMkNVKN2=SMRI(py zg=DStR6m)mK1BnvZzXZHK**&2@23CQzouC*X6#edtH1Jg6;)jAwTPK=^oy-&87z}U zVndum3twu8l7>P)s-XD?^(aigCyHnSr# zmIb-h6F>B|Q|Wj(WZXxXW?vC3U!KZ}wMt%@VAYQPL=l01@Z(|lw>E3E*1ggEhuuZX ztdZRoiS6;Sms^@#`89ldZgY(XRV25Qkg3MX%Ic2Uzy2DO{ssn98h#oYTB6sK+lk~( zrlPvhS$9G1Y!zM6(A>@qK1>mxZ8}rWq02!3mLemscaND`Mkw?uA8$=rW9PE_eXmIc zuYp=WF+&37%W#IvMbu3*d$4L5chC>@Tg{_yl0(|FOeK_>~}Yrh)Q8)V*B6l->S)GZm=N{Fa&DF7Cu z698hnR288khjaD&2Ceru*YpAnWmk>TTEbGjPRO2lS#K{MT%O1mFB}U2X8{ED~NM zt>zBjVpD4w2w68u-TgD7+hshx8&JJ7m2VP5%3bmOD!m;J$ z)#!kiCPt-8LR(30R1eo|XvX*vdF}o>&IM-D?1A;teOE*3501JAyD#$q`23!E+4i#_ zUU<_Vqu(M--l?x?93TkVK-5|mHx1R4IYMeIvAKcl0|9q4G*Dku!qAfp^)=%?2F%r{ z_~^XG)gD!TY>jzNo?_@i1~X3cAab?SEFe6^0P6*pizYinvrrvl>W_tZYBZd4WrbEI zfm%hhJDDP?L;)v}RXRy^Sk5cp`@-1@C zI5rit-{`mQ*YvjBL$7v_9TVoQak&wL4Flv%X|i&--UAA@+UGy~{y&@7z-`lxC5G4n zGIIFt!n3FTnwlD$?Ce2YU?Xx(dr!VnCKkJ`@PG})Q&zxot=Bi`7ggz-$1dYU%TTz) zMq*h&dwDy-3@N!(ZHFB!gG>I_;{9&|ecDf^;!JpV=C$W*v}^S?#12;;P5F-8)f?MBC>N2+;z#X~-uqxOK9 zHm0zVYCZW0Z}gX)hbh;>Vux)l5GOj@ol3yV3vSxVDSap6K-`jU{txG*qPcfTA+@!JlUQhyDMYIv&Ftvc7L{4p-u_o7<2UppdQ2NcJ>o zV;E!d+*$4y$@p)t-of7Du?Pe@v?4fqHqzHB06JCXaesw1nlOA6Qi!a^Zf*-~^bpf7fZF#|cCsM)>s4p&6`w-n$oU7~A{83$if@6pCAX zMgUpyw@K8HVV-%pt(>pJ>#&x^V%uzJCfY;+8^d&1E&~mCGRJ+@!F;tju4{NWso`tr zVc-1EpjNZz|NPz4#s&9Rv$T3jmS!D!nX1-BMwkL&pnjMt%awc|FkGe`Ag;V!{H1=j z+5sqXIVqgIOAs)^cDjAdiqO#TkPzwgET5qZW7XW(s90O8Vw-U~{@Opm5qp|XJu z$7~&+#bc79V$&PWgh;V&p+ofKL}$Kp83CdJ(=~mWe#DEFlpnjz zy6O))+o1d8-%SEt?ajhiT5{0F9JWr|Mee1gqW3e*+ii?Hg?yfdn8b|b_y(Hq5 zC_rvthZ}{8`|(FEhKDm>0#iQ_S(162wRAUca7DQkNzN{9AKfgXE)*ReYRXunNrcRH z0&&}xu&`8Kp|q7EAH3|SLr+sOAcitdsC#!Bc#^A%|8 zv+_n-h~?UCotgRc#eMB+<$#z(KlUer{c=A$OIy6D+4dN%^WbBSPzD#l{NwYsP0|Wu zikj-yu6ptTB-#T+{!{aPb3mi4XLbsx-*#a^j}V?Qm!Tw;i@eLm}SHDycG>p<~g0KXY9toP&GF0KT7|q33J# z2q!vT_DH0R7FuYwt)r;3m5Jr$oq8ecL~MwHd|7>5Cbkkg9r@Lyzj`$OkRv4hre3^{ zxGvg-EGZMe#b=hP`9{k|!3M2*Dx3<6ZrUX^(VBf8g~?Eun+|+?76J!Db^3H{ z?p4}gQx?N8>1GekG@d5%|Fwngl!T@W{8r6f!9~ciU(}2Gwe`VVt3KDEU7=p=+t2NHf)u!yn~6g zfGlg&*S{4vcd$1X97CyLqZSk27mvkwQdrHn^l6YAKCs?S z%3IeI9o<>fio&b=d#hwB0NE);etU)OhdDq=f~Yi#{pRbQVbyvZ2_+0DzL~3LT%;DV z#n^Wc{7x*QaOO_DVpTCiUG{8|gIAB}ZHBGBB2D|;YfdBC#3*_;?uu9Ywxgg+YHUA_ z{$u-po*Mn%M%Ddk+5Zc4-JfIsu@?${DRIWu#^v}i<~4S{l{P3$!SiiDQXKh8XIls? z*nSKb`h{k_;)P)9g5aHK$mM2zfy+j=(4H*TxPENMocv&yTlAFK%_61w``u{s)rld! zWa4S*0s39#Uyn@_M~iafsHkNDeF_T@W7EHuA7|i4Y)OcL^TB<+ zVQ5o`DKo-kqj6cu+dDT}Ql%srW^Ge2b2@-pFrCMjsi`@-IYzHOsa?oP0~woN^SSe* z@kbpeEC8F?Z)kRn0&y)|{Odshdgn$Lm5NB`!)H`uz9A}lRd&qa+AV3@12JWuN}9J_ z<8U#w;;!C_@tyFmJ(`r$FV)LTq#V%;?G~rvg@{mT#@8c+Ldcz?0^-;F z`7u|47nz;qzL!!D-4DUX3wvAp+u4%hz2+j0X3@wAV#cdYZ#Ri2w=U%{>)KjHD_=b? z8821abC%uEh5$xl4EhxnY^mV4sbT)Rk;{rE$L*Hr+M9mYNHI{7)-Bf${gR#L*p)T4 zQIj=Z^4?lkBI&D(`Kr)xLQCwRIjYeIG3mI;~ah`OlMjd1AbxHyDY^RQGo5a2!%Y-ZkQ z7fpv1dd&9905$W5RNaFM7l4KIx$KrLJJD;QWw$(xEsGjfVhXDejT!?)AG>17>qXR} z*>V~UO2w<6f0|>qcbX32*f=)MAr<^Y+EL42)17S4(fP#x$B6_PHQw(qjaFX zhmLVVQX9WxK+*P%OP6b4>mU3Vkms@LL0$ zQL-ETWd^O2=lYjtOGZjb@%P#_(g3QGHh?-w`q)}$U(6w$S>_QbIXbh*_FflDBH>86 z1qGOd%-l?6b+O(W6M$Go1XMwO=ffAmVKbM?&+*sKzV%^1ip>M5FqHf?i|h9~oxO7c zP`p*RQwr#PKLBNaYsKl`F4{jnIQQ`5EpI;L2aWFQ%e(HyYZUDn>#@14-Hz5_0h{x; za=y*Bk5~+j9+~B0^yyTsQtp~=E2m}9FcaK5rgw!0}YSnZaA^{en^8Q zUDe`X@-o1k0iBhJeg4C^_YtYGggYfedJfy2n0Hk$b!9l^@$#FNM)T3y93<9PL!)EE zXPH~DW^zaZJm4YyTCvs|Ov^}aWIqj4x3^dO#9#d+N?%X?LY{62g2j4qsL7O1T(y?x z

bH=^;`?@Wg`O)Oc>SY3y>}A~}~m1=h#YT0phJ$Nq%RK1Wv>lBON}c!~3wAD&aH zYX4x_Uz!w?>z0%0IelXNQeoaqQ`_6W6VQoS2{vOJXiKfSZ0Iz6kM4_H)}C8YzdD2i ztWOK57rZYtIq4y${jW37Z=BIC_#v3oIdSP4?W$n@h^v~9t}-NcR9limaY+C!y3dN+ zP&lyIWmJI6U+kh^-3|L~wsafsuO#FVrpjruw}_-N^Wkph?F-2AEz!%!oJ+u>Xdzk0 zV_D4#fk>x1^)^QsvrRO>;qDH?_krji{vCVrPv@_@zxTRH3MicN68*Mw~p{O84LQ^^kWfTiV zK)}!mnn(x<1PM(*K8}fJgfN$J*THI*`V#88c*R8tx#cfSQUHG1De*w39QFImN!PIUv&f`9t_{_cqXDy$;} z0k_8ik;X_@Z$QKwm!CD67juy>c2kF(9#a~a`%uPg*DR=K% zUz4jzB=569`T!8%YG@w`j`4roOR;$uhemekDX6W4KWAoq*219(Z6SGAKm1T*^X1=~ z-UEY3y*uP%Cj6%J_QM!h+rf?+yg;BqTdwv_ekUCLdGXFiCaWy_Y&WHkT~3 zcmCETTX$++nY~-K1>9Ke3r?8W6=$S{7$>7GEpKcHH<-dinh)T}M7J~|3E)$by!CHp z{##Kj!=7(ojk|V)&b(zx2QRMO?oia9m*t=o^qVttqMuU3@nGl|JPH)i_gkVD(H6dChdH#=UGuf%#OD7|Y$2W12W?b`I0 zA-NI?@Z0xm3J(Pe=yzIYy=?9Z;oEb-;Y5p*nbJHK0N4(k(K7*SO)eG7k{$ zv5oY@fE99D_#-EPtk2!4u3&zQRAcWp%S%eIPgtW#!=|IgQJ{)Yfa1eWsYJuw^9;V< zv<;J zaqDOK;D^48tmq5!LtXSQo;=-1jn+2=`_!<#-}nX1&ZJMc`hbH^9vXbVGFi=T*kPAV zzt74@8UD418e%nRFEX3MutuM7GL55m-nyIC(g({DXnSZ+&H(PPpgB_HoU!tD#z|?I z3G50CEa<6TvU+?;TmCgRy18kM+U1^JZTZIs6Z6bf?Ow;i14G|$*VUt@;;zjuKanpD zhH!%hsF6Eaovzw)$vRrvas^9##|-Sh>(T$uin_|joQ#6{18pU{ucr%(?VT#1lsCgc zWSatCk>T^;1%;G;mHh6@Z9#gp+|L&x-xMz?5L!L`letS}MhYjeXJ@PRTN$;)H{qyr zMbT|@Uc(lp;+cQCHH9yjvY0yzchj|n#U9dcKcqW+`Odb(xKZ~XwjxF(PurZjI=Q3{ z_`}S&%L-MY-;gQ<^ivBOTH{p2te4(4@l01$K)$3ThztC$H(D$Y0NxB13+TXD+U~!Sjx2MMV;&;veRS}N( znDQh)#h!j+;*s@Vpj`lw%L>@`{3AXUvv4u<*V~kch1uJohB~kFTe6kbUJJ4bRW1fk zS|<&2C09)QEcCI4e=z-?%SE@=SH?>kP=h+V*Jlfl*(+b z)w`DV6Q@T&@$!F2B&G@e)#Ufz2=4;{Kkzc_`6fKSxTRABA|EzOC z{*?g--o=Fti1e8OqGkj{B$*tUkyV!BX6~JD3)4IOh$U$Y2N8&A>@r-U(pIN>21qq( z7Vr>}CO}|+<7Y!+_o>^iH3m7>$ogEzU6*Pjs8UmPV|5lI=0CUd8a)n;Fp zzGSB>b-)6Gj5STSrBfQ^24*v=GY4Z*q}+TjW5kp;0uG_yfcTtW!oRRTYMMI5`uOWsay^l6$~SnJb7Tm#6f zwlBCi6-~{$V-Fj*ua12@{W zm1#XI4-3yz?~DRk9(?SB$@p#-n;I>bkrsH`1X@ubSoUN)UjXPXx4 zZ`a78;#6U3qers&j!S>~@?8r@h4VlEsGXCOrngsG+E#gOQ<`WiXqiv;>V7y=o<^f- zVh%eb%iqQ>bczxZH5DA2WxL#y@Ob>Xd}WjAgX~-tI`!0fp)2M^>?Prxttc3K`OIZ< z=c1H(5}<2E>J5CmF?@No;|%m$PriS%#Ksbw9s1j9veKwqJSW=-o%_sh^VOFa##T!jHl31xzV+jxo|d#v5f1|s>zCpILI1X= zGbgp0l2c8H>B}J@$EVvJO}RCnszT|!E?8PtOH})LlVWISYW_-6!Lz2us`dXOp=hoP z5!@a6;yNxdq?|pL7B!6%r%RkY%V&#v`@LoVs%dSkMvuO{HT#Z%JDyxKYkTB~BC1My z96Q-0yX!ePc41%ULg*B29Kl|-vo)PyFR+Y(l=@g-A*z+lE9de#hh$rkyur7xBhp5t zRqE^;x|f>fYWPP9cd)l}Rh!s#&CBMyR5gxBNy@RNf(=(CWP>MU_src_kA^L}sw)1B z)Wf^TvC}n4<$QQo*F0uW^*%FIQ^P-H1~<0;Y4P&F+JWaNSGoIj%ZGg3l~T@b${+#x z&FO&?^A#Ali{UZ|b2w$>z{RENJ)M&Aj-RI~4u~2%!=8K==rezKy>y@fMyCfROtJ4* zZot8z>g~TUI*bYrbd8PCSfAQ2UFSf z&9_NUl|E62RzJCW38_>3X0AfA3SNhXylYl8Kl{jTMEL1;_p|M1jb0u8bsz1d69j!jG#TR>NXermVs+6>s>& zdAI-h@%&V6U#mRBq@ z(+fMvVsi{YMc|Odx}mI+41a4pUNiT6dBCz+h~~o2{w>>fs{J5zj6+^as~hhK22aT| zoY~HSA}?~v%nhs(0v(uOZ)|vhMhxuHfSF4XJCAhs?C4duDL1^w1A~S+cSN6o!A7J8 zrnJu{s{V@{;+>g&0;5|OqD`O82KX?das^V23C1UKlhK<5LOis?%{<}DmTL5+sN2k1 zp-W$xhgDh^_JX}-RyjW-41s>igSN^No~&%@CZS8hbFHtoKsvhqXFCOmRx zy@O)10tsA{!q}4n7V)^_PO|#MfOf^FBFOlR>*8X{_;EOVj=}4;+RnXpuPj?Rvt5bG zQJsa(8rz4A+PK{2t33Wc#^(CAymQRUMd62b{Dal8oD}hO_U>dqfcILv`s!WSk<26O zo<=SH`-%It(?5D%KP$GTJO#ZuAJRC-DKb=m=^o2{(}(;VS?^L#!696AP#g)*uI@YJ zM%U!CxrroPTVQt*kg@R3jF2B_i&KP~D5IoM8{4U5JLYj399*#8`>8^p$#y8J$}&I2 zpA!((iSkw7~#(1?z|kMCd$Iukk{R zT0U%(UUbpr}*=#xJ0hS$tSv~rqapCX!0bYZ@n>Qzmb4| zMR$ZV9Sd!gJY;!X?mf7vwgk2SH(IIkN zT_wE-iFbT69G^_~lD=9!h|lyp_eSJ&1Dr2FEDz+v5r|7}4&eGFe(t|FiOL#Y6P(LM zuNrtSyN~65rUxqh*!I9Q<>wlhv#n<$jqXPXRO~CYRFD|HOx)e148@uCKwS*29NL{h zT?-Y}BCISBml)LCrG3Z3byG-1wjyVeiMvjCyq${=ak#<9E_wBzdgWig>F^YO=vWn5 zm(YoD_V3SloT1`kB7EM6VPzgHKJV;0ol)HuYqmue4m5y>YqX>3Vka0P^01XYHdA-lt7O$MW`>o=PbbK-b2aABb7SLNN2_!m(@syvBbR2QWR=VgmDbTl zBd*#Vx74h4Eh0rmRTlaLcex>uqGr*Z;Bt#1?{qEnL`t0y&V=?El52v+1nR9UVTxM& zYeIh8BX;cr-`+(_K@I52o+L5HNvp~;WUMM%UI&6a?U!;$A!FXzYl=k=lx-KtjEw4U z@k3E6sh=Lu(5nO?C4YJ)Pj+4|#%d0$!5Z^cBTchnT6W&gTEX0ty83lo30x2e)ECB&QhSk$2d zm+}eg zK)j#4=4oZ+TSmWJ%7(Bq7)?L)%^d%GFLU$Ivw+3;y9zsBBdh09o_BlAYD>T2`_=H# z_XhFtEr@(2FpoT-w?91;>T^k^7Fo_D@Xz5XC>10~E=!wYpOLF3HpbE9oIk2n=cA<6 z?iFMXzg&`HVmkBV;(94ss&w{NrE@wUX5Q5=l@V|;)B1kBTYra}vUTz$!!*`uA3KUz zW*$@$9+clc;Y22v!iThAP(o%5Xdv_3s>3ieEZhbDczM+quLCO{E+{~6L&BKZOL1N` zu9kbVLW>+9#5B6PMr~_~V$-kaS2JWzK zWc5_O1O5N#_BCzeoHPv@GMRT&DA%XkW)2;I3GK@4vMvSU{3>RV zPA4TWiR{J0*BRipS>LqN09sMI0>gm82|y6gH zzQ&VE<0H(%fgA$|LcAYG%5^%{Z~*S_gI6fKI{s;bxs(C*iek=MR%%ruzlv2)>2>l} zJH}V+D@1IGf!+GwoJS#9Xx*Chsd23w8#Bt@MmLUl4db9ud|128k_x;Xn0lB&fUksK z(;ECfef^s12lCrJAKnB#V=cQjp*-luP=)}J(_wW2i(SyQ@}=3<6Kp& zO+>K*X>sPHDydB@zon%{N5lr@PNX2z6L@maOj z3QqEa7cIr6cOya7(}0sb$7+5O7oLqgFITFgf3iB;0l9;a4*W*Q;Ig|~?*|0ysfO39 ztbQ(ox{=B_p0s?hRdG48X>4W@1bnnKjivBFs*5~Ri2K)&r~mImzPe?ZvuRX>)ZhsS zh2uDXRKC^A$vl>Y)MjemtymZ!WYcBfNcgqkyy?2ktA+;(rt1o&T~<$VIGJhg zJRGzRE--*=wbQ^Pz^4#Re0!f!-x%|Zr=*miEixEA#xx18P^Fa6r2L|F>3&feWX(`4 z4AvG&p&4sD(<^_;%J4HUN5%GZ()EAh&R<*eMpBWQcy3E?r&>)gkSZj3a%`q&*00uV zu|VeIY><$=`S=aC6W3Ofc|8iApLDe*P`8a-b9eF&%0*oM582d8Dh$lf?wH3i43D#k zXYuNhKt}R^(pCRsiAzYr)Nh%CaqV*&p>dZGMWvlN`Az};e$jL5h9H1aIg&h75D4-G zw|-jZoABZWprU6x8k&EO?fn|S5GG{=%104{8k&l9pLZ~a_V}wuBbRfgv0Zx<-?2Nd(VYoEHcw^i&>*ERW0WjjtBNI6vM9 zcx78wZ(FSvxCc(q4+sjdII+lcZc&P(1nI0AANT7Q*Q~h7T^pYp2WW$nt7E6Dd~`8d z8bC@}p|KX6@GGUfBkXs+=k|At$I5h`;A>91|7w@Vi1#(csK$DBl!Gy{w@_;=d%x027eB7LGnxQJEWy`IUcWsR&DhH!$!9p&%`O!#<@D;vGo(9DzP>>Eb-c#HUe^an9IjG}e?Qu~cD zV-UzI`ZJ4D)oZBSNv5OTvh#RrIxc4_A0| zoX6`?M(AXJYY>^@z_1~cGw>DSkO=8R(N&MC%)SY_0T<-d&+pG<`lsjL%0(cThdULu zTNj^49IEYi8h{b;1O8=gZy7hcIN73Q9Np^xYd&z6Yasy+(P;mtH8b-^F6^(hW$N&L z_Nt{{F0z~VTa@ZPfG!2n-%4ZBV8LQ}Wpi9>GC3`y00NnIeBuxSRV`7NEjAhG;Y9G zwM^Z~v6-*BV*Ic85~aTUJ^l75EX>yrK?^q{lr)&vjGgfq$-qiVNc25y=xE^N6rhjJ z{06KjT=6rBUzW4HNx3a59;D{CeF;J)kBfXd5e?G?InGIK!&RlXP78-tFv#_0_e~E8 z&`n*Fey!szus!`e2NH}Kj@j z7$fH^ZtwJe(-K6iDYqA= zlNrnM<;dTd;=j;4@4r10uU#TTyBLR1czp0V1@D_gZj^2B2{2=gS?k>8P-vc@mVop* zcuvd^qwvJ^ff_a|jpnw?qU>{Mm+k~3#lsOCZR>NQ-eQ*%irAsnMxzEAH zU-n99oV_!DO0rcUfNnLsi^|B2F{rkW&hV5jbM4}2ty!mE%3+y3x;LjLr0{US*3gub z1?h4`M^|Xf$n>hfE6`i~0tCwf1A{1}9sJn`16ExJ+;`iV8jQs2xC%gG?y8=A+{m*x z6Z)O64NXYYM$+VBnieMN^(5arc4;pDe~@?L5D>{w~2%7+B3x6>wLA z>$!upoo}fbN$8ast3_<-vwBt?i`bd&N7OX9$fuq4;lH2!@6u2DQDMTWj;HctDY1)) z^Xw25J9I#rBhf_}S^X*N)-f`*eLj`a!Rc{q=8ogtx}0-@&CJC!ZF9=)-OA9?m9%?U zn5d$~97fn>pmoB~aNv&v%c4jTA@!G%(VNa%oU~F^!mW|g2Oe!?d9kRqt9J*2fn|fo zmjaG?_oUZnTgsBxV0z@WQp7knt}x}f6y_3*=^M1l^uy2VpK%D+|Ji9laewWCd!Dx9 z7G;(uJoYXVRcL~hF=6#Km(7f-%Fc+$wsVQR0e%>Q%Duje2!eP?N}`m%PDc~k@y>~8 zhOFkE$aZRHrkQ~0=1Rj-vnk(R`KN#P0G~v$X-T;TgGbKz^<#doHPe(tYa`|DlW`1o zO>(*V8Hb&w6eHq%2-bJLetQ&Z$XM?k(}MUqea?(-g?QnW$P{PC+SU=rDv)PM{6LkK zV4iFn-Po`B`dd%QCa1=8Ix>F8W0%Gg;5c+%$dZ}VDki1B2gvdV7@iZv=25)cQl58Y z6)J{J{ks)cjJ?kz6FiXENob>ntD<%)5YGA?b4 zG8jDrjxa4sd+mV~UIp~W`4<~tMm%+}?EiNX{M8qGdbscO#BuD<=FSHgm$_I?>qdv` zt%;f-&yGePP!U_D#;XnIqVpj%DjjJv0&t~RnSqUpKxrh2U(BRhf~W5*aEJNx91T1` z+;=y@0@cB1e6CY(S$NXW2ft

4U!s!Od3Nl$CBt5T%^Cy-qP_fNr(2KvHch(5(u`KDtEs@drFt@N;<9Gj1=J@+D`Ud$n33oMQnKR7Zu0D9) z9&NSS952X($)2&XG_J@Ve4 zOa<#FO+y2vU_;PEMQ2JWYZ9a>%<=Yoliskum1{6KlR;_Tp}#We^%ZRjySfk@;hHiX>{B# zS(ro8IluF1r3RGf9aix3_4Z++(nglc4jpm|obkW%J73FJM0$y&$~Y+o+vz!Y0T}R zp_R_PyK!-X;Bba{by5&l8i&*{w1^^`*`!2hg7d%0`sQi4+gT#=#A(TheywUvL%*zO zRSezFSgz^bRrS=Yw;l6MFHJ4Q`4_W7)V<$U31aU|AV%D?*DdPQ7a4X7)IAq44TDJ> zPq-=WHMzgEAI0E(9%F|R9!k5XQ^wH{T+w?A!FrNzd&2_?EHTQy5P|U*^Xs9cR1X&6 zWp|6qehe3Q-rx*cDH802($#baTO~yIJ^cvC3C%XD_V9~uf8lF#`D+pX>-)g5DOBmO z(yCAlqb&LBCAdhVr3vhiOSG#B#<5w7kPv$CnIeFjm$L~;jfy>Eu^RJnAmZ*EZt+cd zpi}<=XGLn+Q1C;Qqd68hkEDGCr1Fb#=)u_nM5TEr zrCcXlVn!f*NLskhB8P}0a9-W{Qv*B=Ehz`IrUU%PP z{K2a&Ez%660+(qsCkWOFD8(thU{ra{bNQFrcco6WLd4Mr(4{$0?ySAL0l z{rOAAl0&1Uw}gJyTA$nwK*PU)L>YM9@&yZvki2$;f^wgPLlMg^=1do`QE{Nf24mqV zwIIIBElY}7yOcW$x_{{Y@O~nVk|5K0uEaa*CO!|o8gSrMNsubdjlMg?pg2fc0OTX3 zt?Kb90>SQNgWnDWV3bZKx#`n`FxG*({p$Z-`5 zZ3P%j-(^)-m}wrQa(IhBSKvHFh;Cxw|Dc*iqZY*#kYXn@q|;=k*Ntjlke-(Fmu-kX z_$C4(W2AJ}yCaZKKSM$XcB=h)#EW&=gvK;&+j@x-)VD7gg7xIvrQL1w{?xN2C083^ z<^k2M?@7^FH)YVdud24>KFFrKEx)Qki6x8&5~Z|G<0S0-eqobk6ly)ot%l54d9)?) zjgk+M<95)v4kyost>YGFAl1IjRabF$yA=i$Yn4(fRHypIN`3r|f7x->8g550!6%yV zV1c^^W(fkH!Y}gwub$UE+Z6>ESe${C)qo`id$1?}{k|!UH`lS{ z$MWj|2fw^tt3g$H?|?F|nkid;#(je2`?iTv{xebh0u)?Rc^LPmu;%S}|Gm#F;Z2m@6@~t%` z+hm__&m<)TxG2x|7sQ_Gv9JA@M=aNKyZ?TA#|b+>K9(P?ym|I8>NsOZ-K) zk`zVMaw1L8Q?4yoUA$_Gd&W&wU%C|V4&mzOFk_}jwOBNw*X0~;*N<6N%Lpy!1k8W_ zyj%Kl2cW^*1ZU?h)&gNsuM0BoB`>Op?FM}*9?bt#=}?A9%R%{Xrw*EL%tx3&-9aK1 z8m~r$w*GJuTx^SO)&8B&lJ`Wv!QZj_+zE83PKtUQxyGD*a=&v_;ipn>+nL<)+}s(& zM1=^GTmippU`{5+-KjZJAYT%oHXiKx?KGf=yzzDHH4&@(i*xXp#a)t(;@&GONhZCT zUsCts`z=N7nM@4{W+9d{i-^+7v07CqlisK-+3qiYq)<3(TV^Qx1jx`F=wi{j?wA>7iDD)?MX6&!n_3NxlW9omsL&(V19Cp>G?$W%6D1^DKO>?fun)V?JLXTInCp$>Sm6yYOUsTo1=OT zKT~aK0|By~M}#s|Rb<13aoR>2fs1lX?W2mB`>UO5J)6U6{AfkIk;VSsj z-4t#5jA0ki3Z++E#6vL()(aLRu{0ho&NB*kz;oU%GWVo+?^G-SB-WJR)gp7_PQpVA7KwcCsFWER- zbF9zw&Sd&Tu3rf9qx46fga)r+#GM#9xt9A?Lh*C&(9fmpo5M#O%ym|k+%QS$WgBr1 zr#bYn>!DR}h#nkZ*%i^+oybh{ITphLuDkRt!pMHo~dFLR7YCIfCB2CI~(ZGfV zR=(JI)Vi)t%#S|>IG4QJZbqOeJ@{aG&M*X7YyOz6IN(vG*h{{*LWv)zg!|o(i)F3+ Rw)bMfzs=jfi~7G0{2vl8I{yFw literal 0 HcmV?d00001 diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/frontmatter.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/frontmatter.typ new file mode 100644 index 0000000000..a9b3a0144e --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/frontmatter.typ @@ -0,0 +1,91 @@ +#import "pages/title.typ": title-page +#import "pages/abstract.typ": abstract-page +#import "pages/acknowledgements.typ": acknowledgements-page +#import "pages/originality.typ": declaration-of-originality-page + +#let zhaw-cover-page(cover, print-mode: false) = { + if cover == none { + return + } + if cover.override != none { + cover.override + } else { + title-page( + school: cover.school, + institute: cover.institute, + work_type: cover.work-type, + title: cover.title, + authors: cover.authors, + supervisors: cover.supervisors, + co-supervisors: cover.co-supervisors, + industry-partner: cover.industry-partner, + print-mode: print-mode, + ) + } +} + +#let zhaw-abstract-section(abstract, cover) = { + if abstract == none { + return + } + if abstract.override != none { + abstract.override + } else { + if cover == none { + panic( + "`cover` metadata is required when the abstract section is included. Set `abstract: none` to omit the section, or provide a `cover` dictionary.", + ) + } + if abstract.de == none { + panic("ZHAW requires a German abstract even for English works.") + } + abstract-page( + en: abstract.en, + de: abstract.de, + keywords: abstract.keywords, + authors: cover.authors, + title: cover.title, + ) + } +} + +#let zhaw-acknowledgements-section(acknowledgements, cover) = { + if acknowledgements == none { + return + } + if acknowledgements.override != none { + acknowledgements.override + } else { + if cover == none { + panic( + "`cover` metadata is required when the acknowledgements section is included. Set `acknowledgements: none` to omit the section, or provide a `cover` dictionary.", + ) + } + acknowledgements-page( + acknowledgements: acknowledgements.text, + supervisors: cover.supervisors, + co-supervisors: cover.co-supervisors, + authors: cover.authors, + ) + } +} + +#let zhaw-declaration-section(declaration-of-originality, cover) = { + if declaration-of-originality == none { + return + } + if declaration-of-originality.override != none { + declaration-of-originality.override + } else { + if cover == none { + panic( + "`cover` metadata is required when the declaration of originality section is included. Set `declaration-of-originality: none` to omit the section, or provide a `cover` dictionary.", + ) + } + declaration-of-originality-page( + declaration_of_originality: declaration-of-originality.text, + location: declaration-of-originality.location, + authors: cover.authors, + ) + } +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/pages/abstract.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/pages/abstract.typ new file mode 100644 index 0000000000..c467ef7df1 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/pages/abstract.typ @@ -0,0 +1,50 @@ +#import "../utils.typ": centered, ensure-array, today +#import "@preview/tieflang:0.1.0": pop-lang, push-lang, tr + +#let render-abstract(lang-code, abstract-text, keywords, authors, title) = context { + push-lang(lang-code) + + show: doc => centered(tr().abstract, doc) + show grid.cell.where(x: 0): set text(weight: "bold") + + let authors = ensure-array(authors) + let keywords = ensure-array(keywords) + + grid( + columns: (2cm, 1fr), + column-gutter: 0.4cm, + row-gutter: 0.3cm, + tr().title, title, + (tr().author)(authors.len()), authors.join(", "), + tr().date, today(), + tr().institution, tr().institution_name, + ) + + v(0.5cm) + abstract-text + v(0.5cm) + + grid( + columns: (auto, 1fr), + column-gutter: 0.4cm, + row-gutter: 0.3cm, + tr().keywords, keywords.join(", "), + ) + + pop-lang() +} + +#let abstract-page( + en: none, + de: none, + keywords: none, + authors: none, + title: none, +) = { + if en != none { + render-abstract("en", en, keywords, authors, title) + } + if de != none { + render-abstract("de", de, keywords, authors, title) + } +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/pages/acknowledgements.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/pages/acknowledgements.typ new file mode 100644 index 0000000000..1742b211d9 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/pages/acknowledgements.typ @@ -0,0 +1,26 @@ +#import "../utils.typ": centered, ensure-array, flatten-supervisor-names +#import "@preview/tieflang:0.1.0": tr + +#let acknowledgements-page( + acknowledgements: none, + supervisors: none, + co-supervisors: none, + authors: none, +) = { + let authors = ensure-array(authors) + let supervisors = flatten-supervisor-names(supervisors) + let co-supervisors = ensure-array(co-supervisors) + + let count = supervisors.len() + co-supervisors.len() + let thanked = (supervisors + co-supervisors).join(", ", last: " " + tr().and + " ") + show: doc => centered(tr().acknowledgements.title, doc) + + if acknowledgements != none [ + + #acknowledgements + ] else [ + #let plural = authors.len() > 1 + + #(tr().acknowledgements.text)(plural, count, thanked) + ] +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/pages/originality.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/pages/originality.typ new file mode 100644 index 0000000000..c0c3e5d7f4 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/pages/originality.typ @@ -0,0 +1,43 @@ +#import "../utils.typ": centered, today, ensure-array +#import "@preview/tieflang:0.1.0": tr + +#let declaration-of-originality-page( + declaration_of_originality: none, + location: none, + authors: none, +) = { + show: doc => centered(tr().declaration_of_originality.title, doc) + + let authors = ensure-array(authors) + + if (declaration_of_originality != none) [ + + #declaration_of_originality + ] else [ + #let plural = authors.len() > 1 + + #(tr().declaration_of_originality.text)(plural) + ] + + v(1cm) + + align(left)[ + *#location, #today()* + ] + + v(0.5cm) + + grid( + columns: (auto, 4cm), + column-gutter: 0.4cm, + row-gutter: 1.2cm, + ..for author in authors { + ( + author + ":", + align(bottom, pad(bottom: -0.2cm, box( + line(length: 5cm, stroke: 0.8pt), + ))), + ) + } + ) +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/pages/title.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/pages/title.typ new file mode 100644 index 0000000000..ee5c2fb1fe --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/pages/title.typ @@ -0,0 +1,159 @@ +#import "../utils.typ": * +#import "../styling/tokens.typ": tokens +#import "@preview/tieflang:0.1.0": tr +#import "@preview/biceps:0.0.1": flexwrap + +#let title-page( + school: none, + institute: none, + work_type: none, + title: none, + authors: none, + supervisors: none, + co-supervisors: none, + industry-partner: none, + print-mode: false, +) = { + set page(fill: if (not print-mode) { tokens.colour.main } else { none }, margin: 1cm, background: none) + set par(leading: 0.8em) + set text( + fill: if (not print-mode) { white } else { tokens.colour.main }, + weight: "bold", + font: tokens.font-families.headers, + ) + + let authors = ensure-array(authors) + + // Handle two formats for supervisors: + // 1. String or array of strings: supervisors: ("Name 1", "Name 2") + // 2. Dictionary: supervisors: (main: "Name", secondary: "Name", external: "Name") + let supervisors-dict = none + let supervisors-list = none + + if supervisors != none and type(supervisors) == dictionary { + supervisors-dict = supervisors + } else { + supervisors-list = ensure-array(supervisors) + } + + let co-supervisors = ensure-array(co-supervisors) + + let logo = ( + image(if (print-mode) { "../assets/zhaw_sw_pos.jpg" } else { "../assets/zhaw_logo.png" }), + pad(right: 30%, top: 18pt, text( + size: 18pt, + tr().school_of + " " + school + linebreak() + institute, + )), + ) + + let optical_alignment = 8pt + + let title = align(horizon, block(inset: (left: optical_alignment))[ + #pad(bottom: -1.2em, upper(text(size: 16pt, weight: "regular", font: tokens.font-families.body, work_type))) + #linebreak() + #par(leading: 2em, justify: false, first-line-indent: 0pt, text(size: 32pt, title)) + ]) + + let info() = { + set par(justify: false) + set text(size: 10pt) + + let info-items = ( + block[ + #(tr().author)(authors.len()):\ + #text(font: tokens.font-families.body, weight: "regular", authors.join(linebreak())) + ], + ) + + // Handle simple supervisors format + if supervisors-list != none and supervisors-list.len() > 0 { + info-items.push( + align(start + top)[ + #(tr().supervisor)(supervisors-list.len()):\ + #text(font: tokens.font-families.body, weight: "regular", supervisors-list.join(linebreak())) \ + ], + ) + } + + // Handle dictionary supervisors format + if supervisors-dict != none { + if "main" in supervisors-dict and supervisors-dict.main != none { + let main-list = ensure-array(supervisors-dict.main) + info-items.push( + align(start + top)[ + #(tr().main_supervisor)(main-list.len()):\ + #text(font: tokens.font-families.body, weight: "regular", main-list.join(linebreak())) \ + ], + ) + } + + if "secondary" in supervisors-dict and supervisors-dict.secondary != none { + let secondary-list = ensure-array(supervisors-dict.secondary) + info-items.push( + align(start + top)[ + #(tr().secondary_supervisor)(secondary-list.len()):\ + #text(font: tokens.font-families.body, weight: "regular", secondary-list.join(linebreak())) \ + ], + ) + } + + if "external" in supervisors-dict and supervisors-dict.external != none { + let external-list = ensure-array(supervisors-dict.external) + info-items.push( + align(start + top)[ + #(tr().external_supervisor)(external-list.len()):\ + #text(font: tokens.font-families.body, weight: "regular", external-list.join(linebreak())) \ + ], + ) + } + } + + if co-supervisors.len() > 0 { + info-items.push( + align(start + top)[ + #(tr().co_supervisor)(co-supervisors.len()):\ + #text(font: tokens.font-families.body, weight: "regular", co-supervisors.join(linebreak())) \ + ], + ) + } + + if industry-partner != none { + info-items.push( + align(start + top)[ + #tr().industry_partner:\ + #text(font: tokens.font-families.body, weight: "regular", industry-partner) \ + ], + ) + } + + info-items.push( + align(start + top)[ + #tr().submitted_on:\ + #text(font: tokens.font-families.body, weight: "regular", today()) + ], + ) + + let min-gutter = 1.5cm + + block(inset: (left: optical_alignment))[ + #flexwrap( + main-dir: ltr, + cross-dir: ttb, + main-spacing: min-gutter, + cross-spacing: 1cm, + ..info-items.map(item => block(width: auto, breakable: false, item)), + ) + ] + } + + grid( + columns: (3cm, 1fr), + rows: (3cm, 1fr, auto), + gutter: 0.5cm, + ..logo, + "", + title, + "", + info(), + ) +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/lib.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/lib.typ new file mode 100644 index 0000000000..c0f59b947e --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/lib.typ @@ -0,0 +1,2 @@ +#import "src/gloss.typ": glossary, init-glossary +#import "src/themes.typ": * diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/gloss.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/gloss.typ new file mode 100644 index 0000000000..7b6c47f7a5 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/gloss.typ @@ -0,0 +1,816 @@ +#import "@preview/valkyrie:0.2.2" as z + +#import "./schemas.typ": * +#import "./themes.typ": * +#import "./utils.typ": * + +#let __gloss_entries = state("__gloss_entries", (:)) + +#let __gloss_label_prefix = "__gloss:" +#let __gloss_first_use_counter_postfix = ":first-use-count" +#let __gloss_entry_postfix = ":entry" + +// Normalizes a dictionary entry by ensuring all required and optional keys exist +// with appropriate default values. +// +// Parameters: +// key: The key from the input dictionary +// entry (dictionary): Input dictionary containing at least 'short' and optionally +// 'long', 'plural', 'longplural', 'description', and 'group' +// +// entry (string): If you pass a string to entry, we assume you're using the +// abbreviated syntax `short: "long"`, where the `key` is used +// for `short` and `entry` is used for `long`. +// +// Returns: +// dictionary: Normalized dictionary with all expected keys populated +// +// Panics: +// - If 'short' key is missing when using normal (non-abbreviated) syntax +// - If 'short' value is not a string +// - If 'short' value is an empty string +// +#let __normalize_entry(key, entry) = { + // If it's a string, it's using the abbreviated syntax `short: "long"`. + if (type(entry) == str) { + entry = (short: key, long: entry) + } + + // Validate required fields + if not "short" in entry { + panic("Entry must contain a 'short' key") + } + if type(entry.short) != str { + panic("Entry 'short' must be a string") + } + if entry.short.trim() == "" { + panic("Entry 'short' cannot be empty") + } + + // Extract values with defaults, using consistent none for missing optionals + let long = entry.at("long", default: none) + + // Return the normalized entry + ( + short: entry.short, + plural: entry.at("plural", default: __pluralize(entry.short)), + article: entry.at("article", default: __determine_article(entry.short)), + long: long, + longplural: entry.at("longplural", default: __pluralize(long)), + longarticle: entry.at("longarticle", default: __determine_article(long)), + description: entry.at("description", default: none), + group: entry.at("group", default: ""), + ) +} + +// Checks if a key exists in the glossary state. +// +// Parameters: +// key (string): The key to look up in the glossary entries +// +// Returns: +// boolean: True if the key exists in the glossary, false otherwise +// +#let __has_entry(key) = { + key in __gloss_entries.final().keys() +} + +// Updates the glossary state by adding or updating an entry. +// +// Parameters: +// key (string): The key under which to store the entry +// entry (dictionary): The normalized glossary entry to store +// +// Returns: +// none: Updates state as a side effect +// +#let __add_entry(key, entry) = { + __gloss_entries.update(state => { + state.insert(key, entry) + state + }) +} + +// Retrieves a glossary entry from the state. +// +// Parameters: +// key (string): The key of the entry to retrieve +// +// Returns: +// dictionary: The glossary entry associated with the key +// +// Panics: +// - If the key does not exist in the glossary +// +#let __get_entry(key) = { + let entries = __gloss_entries.final() + if key not in entries.keys() { + panic("Glossary error: Missing key '" + key + "'") + } + + entries.at(key) +} + +// Creates a label object for term usage in documents. +// +// Parameters: +// key (string): The glossary entry key +// +// Returns: +// label: A Typst label object for the term usage +// +#let __term_label(key) = { + label(__gloss_label_prefix + key) +} + +// Creates a label object for the entry in the glossary. +// +// Parameters: +// key (string): The glossary entry key +// +// Returns: +// label: A Typst label object for the term usage +// +#let __entry_label(key) = { + label(__gloss_label_prefix + key + __gloss_entry_postfix) +} + +// Updates the term usage (first use counter & wants to be referenced counter) +// in the glossary state. +// +// Parameters: +// key (string): The glossary entry key +// +// Returns: +// none: Updates state as a side effect +// +#let __mark_term_used(key, count-as-referenced, count-as-first-use) = { + if count-as-referenced { + counter(__gloss_label_prefix + key).step() + } + if count-as-first-use { + counter( + __gloss_label_prefix + key + __gloss_first_use_counter_postfix, + ).step() + } +} + +// Queries whether the term wants to be referenced from ANYWHERE +// +// Parameters: +// key (string): The glossary entry key +// location (location): The location in the document. Use none for end of document +// +// Returns: +// boolean: If the entry is used above the location in the document +// +#let __is_term_ever_referenced(key, location: none) = { + let c = counter(__gloss_label_prefix + key) + c = if location == none { c.final() } else { c.at(location) } + c.at(0) > 0 +} + +// Queries whether the term has been "first used" +// +// "First used" is used to determine how to display the term, either "long +// (short)" or just "(short)" +// +// Parameters: +// key (string): The glossary entry key +// location (location): The location in the document. Use none for end of document +// +// Returns: +// boolean: If the entry is used above the location in the document +// +#let __is_term_first_used(key, location: none) = { + let c = counter( + __gloss_label_prefix + key + __gloss_first_use_counter_postfix, + ) + c = if location == none { c.final() } else { c.at(location) } + c.at(0) > 0 +} + +// Reset the first use counter to 0 +// +// Parameters: +// key (string): The glossary entry key +// +// Returns: +// none: Updates state as a side effect +// +#let __reset_term_first_used(key, location: none) = { + counter( + __gloss_label_prefix + key + __gloss_first_use_counter_postfix, + ).update(0) +} + +// Determine if the glossary contains a visible entry +// +// Parameters: +// key (string): The glossary entry key +// +// Returns: +// boolean: If the term is visible in the glossary (and the label is unique) +// +#let __has_glossary_entry(key) = { + query(__entry_label(key)).len() > 0 +} + +// Renders a glossary term with various formatting options. +// +// Parameters: +// key (string): The glossary entry key to render. +// modifiers (array): Array of modifier strings that control term rendering: +// - "cap": Capitalize the first letter of the term. +// - "pl": Use plural form of the term. +// - "both": Show "Long form (short form)". +// - "short": Show only the short form. +// - "long": Show only the long form. +// - "def" or "desc": Show the term's description instead of its name. +// - "a" or "an": Prepend an article, chosen from the entry (short or long form). +// show-term (function): A function that renders the chosen term. +// term-links (boolean): If terms should be clickable links leading to glossary +// +// Behavior: +// - Without modifiers, the first use of a term shows "Long form (short form)", +// subsequent uses show only the short form. +// - Explicit modifiers ("long", "short", "both") override the default behavior. +// - If a requested long form doesn't exist, the logic falls back to the short form. +// - A usage counter tracks how many times a term has been referenced. +// +// Returns: +// content: The fully formatted term, including optional article, capitalization, +// usage tracking metadata, and the chosen form (short, long, or both). +// +#let __gls( + key, + modes-modifiers: array, + format-term: function, + show-term: function, + term-links: true, + display-text: none, +) = { + let possible_modes = ( + "auto", + "both", + "short", + "long", + "supplement", + "description", + "reset", + ) + // --------------------------------------------------------------------------- + // Normalize mode & modifier inputs AND check if the modifiers are valid + // --------------------------------------------------------------------------- + let modes-modifiers = modes-modifiers.map(it => { + if it == "def" or it == "desc" { + return "description" + } else if it == "a" or it == "an" { + return "an" + } else if it == "use" or it == "spend" { + return "use" + } else if it == "nouse" or it == "nospend" { + return "no-use" + } else if it == "noref" or it == "noindex" { + return "noindex" + } else if it in ("both", "short", "long", "reset", "cap", "pl") { + return it + } else if it in ("auto", "description", "supplement") { + panic( + it, + "is a valid mode, but is not used by applying a modifier with this name. Read the documentation.", + ) + } else { + panic(it, "is not a recognized mode or modifier.") + } + }) + if display-text != none and display-text != auto { + // A supplement is provided, thus the mode is "supplement" + modes-modifiers.push("supplement") + } + + // --------------------------------------------------------------------------- + // Determine the requested modes (plural) and the modifier array + // --------------------------------------------------------------------------- + modes-modifiers.push("__MIDDLE_ITEM") // unused modifier + let (requested_modes, modifiers) = modes-modifiers + .sorted(key: it => { + if it in possible_modes { + // It is a 'mode' + return -1 + } else if it == "__MIDDLE_ITEM" { + return 0 + } else { + // It is a 'modifier' + return 1 + } + }) + .split("__MIDDLE_ITEM") + + // --------------------------------------------------------------------------- + // Check for illegal mode and/or modifier combinations + // --------------------------------------------------------------------------- + if requested_modes.len() > 1 { + panic("Cannot mix modes ", requested_modes, ", pick one.") + } + if "description" in requested_modes and modifiers.len() > 0 { + panic("Cannot use mode 'def'/'desc' with other modifiers.") + } + if "reset" in requested_modes and modifiers.len() > 0 { + panic("Cannot use mode 'reset' with other modifiers.") + } + if "an" in modifiers and "pl" in modifiers { + panic("Cannot use 'a'/'an' and 'pl' together.") + } + if "use" in modifiers and "no-use" in modifiers { + panic("Cannot use 'use'/'spend' and 'nouse'/'nospend' together.") + } + + // --------------------------------------------------------------------------- + // Retrieve the glossary entry and its label + // --------------------------------------------------------------------------- + let entry = __get_entry(key) + + // --------------------------------------------------------------------------- + // Determine the requested mode (singular) + // --------------------------------------------------------------------------- + let requested_mode = if requested_modes.len() == 0 { + "auto" + } else { + requested_modes.at(0) + } + + // --------------------------------------------------------------------------- + // If mode is "description", show the entry's description immediately + // --------------------------------------------------------------------------- + if requested_mode == "description" { + if entry.description == none { + panic("Use of 'def'/'desc' requires a description be defined.") + } + return show-term([#entry.description]) + } + // --------------------------------------------------------------------------- + // If mode is "reset", reset the (first) usage counter and return immediately + // --------------------------------------------------------------------------- + if requested_mode == "reset" { + __reset_term_first_used(key) + return + } + + // --------------------------------------------------------------------------- + // Manage term usage counting and determine if it's the first reference + // --------------------------------------------------------------------------- + let is_first_use = not __is_term_first_used(key, location: here()) + let default-count-as-first-use = ( + requested_mode == "auto" or requested_mode == "both" + ) + let force-count-as-first-use = "use" in modifiers + let force-skip-as-first-use = "no-use" in modifiers + let wants_reference = "noindex" not in modifiers + __mark_term_used( + key, + wants_reference, + force-count-as-first-use or (not force-skip-as-first-use and default-count-as-first-use), + ) + + // --------------------------------------------------------------------------- + // Helper Functions + // --------------------------------------------------------------------------- + + // pluralize_term(singular, plural): Returns plural form if "pl" modifier is present and available; + // otherwise returns the singular form. + let pluralize_term = (singular, plural) => { + if "pl" in modifiers and plural != none { + plural + } else { + singular + } + } + + // capitalize_term(article, term): If "cap" is in modifiers, capitalizes the first letter + // of whichever text appears first (the article if present, otherwise the term). + // Returns a tuple (article, term) which may be modified to have uppercase first letters. + let capitalize_term = (article, term) => { + if "cap" not in modifiers { + (article, term) + } else if article == none { + // No article present, so capitalize the term's first letter. + (article, upper(term.first()) + term.slice(1)) + } else { + // Article is present; capitalize its first letter instead. + (upper(article.first()) + article.slice(1), term) + } + } + + // get_article(mode): Returns the appropriate article string based on the mode. + // - If wants_article is false, returns none + // - If mode is "short", return the short article. + // - If mode is "long" or "both", return the long article. + // The calling logic ensures that when mode = "long" or "both", a long form exists. + let get_article = mode => { + let wants_article = "an" in modifiers + if not wants_article { + none + } else if mode == "short" { + entry.article + " " + } else { + // mode == "long" or "both" + entry.longarticle + " " + } + } + + // --------------------------------------------------------------------------- + // Determine desired options based on modifiers and entry.long availability + // --------------------------------------------------------------------------- + // Decide which mode ("short", "long", or "both" or "supplement") to use. + // If the requested mode can't be fulfilled due to no long form, fall back to "short". + // If no explicit mode is given (i.e. we are in 'auto' mode), the default behavior is: + // - On first use and if a long form exists, "both". + // - Otherwise, "short". + if requested_mode == "auto" { + // Set requested_mode to automatically determined mode + requested_mode = if is_first_use { + "both" + } else { + "short" + } + } + + let long_available = entry.long != none + let mode = if ( + (requested_mode == "both" or requested_mode == "long") and not long_available + ) { + // The fall back case, because long form is not available, but it is requested + "short" + } else { + // No fall back needed, the requested mode can be fulfilled + requested_mode + } + + // Pluralize (if requested) + let short-form = pluralize_term(entry.short, entry.plural) + let long-form = pluralize_term(entry.long, entry.longplural) // `none` safe here + + // Apply format-term() to get the term + let formatted-term = if mode == "supplement" { + // Display text was overriden by user, just accept it (string or content) + display-text + } else { + // Normal display (ie no override from user) + format-term(mode, short-form, long-form) + } + if "cap" in modifiers and type(formatted-term) != str { + // This is because we still need to capitalize the term, and we cannot do + // that with content, thus requiring a string here. + // TODO: consider if we want to capitalize *before* this. First intuition is + // "no". + panic("Your custom format-term() function must return a string.") + } + + // Get the article, then capitalize either the article or term (if requested) + let (article, term) = capitalize_term(get_article(mode), formatted-term) + + // --------------------------------------------------------------------------- + // Construct and return the final output + // --------------------------------------------------------------------------- + context { + let linked-term = if term-links and __has_glossary_entry(key) { + link(__entry_label(key), term) + } else { + term + } + // Figure out our label (unless not wanted) + let term-label = if wants_reference { + __term_label(key) + } else { + [] + } + + // Create the output content + [#article#show-term(linked-term)#metadata(term)#term-label] + // |^^^^^|^^^^^^^^^ |^^^^^^^^ |^^^^^^^^^^ + // | | | \_ the label for backlink from + // | | | glossary i.e. <__gloss:key>, etc. + // | | \_ metadata lets us label (ie makes it "labelable") + // | \_ apply user formatting function to the term + // \_art. + } +} + +// Creates page number links back to each usage of a glossary term. +// +// This function generates an array of page numbers, where each number links +// back to a usage of the term in the document. Duplicate page numers are +// removed to avoid redundancy. +// +// Parameters: +// key (string): The glossary entry key +// +// Returns: +// array: Linked page numbers +// +// Example output after a typical .join(", "): +// "1, 3, 5" where each number links to the term usage on that page +// +#let __create_backlinks(key) = { + return query(__term_label(key)) // find all reference + .map(meta => { + // extract location and page number (or symbol) + let loc = meta.location() + let page = numbering( + __default(loc.page-numbering(), "1"), + ..counter(page).at(loc), + ) + (loc, page) + }) + .dedup(key: ((loc, page)) => page) // deduplicate by page + .map(((loc, page)) => link(loc, page)) // create links +} + +// Formats a term string based on the specified mode. +// +// Given mode, long-form, and short-form, this function returns the formatted +// term based on the mode. When mode is ... +// +// - "short" -> returns "short-form" +// - "long" -> returns "long-form" +// - "both" -> returns "short-form (long-form)" +// +// Parameters: +// mode (string): The mode in which to format the term. Possible values are "short", "long", or "both". +// short-form (string): The short form of the term. +// long-form (string): The long form of the term. +// +// Returns: +// string: The formatted term based on the specified mode. +// +#let __default-format-term(mode, short-form, long-form) = { + if mode == "short" { + short-form + } else if mode == "long" { + long-form + } else { + // mode assumed to be "both" + long-form + " (" + short-form + ")" + } +} + +// Styles a term to control its display in a document. +// +// Parameters: +// term-body (content'ish): the unstyled output from __gls() +// +// Returns: +// content: display ready content (assumed based on `term-body`) +// +#let __default-show-term(term-body) = { + // Default: just render it like normal text + term-body +} + +// Initializes the glossary system and sets up term reference handling. +// +// This function is typically used with `#show: init-glossary`. It performs +// three main tasks: +// 1. Validates and loads glossary entries into the state +// 2. Sets up reference handling to intercept and format term usage +// 3. Applies custom term formatting if provided +// +// Parameters: +// entries (dictionary): Dictionary of glossary entries where: +// - keys are term identifiers +// - values are entry dictionaries containing term details +// show-term ((content) => content): Optional function to customize term rendering +// Default: Returns term content unchanged +// term-links (boolean): If terms should be clickable links leading to glossary +// body (content): Document content to process +// +// Returns: +// content: Processed document content with glossary functionality enabled +// +// Panics: +// - If entries parameter is not a dictionary +// +#let init-glossary( + entries, + format-term: __default-format-term, + show-term: __default-show-term, + term-links: false, + body, +) = context { + // Type checking + let checked-entries = (:) + for (key, entry) in entries { + let checked-key = z.parse(key, z.string(), scope: ("dictionary key",)) + let checked-entry = z.parse(entry, dict-schema, scope: ( + "dictionary entry", + )) + checked-entries.insert(checked-key, checked-entry) + } + let checked-format-term = z.parse(format-term, z.function(), scope: ( + "format-term", + )) + let checked-show-term = z.parse(show-term, z.function(), scope: ( + "show-term", + )) + let checked-body = z.parse(body, z.content(), scope: ("body",)) + + // Process and store each glossary entry + for (key, entry) in entries { + __add_entry(key, __normalize_entry(key, entry)) + // Create placeholder labels for autocompletion + [#metadata(key)#label(key)] + } + + // Set up reference handling for glossary terms + show ref: r => { + let (raw_key, ..raw_modifiers) = str(r.target).split(":") + let supplement = r.supplement // used for term display overrides + + // Determine if we need to swap the key and first modifier. + // Conditions for swapping: + // - The original key is "a" or "an" (case-insensitive), + // - That "key" does not correspond to an actual entry, + // - There is at least one modifier, + // - The first modifier corresponds to an existing entry key. + let can_swap = ( + (lower(raw_key) == "a" or lower(raw_key) == "an") + and not __has_entry(raw_key) + and raw_modifiers.len() > 0 + and __has_entry(raw_modifiers.first()) + ) + + // If we can swap, use the first modifier as the key and insert "a" as the first modifier. + let (key, modifiers) = if can_swap { + (raw_modifiers.first(), ("a",) + raw_modifiers.slice(1)) + } else { + (raw_key, raw_modifiers) + } + + // Now see if this is an actual glossary term key + if __has_entry(key) { + // Found in dictionary, render via __gls() + __gls( + key, + modes-modifiers: modifiers.map(lower), + format-term: checked-format-term, + show-term: checked-show-term, + term-links: term-links, + display-text: supplement, + ) + } else { + // Not one of ours, so just pass it through + r + } + } + + body +} + +// Renders a complete glossary with customizable formatting and grouping. +// +// The glossary displays all used terms, optionally grouped by category, with page +// references back to term usage. The appearance is controlled by a theme that +// defines how sections, groups, and entries are formatted. +// +// Parameters: +// title (string): Glossary section title (default: "Glossary") +// theme (dictionary): Controls glossary appearance with three functions: +// - section(title, body): Renders the main glossary section +// - title: The glossary title +// - body: Content containing all groups and entries +// - group(name, index, total, body): Renders a group of related terms +// - name: Group name +// - index: Zero-based group index +// - total: Total number of groups +// - body: Content containing the group's entries +// - entry(entry, index, total): Renders a single glossary entry +// - entry: Dictionary containing: +// - short: Short form of term +// - long: Long form of term (optional) +// - description: Term description (optional) +// - label: Term's dictionary label +// - pages: Array of linked page numbers where term appears +// - index: Zero-based entry index within group +// - total: Total entries in group +// groups (array): Optional list of groups to include +// If empty, includes all groups +// +// Returns: +// content: Formatted glossary content +// +// Panics: +// - If a requested group doesn't exist +// +#let glossary( + title: "Glossary", + theme: theme-academic, + sort: true, + ignore-case: false, + groups: (), + show-all: false, +) = context { + // Type checking + let checked-title = z.parse(title, z.content(), scope: ("title",)) + let checked-groups = z.parse(groups, groups-list-schema, scope: ("groups",)) + let checked-ignore-case = z.parse(ignore-case, z.boolean(), scope: ( + "ignore-case", + )) + let checked-theme = z.parse(theme, theme-schema, scope: ("theme",)) + + // Collect and organize entries by group + let output = (:) + let all_entries = __gloss_entries.final() + let all_used = if not show-all { + all_entries.keys().filter(key => __is_term_ever_referenced(key)) + } else { + all_entries.keys() + } + + // Determine which groups to process + let all_groups = all_entries + .values() + .map(e => e.at("group")) + .map(g => { if g == none { "" } else { g } }) + .dedup() + .sorted() + + let target_groups = if checked-groups.len() == 0 { + all_groups + } else { + // Validate requested groups exist + for g in checked-groups { + if g == none { + g = "" + } + if g not in all_groups { + panic("Requested group, '" + g + "', not found.") + } + } + checked-groups + } + + // Process entries group by group + for group in target_groups { + let current_entries = () + + // Collect all used entries for this group + for key in all_used { + let entry = all_entries.at(key) + if entry.at("group") == group { + current_entries.push(( + short: entry.at("short"), + long: entry.at("long"), + description: entry.at("description"), + label: [#metadata(key)#__entry_label(key)], + pages: __create_backlinks(key), + )) + } + } + + // Add non-empty groups to output + if current_entries.len() > 0 { + group = if group == none { "" } else { group } + + // sort entries by case insensitivity if requested + // sort entries by case insensitivity if requested + let sorted_entries = if sort { + current_entries + // 1. create array of tuples with (lower [if ignore-case], entry) + .map(e => { + if ignore-case { (lower(e.short), e) } else { (e.short, e) } + }) + // 2. sort the tuples (by first element then second) + .sorted(key: e => e.first()) // NOTE: sorted() is NOT language-aware + // 3. strip away the tuple's first element, leaving an array of entries + .map(t => t.last()) + } else { + current_entries + } + + // add entries to this group's output map + output.insert(group, sorted_entries) + } + } + + // Render the glossary using the theme + let group_index = 0 + + [ + #metadata("glossary") + #(checked-theme.section)( + title, + for (group, entries) in output { + (checked-theme.group)( + group, + group_index, + output.len(), + for (i, entry) in entries.enumerate() { + (checked-theme.entry)(entry, i, entries.len()) + }, + ) + group_index += 1 + }, + ) + ] +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/schemas.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/schemas.typ new file mode 100644 index 0000000000..366c29aac1 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/schemas.typ @@ -0,0 +1,25 @@ +#import "@preview/valkyrie:0.2.2" as z + +#let dict-schema = z.either( + z.string(), + z.dictionary( + ( + short: z.content(), // this is the only required field + plural: z.content(optional: true), + long: z.content(optional: true), + longplural: z.content(optional: true), + description: z.content(optional: true), + group: z.content(optional: true), + ), + ), +) + +#let theme-schema = z.dictionary( + ( + section: z.function(), + group: z.function(), + entry: z.function(), + ), +) + +#let groups-list-schema = z.array(pre-transform: z.coerce.array) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes.typ new file mode 100644 index 0000000000..dc3f4b855f --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes.typ @@ -0,0 +1,6 @@ +#import "themes/academic.typ": theme-academic +#import "themes/basic.typ": theme-basic +#import "themes/chicago-index.typ": theme-chicago-index +#import "themes/compact.typ": theme-compact +#import "themes/table.typ": theme-table +#import "themes/twocol.typ": theme-twocol diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/academic.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/academic.typ new file mode 100644 index 0000000000..4d97bda7c5 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/academic.typ @@ -0,0 +1,47 @@ +// Inspired by academic textbook glossaries +#let theme-academic = ( + section: (title, body) => { + heading(level: 1, title) + v(1em) + body + }, + group: (name, index, total, body) => { + if name != "" and total > 1 { + v(1.5em) + align(left, text(weight: "bold", size: 1.2em, name)) + v(0.75em) + line(length: 100%, stroke: 0.5pt) + v(0.75em) + } + body + }, + entry: (entry, index, total) => { + let short-display = text(weight: "bold", entry.short) + let long-display = if entry.long == none { + [] + } else { + [. #entry.long] + } + + let description = if entry.description == none { + [] + } else { + [. #entry.description] + } + + block( + below: 1em, + text( + size: 0.95em, + { + grid( + columns: (1fr, auto), + gutter: 0.75em, + [#short-display#long-display#description#entry.label], + text(fill: rgb("#666666"), entry.pages.join(", ")), + ) + }, + ), + ) + }, +) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/basic.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/basic.typ new file mode 100644 index 0000000000..8c6bec26e8 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/basic.typ @@ -0,0 +1,68 @@ +// Theme definition for a basic single-column glossary layout +// +// This theme provides a traditional glossary format with: +// 1. Bold terms +// 2. Indented descriptions +// 3. Simple page references +// 4. Optional group headings +// +#let theme-basic = ( + // Renders the main glossary section as a single column + // Parameters: + // title: The glossary section title + // body: Content containing all groups and entries + section: (title, body) => { + heading(level: 1, title) + body + }, + // Renders a group of related glossary terms + // Parameters: + // name: Group name (empty string for ungrouped terms) + // index: Zero-based group index + // total: Total number of groups + // body: Content containing the group's entries + group: (name, index, total, body) => { + if name != "" and total > 1 { + heading(level: 2, name) + } + body + }, + // Renders a single glossary entry with term, definition, and page references + // Parameters: + // entry: Dictionary containing term data: + // - short: Short form of term + // - long: Long form of term (optional) + // - description: Term description (optional) + // - label: Term's dictionary label + // - pages: Array of linked page numbers where term appears + // index: Zero-based entry index within group + // total: Total entries in group + entry: (entry, index, total) => { + // Format the term parts + let term = text(weight: "bold", entry.short) + let long-form = if entry.long == none { + [] + } else { + [, #entry.long] + } + + // Format the description with proper spacing + let description = if entry.description == none { + [] + } else { + [: #entry.description] + } + + // Create the complete entry with hanging indent + block( + spacing: 0.5em, + pad( + left: 1em, + bottom: 0.5em, + block( + [#term#entry.label#long-form#description #h(1em) (pp. #entry.pages.join(", "))], + ), + ), + ) + }, +) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/chicago-index.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/chicago-index.typ new file mode 100644 index 0000000000..91bb498891 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/chicago-index.typ @@ -0,0 +1,45 @@ +// Inspired by the Chicago Manual of Style's index format +#let theme-chicago-index = ( + section: (title, body) => { + set par(hanging-indent: 1em) + heading(level: 1, smallcaps(title)) + body + }, + group: (name, index, total, body) => { + if name != "" and total > 1 { + v(1em) + text(weight: "medium", style: "italic", name) + v(0.5em) + } + body + }, + entry: (entry, index, total) => { + let short-display = text(weight: "regular", entry.short) + let long-display = if entry.long == none { + [] + } else { + [ — #entry.long] // Using em-dash for Chicago style + } + + let description = if entry.description == none { + [] + } else { + text(style: "italic", [: #entry.description]) + } + + block( + below: 0.65em, + text( + size: 0.9em, + { + grid( + columns: (1fr, auto), + gutter: 1em, + [#short-display#entry.label#long-display#description#entry.label], + [#entry.pages.join(", ")], + ) + }, + ), + ) + }, +) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/compact.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/compact.typ new file mode 100644 index 0000000000..60c185065d --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/compact.typ @@ -0,0 +1,89 @@ +// Theme definition for a compact glossary layout optimized for space efficiency +// +// This theme provides a dense but readable format with: +// 1. Terms and definitions on same line +// 2. Smaller font size +// 3. Minimal vertical spacing +// 4. Left-aligned groups for quick scanning +// 5. Condensed page references +// +#let theme-compact = ( + // Renders the main glossary section with minimal spacing + // Parameters: + // title: The glossary section title + // body: Content containing all groups and entries + section: (title, body) => { + set par(leading: 0.65em) + heading(level: 1, outlined: false, text(weight: "bold", size: 1.1em, title)) + body + }, + // Renders a group of related glossary terms + // Parameters: + // name: Group name (empty string for ungrouped terms) + // index: Zero-based group index + // total: Total number of groups + // body: Content containing the group's entries + group: (name, index, total, body) => { + if name != "" and total > 1 { + block( + spacing: 0.5em, + pad( + top: 0.5em, + text(weight: "bold", size: 0.9em, name), + ), + ) + } + body + }, + // Renders a single glossary entry with term, definition, and page references + // Parameters: + // entry: Dictionary containing term data: + // - short: Short form of term + // - long: Long form of term (optional) + // - description: Term description (optional) + // - label: Term's dictionary label + // - pages: Array of linked page numbers where term appears + // index: Zero-based entry index within group + // total: Total entries in group + entry: (entry, index, total) => { + // Format term components with minimal spacing + let term = text( + size: 0.65em, + weight: "medium", + fill: gray.darken(60%), + entry.short, + ) + + let long-form = if entry.long == none { + [] + } else { + text(size: 0.65em, fill: gray.darken(20%), [ (#entry.long)]) + } + + let description = if entry.description == none { + [] + } else { + text(size: 0.65em, [· #entry.description]) + } + + // Create the complete entry with tight spacing + block( + spacing: 0.4em, + grid( + columns: (auto, 1fr, auto), + align: left + bottom, + gutter: 0.5em, + // Term and description column + box[#term#entry.label#long-form #description], + // Dots.... + repeat(h(0.25em) + text(fill: gray, ".") + h(0.25em)), + // Page references with smaller font + text( + size: 0.6em, + fill: gray.darken(20%), + entry.pages.join(", "), + ), + ), + ) + }, +) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/table.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/table.typ new file mode 100644 index 0000000000..5b32acbdcf --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/table.typ @@ -0,0 +1,36 @@ +// A tabular theme courtesy of [@Fevol](https://github.com/Fevol) +#let theme-table = ( + section: (title, body) => { + heading(level: 1, title) + body + }, + group: (name, index, total, body) => { + if name != "" and total > 1 { + heading(level: 2, name) + } + + table( + columns: 4, + stroke: none, + inset: (x, y) => { + if (x == 0) { + (left: 0pt, rest: 5pt) + } else if (x == 3) { + (right: 0pt, rest: 5pt) + } else { + 5pt + } + }, + table.header([*Abbreviation*], [*Full Name*], [*Description*], [*Pages*]), + ..body, + ) + }, + entry: (entry, index, total) => { + ( + entry.short + entry.label, + entry.long, + entry.description, + entry.pages.join(", "), + ) + }, +) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/twocol.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/twocol.typ new file mode 100644 index 0000000000..947fa2d2ce --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/twocol.typ @@ -0,0 +1,74 @@ +// Theme definition for a two-column glossary layout with hierarchical sections +// +// This theme provides formatting for three levels of glossary content: +// 1. Section: The overall glossary container +// 2. Groups: Optional categorization of related terms +// 3. Entries: Individual glossary terms and their definitions +// +#let theme-twocol = ( + // Renders the main glossary section as a two-column layout + // Parameters: + // title: The glossary section title + // body: Content containing all groups and entries + section: (title, body) => { + set par.line(numbering: none) + heading(level: 1, title) + columns(2, body) + }, + // Renders a group of related glossary terms + // Parameters: + // name: Group name (empty string for ungrouped terms) + // index: Zero-based group index + // total: Total number of groups + // body: Content containing the group's entries + group: (name, index, total, body) => { + if name != "" and total > 1 { + heading(level: 2, name) + } + body + }, + // Renders a single glossary entry with term, definition, and page references + // Parameters: + // entry: Dictionary containing term data: + // - short: Short form of term + // - long: Long form of term (optional) + // - description: Term description (optional) + // - label: Term's dictionary label + // - pages: Array of linked page numbers where term appears + // index: Zero-based entry index within group + // total: Total entries in group + entry: (entry, index, total) => { + // Format the short form and optional long form of the term + let short-display = text(weight: "regular", entry.short) + let long-display = if entry.long == none { + [] + } else { + [#h(0.25em) -- #entry.long] + } + + // Format the optional description + let description = if entry.description == none { + [] + } else { + [: #entry.description] + } + + // Render the complete entry with dotted leader line to page numbers + text( + size: 0.75em, + weight: "light", + grid( + columns: (auto, 1fr, 1em, auto), + align: (left, center, center, right), + [#short-display#entry.label#long-display#description], + // Term with label + [#repeat(h(0.25em) + "." + h(0.25em))], + // Dotted leader line + [ . ], + // A 1em wide dot so we definitely get some break between term and pages + [#entry.pages.join(", ")], + // Page references + ), + ) + }, +) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/utils.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/utils.typ new file mode 100644 index 0000000000..9a6be1b2d1 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/utils.typ @@ -0,0 +1,272 @@ +// Returns the provided value if it is not none, otherwise returns the default value +// Parameters: +// val: The value to check +// default: The fallback value to use if val is none +// Returns: val if not none, otherwise default +#let __default(val, default) = if val == none { default } else { val } + +// Converts an English word to its plural form following standard English pluralization rules +// Parameters: +// word: The singular word to pluralize +// Returns: The pluralized form of the word, or none if input is none +#let __pluralize(word) = { + // Early exit for invalid input + if word == none { + return none + } + + // Helper functions for checking endings + let ends_with = suffix => lower(word).ends-with(suffix) + let ends_with_any = suffixes => suffixes.any(suffix => ends_with(suffix)) + + // Map of irregular plurals for common words + let irregulars = ( + "alumna": "alumnae", + "alumnus": "alumni", + "analysis": "analyses", + "appendix": "appendices", + "basis": "bases", + "cactus": "cacti", + "child": "children", + "crisis": "crises", + "criterion": "criteria", + "datum": "data", + "foot": "feet", + "fungus": "fungi", + "goose": "geese", + "man": "men", + "medium": "media", + "mouse": "mice", + "nucleus": "nuclei", + "oasis": "oases", + "person": "people", + "phenomenon": "phenomena", + "stimulus": "stimuli", + "thesis": "theses", + "tooth": "teeth", + "woman": "women", + ) + + // Set of plural-only words + let plural_only = ( + "advice", + "alumni", + "bison", + "children", + "criteria", + "data", + "deer", + "feet", + "fish", + "geese", + "information", + "media", + "men", + "mice", + "money", + "moose", + "octopi", + "octopodes", + "people", + "scissors", + "series", + "sheep", + "species", + "teeth", + "trousers", + "women", + ) + + // Irregular suffixes + let f_to_ves = ("leaf", "loaf", "calf", "half", "wolf", "thief") + let fe_to_ves = ("wife", "knife", "life") + let o_to_os = ( + "photo", + "piano", + "halo", + "radio", + "video", + "studio", + "solo", + "taco", + "memo", + "zero", + ) + + // Convenience + let w = lower(word) + + // Check for words already plural + if plural_only.contains(w) { + return word + } + + // Check for irregular singulars + if irregulars.keys().contains(w) { + return irregulars.at(w) + } + + // Standard pluralization rules + if ends_with("iz") { + word + "zes" + } else if ends_with_any(("s", "x", "z", "sh", "ch")) { + word + "es" + } else if ends_with("y") { + if not ends_with_any(("ay", "ey", "iy", "oy", "uy")) { + word.slice(0, -1) + "ies" + } else { + word + "s" + } + } else if ends_with("f") { + if f_to_ves.contains(w) { + word.slice(0, -1) + "ves" + } else { + word + "s" + } + } else if ends_with("fe") { + if fe_to_ves.contains(w) { + word.slice(0, -2) + "ves" + } else { + word + "s" + } + } else if ends_with("us") { + word.slice(0, -2) + "i" + } else if ends_with("is") { + word.slice(0, -2) + "es" + } else if ends_with("on") { + word + "s" + } else if ends_with("o") { + if o_to_os.contains(w) { + word + "s" + } else { + word + "es" + } + } else { + word + "s" + } +} + +// Determines the appropriate indefinite article ("a" or "an") for a given English word. +// +// Heuristic rules: +// 1. If word looks like an acronym (all uppercase or letters separated by dots): +// - Use "an" if the first letter's name starts with a vowel sound, e.g. A (ay), E (ee), F (eff), H (aitch), I (eye), L (el), M (em), N (en), O (oh), R (ar), S (ess), X (ex). +// - Otherwise "a". +// +// 2. Otherwise, lowercase the word and apply standard rules: +// - Starts with a vowel (a, e, i, o): "an". +// - Starts with "u": +// * If it begins with "uni", "use", "user", or "eu" (e.g. "university", "use", "Europe"), we treat it as a "yoo" sound -> "a". +// * Otherwise -> "an". +// - Special silent 'h' words: if it starts with "hour", "honest", "honor", "honour", or other, use "an". +// Otherwise if starts with 'h', use "a". +// - Default: "a". +// +// Notes: +// - This is a best-effort heuristic and won't be perfect. +// - These are for singular forms. If plural form is requested alongside +// articles, the caller should panic before calling this function. +// +// Returns: +// "a" or "an" +// +// Example: +// __determine_article("RF") -> "an" (Ar-Ef) +// __determine_article("radio") -> "a" +// __determine_article("hour") -> "an" +// __determine_article("honest") -> "an" +// __determine_article("university") -> "a" +// __determine_article("umbrella") -> "an" +// __determine_article("Europe") -> "a" (because we assume "yoo-ruhp") +#let __determine_article(word) = { + // Check input + if word == none or word.trim() == "" { + // If invalid, default to none + return none + } + + // Normalize the word + let upper_word = word.trim() + let lower_word = lower(upper_word) + + // When these letters are spelled out, they get an "an" (i.e. "an RFC") + let acronym_vowels = ( + "A", // "ay" + "E", // "ee" + "F", // "eff" + "H", // "aitch" + "I", // "eye" + "L", // "el" + "M", // "em" + "N", // "en" + "O", // "oh" + "R", // "ar" + "S", // "ess" + "X", // "ex" + ) + + // Helper to detect if word looks like an acronym + let is_acronym = { + // All uppercase or letters separated by non-alphabetical chars + let cleaned = upper_word.replace(".", "").replace("-", "") + cleaned.codepoints().all(c => c == upper(c)) and cleaned.len() > 0 + } + + if is_acronym { + // Use acronym rules + let first_char = upper_word.codepoints().slice(0, 1).first() + if acronym_vowels.contains(first_char) { + "an" + } else { + "a" + } + } else { + // Non-acronym rules + let first_char = lower_word.codepoints().slice(0, 1).first() + + // Special cases for words matching a set of known 'silent h' prefixes + let silent_h_words = ( + "heir", // "air" + "herb", // "erb" (in American English) + "homage", // "oh-mij" or "ah-mij" + "honest", // "on-est" + "honor", // "on-or" (American English) + "honour", // "on-our" (British English) + "hour", // "our" + ) + if silent_h_words.any(w => lower_word.starts-with(w)) { + return "an" + } + + // Words starting with 'eu', which has the 'yoo' sound + if lower_word.starts-with("eu") { + return "a" + } + + // Words starting with 'u', that get the 'yoo' sound + if first_char == "u" { + let yoo_sounds = ( + "ubi", // ubiquitous + "uni", // unicycle, uniform, universe, university, unilateral, unique, union, etc. + "usa", // usage, usability + "use", // use, useful, useless + "usu", // usual, usually + "usur", // usurp + "ute", // utensil, uterus + "uti", // utility, utilize, utilization + "uto", // utopia, utopian + ) + if yoo_sounds.any(w => lower_word.starts-with(w)) { + return "a" + } + } + + // Vowel start + if "aeiou".contains(first_char) { + return "an" + } + + // the default case, plus 'h' words not in the silent list + "a" + } +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/figures.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/figures.typ new file mode 100644 index 0000000000..6e05c61255 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/figures.typ @@ -0,0 +1,20 @@ +#let figure-styles(doc) = { + let fig_padding = 0.4cm + + show figure: fig => { + v(fig_padding) + fig + } + + show figure.caption: caption => { + set text(style: "italic") + v(fig_padding) + text(style: "normal", weight: "bold", caption.supplement + " " + caption.counter.display() + ": ") + caption.body + v(fig_padding) + } + + // show figure.where(kind: raw): set figure(supplement: [Code Snippet]) + + doc +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/glossary.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/glossary.typ new file mode 100644 index 0000000000..313bd36934 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/glossary.typ @@ -0,0 +1,52 @@ +#import "../patches/glossy/lib.typ": * + +#let glossary-theme = ( + section: (title, body) => { + heading(level: 1, numbering: none)[#title] + body + }, + group: (name, index, total, body) => { + if name != "" and total > 1 { + heading(level: 2, numbering: none)[#name] + } + body + }, + entry: (entry, index, total) => { + let label = text(weight: "bold")[ + #entry.short#entry.label + #if entry.long != none { + " (" + entry.long + ")" + } + ] + let description = entry.description + + block(breakable: false)[ + #grid( + columns: (auto, 1fr, auto), + label, h(1fr), entry.pages.join(", "), + ) + #v(-0.1cm) + #description + #v(0.1cm) + ] + }, +) + +#let styled-glossary = context { + // Glossy creates metadata for each defined term during init-glossary + // Check if any terms are actually used/referenced in the document + let all-metadata = query(metadata) + + // Get all defined term keys from metadata + let term-keys = all-metadata.filter(m => type(m.value) == str).map(m => m.value) + + // Check if any of these terms have been referenced + // Glossy creates labels with "__gloss:" prefix for term references + let has-referenced-terms = term-keys.any(key => { + query(label("__gloss:" + key)).len() > 0 + }) + + if has-referenced-terms { + glossary(theme: glossary-theme) + } +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/math-and-code.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/math-and-code.typ new file mode 100644 index 0000000000..77cf0e7355 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/math-and-code.typ @@ -0,0 +1,16 @@ +#import "@preview/codly:1.3.0": codly, codly-init +#import "@preview/codly-languages:0.1.10": codly-languages + +#let code-styles(doc) = { + show: codly-init + codly( + languages: codly-languages, + fill: rgb("#fafafa"), + ) + + set math.equation(numbering: "(1)") + // show math.equation: set text(font: "Fira Math") + show raw: set text(font: "Fira Code") //Code blocks + + doc +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/page-border.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/page-border.typ new file mode 100644 index 0000000000..9252e511ab --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/page-border.typ @@ -0,0 +1,19 @@ +#import "tokens.typ": tokens + +#let page-border-styles(page-border, doc) = { + let blue-frame = if page-border { + rect( + width: 100%, + height: 100%, + stroke: ( + paint: tokens.colour.main, + thickness: 16pt, + cap: "round", + ), + ) + } else { none } + + set page(paper: "a4", margin: tokens.margin, background: blue-frame) + + doc +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/page-header.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/page-header.typ new file mode 100644 index 0000000000..2ab1fcbc43 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/page-header.typ @@ -0,0 +1,52 @@ +#import "tokens.typ": tokens +#import "@preview/tieflang:0.1.0": tr + +#let page-header-styles(doc) = { + set page( + header-ascent: 30%, + header: context { + let fill-line(left-text, right-text) = { + set par( + first-line-indent: ( + amount: 0em, + ), + ) + + [#left-text #h(1fr) #right-text] + } + + let page-number = here().page() + + // If the current page is the start of a chapter, don't show a header + let target = heading.where(level: 1) + if query(target).any(it => it.location().page() == page-number) { + return [] + } + + // Find the chapter of the section we are currently in. + let before = query(target.before(here())) + if before.len() > 0 { + let current = before.last() + + let chapter-title = current.body + let chapter-number = counter(heading.where(level: 1)).display() + let chapter-number-text = [#tr().chapter #chapter-number] + + if current.numbering != none { + let (left-text, right-text) = if calc.odd(page-number) { + (chapter-number-text, chapter-title) + } else { + (chapter-title, chapter-number-text) + } + // text(weight: "regular", font: tokens.font-families.headers, + fill-line(left-text, right-text) + // ) + v(-tokens.spacing) + line(length: 100%, stroke: 0.5pt) + } + } + }, + ) + + doc +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/table.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/table.typ new file mode 100644 index 0000000000..4942f5c681 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/table.typ @@ -0,0 +1,31 @@ +#import "tokens.typ": tokens + +#let table-styles(doc) = { + show table.cell.where(y: 0): strong + set table( + fill: (_, y) => if y == 0 { tokens.colour.main } else { tokens.colour.lightest }, + stroke: none, + gutter: 0.08cm, + align: horizon + left, + inset: (x: 8pt, y: 10pt), + ) + show table.cell.where(y: 0): c => { + text(fill: white, font: tokens.font-families.headers, size: tokens.font-sizes.body - 1.4pt, c) + } + + show table.cell: c => { + set par(justify: false) + set text(size: tokens.font-sizes.body - 1pt) + c + } + + show table: t => { + block( + clip: true, + radius: tokens.radius, + t, + ) + } + + doc +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/text.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/text.typ new file mode 100644 index 0000000000..4c080e7017 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/text.typ @@ -0,0 +1,115 @@ +#import "tokens.typ": tokens +#import "../utils.typ": show_if_heading_within_distance, v-after-numbered-chapter-heading + +#let text-styles(doc) = { + set par( + spacing: 1.4em, + leading: 0.7em, + justify: true, + linebreaks: "optimized", + ) + + set text( + font: tokens.font-families.body, + size: tokens.font-sizes.body, + ) + + show heading.where(level: 4): set heading(numbering: none) + set heading(numbering: (first, ..nums) => numbering("1.1", first, ..nums)) + + show heading: it => { + set text(font: tokens.font-families.headers, fill: tokens.colour.main, weight: "bold") + let level_based_spacing = if it.level == 2 { 0.4 } else { 1.4 / it.level } + + // Reduce spacing between 2 consecutive headings + show_if_heading_within_distance( + it: it, + distance: 2 * tokens.spacing + 1cm, + look: "before", + to-show: v(-2 * level_based_spacing * tokens.spacing), + ) + + v(tokens.spacing * level_based_spacing) + it + v(tokens.spacing * level_based_spacing - 0.05cm) + } + + show heading.where(level: 1): it => { + set text(font: tokens.font-families.headers) + if it.numbering == none { + pagebreak() + text(fill: tokens.colour.main, size: tokens.font-sizes.h1, it) + v(tokens.spacing) + } else { + set par(justify: false) + let heading_number = counter(heading.where(level: 1)).display() + + context { + // Only add pagebreak if this is not the first numbered chapter + let chapter_num = counter(heading.where(level: 1)).at(here()).first() + // If chapter > 1, always pagebreak + // If chapter = 1, only pagebreak if there's body content before (abstract, acknowledgements) + if chapter_num > 1 { + pagebreak() + } else { + let before_pars = query(selector(par).before(here())) + if before_pars.len() > 0 { + pagebreak() + } + } + } + + grid( + columns: (3cm, 1fr), + rows: auto, + gutter: -0.8cm, + align: top + start, + block(width: 100%, pad(left: -0.5em, text(fill: tokens.colour.main, size: 96pt, heading_number))), + text(fill: tokens.colour.main, size: tokens.font-sizes.h1, it.body), + ) + v-after-numbered-chapter-heading(it) + } + } + + show heading.where(level: 3): set text(size: tokens.font-sizes.h3) + + show heading.where(level: 4): it => { + set text( + font: tokens.font-families.headers, + fill: tokens.colour.main, + weight: "regular", + size: tokens.font-sizes.h4, + ) + it + } + + set quote(block: true) + + show quote: it => { + if it.block { + pad(left: 0.21em, block( + stroke: ( + left: ( + thickness: 2pt, + paint: tokens.colour.main, + cap: "round", + ), + ), + inset: (left: 1em), + { + it.body + + if it.attribution != none { + parbreak() + // h(1fr) + text(fill: tokens.colour.main)[— #it.attribution] + } + }, + )) + } else { + it + } + } + + doc +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/tokens.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/tokens.typ new file mode 100644 index 0000000000..c7fbe85cfb --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/tokens.typ @@ -0,0 +1,21 @@ + +#let tokens = ( + colour: ( + "main": rgb("#0064A6"), + "light": rgb("#8FC8EE"), + "lightest": rgb("#deeef8"), + ), + font-families: ( + body: "Tex Gyre Heros", + headers: "Arial Rounded MT", //Nunito + ), + font-sizes: ( + "h1": 32pt, + "h3": 11pt, + "h4": 11pt, + "body": 11pt, + ), + margin: 2.5cm, + radius: 4pt, + spacing: 0.4cm, +) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/translations.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/translations.typ new file mode 100644 index 0000000000..4d22365df3 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/translations.typ @@ -0,0 +1,144 @@ +#import "@preview/tieflang:0.1.0": configure-translations, pop-lang, push-lang, tr +#import "utils.typ": title-case + +#let translations = ( + de: ( + abstract: [Zusammenfassung], + title: [Titel], + author: count => if count == 1 { [Autor] } else { [Autoren] }, + supervisor: count => if count == 1 { [Betreuer] } else { [Betreuer] }, + co_supervisor: count => if count == 1 { [Mitbetreuer] } else { [Mitbetreuer] }, + main_supervisor: count => if count == 1 { [Hauptbetreuer] } else { [Hauptbetreuer] }, + secondary_supervisor: count => if count == 1 { [Nebenbetreuer] } else { [Nebenbetreuer] }, + external_supervisor: count => if count == 1 { [Externer Betreuer] } else { [Externe Betreuer] }, + industry_partner: [Industriepartner], + acknowledgements: ( + title: [Danksagung], + text: (plural, supervisor-count, supervisors) => context { + let p = (tr().pronoun)(plural) + let verb = if plural { "danken" } else { "danke" } + let possessive = if supervisor-count > 1 { "ihre" } else { "seine/ihre" } + let was = if supervisor-count > 1 { "waren" } else { "war" } + + [#title-case(p) #verb #supervisors herzlich für #possessive Expertise und kontinuierliche Beratung. #title-case(possessive) Führung und Unterstützung #was von unschätzbarem Wert für den erfolgreichen Abschluss dieses Projekts.] + }, + ), + "and": [und], + pronoun: plural => if plural { "wir" } else { "ich" }, + have: plural => if plural { "haben" } else { "habe" }, + be: plural => if plural { "sind" } else { "bin" }, + verb_suffix_first: plural => if plural { "en" } else { "e" }, + declaration_of_originality: ( + title: [Eidesstattliche Erklärung], + text: plural => { + let student = if plural { "die Studierenden" } else { "der/die Studierende" } + let pronoun = if plural { "sie" } else { "er/sie" } + let versichert = if plural { "versichern" } else { "versichert" } + let hat = if plural { "haben" } else { "hat" } + let erklaert = if plural { "erklären" } else { "erklärt" } + + [ + Mit der Abgabe dieser Projektarbeit #versichert #student, dass #pronoun die Arbeit selbständig und ohne fremde Hilfe verfasst #hat. (Bei Gruppenarbeiten gelten die Leistungen der übrigen Gruppenmitglieder nicht als fremde Hilfe.) + + Der/die unterzeichnende Studierende #erklaert, dass alle zitierten Quellen (auch Internetseiten) im Text oder Anhang korrekt nachgewiesen sind, d.h. dass die Projektarbeit keine Plagiate enthält, also keine Teile, die teilweise oder vollständig aus einem fremden Text oder einer fremden Arbeit unter Vorgabe der eigenen Urheberschaft bzw. ohne Quellenangabe übernommen worden sind. + + #context if query(label("appendix:ai")).len() > 0 [ + KI-Systeme wurden im Rahmen dieser Arbeit wie in @appendix:ai angegeben verwendet. + ] + + Bei Verfehlungen aller Art treten die Paragraphen 39 und 40 (Unredlichkeit und Verfahren bei Unredlichkeit) der ZHAW Prüfungsordnung sowie die Bestimmungen der Disziplinarmassnahmen der Hochschulordnung in Kraft. + ] + }, + ), + location: [Ort], + date: [Datum], + institution: [Institution], + institution_name: [ZHAW Zürcher Hochschule für Angewandte Wissenschaften], + keywords: [Schlüsselwörter], + submitted_on: [Eingereicht am], + school_of: [School of], + institute_of: [Institut für], + table_of_contents: [Inhaltsverzeichnis], + glossary: [Glossar], + code_snippet: [Code-Snippet], + chapter: [Kapitel], + appendix: [Anhang], + ), + en: ( + abstract: [Abstract], + title: [Title], + author: count => if count == 1 { [Author] } else { [Authors] }, + supervisor: count => if count == 1 { [Supervisor] } else { [Supervisors] }, + co_supervisor: count => if count == 1 { [Co-supervisor] } else { [Co-supervisors] }, + main_supervisor: count => if count == 1 { [Main supervisor] } else { [Main supervisors] }, + secondary_supervisor: count => if count == 1 { [Secondary supervisor] } else { [Secondary supervisors] }, + external_supervisor: count => if count == 1 { [External supervisor] } else { [External supervisors] }, + industry_partner: [Industry partner], + acknowledgements: ( + title: [Acknowledgements], + text: (plural, supervisor-count, supervisors) => context { + let p = (tr().pronoun)(plural) + let possessive = "their" + let was = if supervisor-count > 1 { "were" } else { "was" } + + [#title-case(p) sincerely thank #supervisors for #possessive expertise and continuous advice. #title-case(possessive) guidance and support #was invaluable to the successful completion of this project.] + }, + ), + "and": [and], + pronoun: plural => if plural { "we" } else { "I" }, + have: plural => if plural { "have" } else { "have" }, + be: plural => if plural { "are" } else { "am" }, + verb_suffix_first: plural => if plural { "" } else { "s" }, + declaration_of_originality: ( + title: [Declaration of Originality], + text: plural => { + let student = if plural { "students" } else { "student" } + let confirm = if plural { "confirm" } else { "confirms" } + let their = "their" + let declare = if plural { "declare" } else { "declares" } + + [ + By submitting this project work, the undersigned #student #confirm that this work is #their own work and was written without the help of a third party. (Group works: the performance of the other group members are not considered as third party). + + The #student #declare that all sources in the text (including Internet pages) and appendices have been correctly disclosed. This means that there has been no plagiarism, i.e. no sections of the project work have been partially or wholly taken from other texts and represented as the student's own work or included without being correctly referenced. + + #context if query(label("appendix:ai")).len() > 0 [ + AI systems were used in the process of this work, as specified in @appendix:ai. + ] + + Any misconduct will be dealt with according to paragraphs 39 and 40 of the General Academic Regulations for Bachelor's and Master's Degree courses at the Zurich University of Applied Sciences (Rahmenprüfungsordnung ZHAW (RPO)) and subject to the provisions for disciplinary action stipulated in the University regulations. + ] + }, + ), + location: [Location], + date: [Date], + institution: [Institution], + institution_name: [ZHAW University of Applied Sciences], + keywords: [Keywords], + submitted_on: [Submitted on], + school_of: [School of], + institute_of: [Institute of], + table_of_contents: [Table of Contents], + glossary: [Glossary], + code_snippet: [Code Snippet], + chapter: [Chapter], + appendix: [Appendix], + ), +) + +#let languages = ( + de: "de", + en: "en", +) + +#let setup-language(lang, doc) = { + configure-translations(translations) + push-lang(lang) + + set text( + lang: lang, + region: if lang == "en" { "gb" } else { "ch" }, + ) + + doc +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/utils.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/utils.typ new file mode 100644 index 0000000000..83fbcb2cd7 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/utils.typ @@ -0,0 +1,176 @@ +#import "styling/tokens.typ": tokens +#import "@preview/datify:1.0.1": * + +// See https://github.com/typst/typst/issues/2953 +#let show_if_heading_within_distance( + it: none, + distance: 1cm, + look: "before", + to-show: v(-1cm), + if-not: false, +) = { + if it == none { + panic("Parameter \"it\" of \"show_if_heading_within_distance\" must be defined.") + } + + // 1. Find neighbouring headings + let sel = selector(heading) + let neighbours = () + + if look == "before" { + neighbours = query(sel.before(here(), inclusive: false)) + } else if look == "after" { + neighbours = query(sel.after(here(), inclusive: false)) + } else { + panic("Parameter \"look\" of \"show_if_heading_within_distance\" must have value \"before\" or \"after\".") + } + + if neighbours.len() > 0 { + // 2. Get the closest heading (last 'before' or first 'after'). + let neighbour = if look == "before" { + neighbours.last() + } else { + neighbours.first() + } + + // 3. Get the absolute positions of the current element and the neighbour. + let iloc = it.location().position() + let nloc = neighbour.location().position() + + // 4. Check if distance is within threshold + if iloc.page == nloc.page and iloc.x == nloc.x { + let vertical-distance = if look == "before" { + iloc.y - nloc.y + } else { + nloc.y - iloc.y + } + + if vertical-distance < distance { + if (if-not) { return none } + return to-show + } + } + } + + if (if-not) { return to-show } + return none +} + +#let v-after-numbered-chapter-heading(it) = context { + if it == none { + panic("Parameter \"it\" of \"v-after-numbered-chapter-heading\" must be defined.") + } + let loc = it.location() + let heads-after = query(selector(heading).after(loc, inclusive: false)) + let pars-after = query(selector(par).after(loc, inclusive: false)) + let next-h = if heads-after.len() > 0 { heads-after.first() } + let next-p = if pars-after.len() > 0 { pars-after.first() } + + if next-h == none { + v(1cm) + } else if next-p == none { + v(0.5cm) + } else { + let h-pos = next-h.location().position() + let p-pos = next-p.location().position() + let heading-first = h-pos.page < p-pos.page or (h-pos.page == p-pos.page and h-pos.y < p-pos.y) + if heading-first { + v(0.5cm) + } else { + v(1cm) + } + } +} + +#let today() = context { + let current-date = datetime.today() + [#custom-date-format(current-date, pattern: "long", lang: text.lang)] +} + +#let ensure-array(unsafe-input) = { + if unsafe-input == none { + () + } else if type(unsafe-input) != array { + (unsafe-input,) + } else { + unsafe-input + } +} + +// Same supervisor shapes as on the title page: plain array, or dict with main / secondary / external (each string or array). +#let flatten-supervisor-names(supervisors) = { + if supervisors == none { + () + } else if type(supervisors) == dictionary { + let names = () + for key in ("main", "secondary", "external") { + if key in supervisors { + let value = supervisors.at(key) + if value != none { + names = names + ensure-array(value) + } + } + } + names + } else { + ensure-array(supervisors) + } +} + +#let centered(title, content) = { + pagebreak() + set align(center + horizon) + set par(first-line-indent: 0cm) + align(start + horizon)[ + #text(font: tokens.font-families.headers, fill: tokens.colour.main, weight: "bold", size: 24pt, title) + #content + ] +} + + +// When `override` is `none`, the whole optional block is omitted (`none`), not replaced by defaults. +// For settings where `none` should mean "fall back to defaults" (e.g. bibliography), use `deep-merge-or-default`. +#let deep-merge(base, override) = { + if override == none { + return none + } + + let result = (:) + + // Copy all keys from base + for (key, value) in base { + result.insert(key, value) + } + + // Apply overrides + for (key, value) in override { + // Skip empty arrays - keep the base value + if type(value) == array and value.len() == 0 { + continue + } + + if key in base and type(value) == dictionary and type(base.at(key)) == dictionary { + result.insert(key, deep-merge(base.at(key), value)) + } else { + result.insert(key, value) + } + } + + result +} + +#let deep-merge-or-default(base, override) = { + let merged = deep-merge(base, override) + if merged == none { + base + } else { + merged + } +} + +#let title-case(string) = { + return str(string).replace( + regex("[A-Za-z]+('[A-Za-z]+)?"), + word => upper(word.text.first()) + lower(word.text.slice(1)), + ) +} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/zhaw-thesis.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/zhaw-thesis.typ new file mode 100644 index 0000000000..4f4f4768e4 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/zhaw-thesis.typ @@ -0,0 +1,183 @@ +#import "utils.typ": deep-merge, deep-merge-or-default +#import "frontmatter.typ": ( + zhaw-abstract-section, zhaw-acknowledgements-section, zhaw-cover-page, zhaw-declaration-section, +) +#import "styling/tokens.typ": tokens +#import "styling/math-and-code.typ": code-styles +#import "styling/glossary.typ": init-glossary, styled-glossary +#import "styling/text.typ": text-styles +#import "styling/figures.typ": figure-styles +#import "styling/table.typ": table-styles +#import "styling/page-header.typ": page-header-styles +#import "styling/page-border.typ": page-border-styles +#import "translations.typ": languages, setup-language +#import "@preview/tieflang:0.1.0": tr + +#let zhaw-thesis( + language: languages.de, + cover: ( + school: none, + institute: none, + work-type: none, + title: none, + authors: none, + supervisors: none, + industry-partner: none, + study-program: none, + override: none, + ), + abstract: ( + keywords: none, + en: none, + de: none, + override: none, + ), + acknowledgements: ( + text: none, + override: none, + ), + declaration-of-originality: ( + location: none, + text: none, + override: none, + ), + glossary-entries: none, + // Default `none` so callers may pass `biblio: none` (same as omitting: IEEE, no .bib file). + biblio: none, + appendix: none, + page-border: true, + hide-frontmatter: false, + print-mode: false, + doc, +) = { + // Apply deep-merge to nested structures with defaults + let cover-defaults = ( + school: none, + institute: none, + work-type: none, + title: none, + authors: none, + supervisors: none, + co-supervisors: none, + industry-partner: none, + study-program: none, + override: none, + ) + let cover = deep-merge(cover-defaults, cover) + + let abstract-defaults = ( + keywords: none, + en: none, + de: none, + override: none, + ) + let abstract = deep-merge(abstract-defaults, abstract) + + let acknowledgements-defaults = ( + text: none, + override: none, + ) + let acknowledgements = deep-merge(acknowledgements-defaults, acknowledgements) + + let declaration-defaults = ( + location: none, + text: none, + override: none, + ) + + let declaration-of-originality = deep-merge(declaration-defaults, declaration-of-originality) + + let biblio-defaults = ( + file: none, + style: "ieee", + ) + let biblio = deep-merge-or-default(biblio-defaults, biblio) + + set enum(numbering: "1.i.1.i.") + + show: setup-language.with(language) + show: doc => { + if glossary-entries != none { + init-glossary(glossary-entries, term-links: true, doc) + } else { + doc + } + } + + show outline.entry.where( + level: 1, + ): it => { + set block(above: 0.5cm) + set text(font: tokens.font-families.headers, weight: "bold") + it + } + show: text-styles + show: page-header-styles + show: figure-styles + show: table-styles + show: code-styles + show ref: set text(fill: tokens.colour.main) + show link: set text(fill: tokens.colour.main) + show: page-border-styles.with(page-border) // Keep after table styles!! + + // context is needed for the tr() calls inside the page functions + context { + if (not hide-frontmatter) { + zhaw-cover-page(cover, print-mode: print-mode) + + set page(numbering: "i") + counter(page).update(1) + + zhaw-abstract-section(abstract, cover) + zhaw-acknowledgements-section(acknowledgements, cover) + zhaw-declaration-section(declaration-of-originality, cover) + + outline(title: tr().table_of_contents, depth: 3) + } + + set page(numbering: "1") + counter(page).update(1) + + doc + + if glossary-entries != none { + styled-glossary + } + + if biblio.file != none { + bibliography( + biblio.file, + style: biblio.style, + ) + } + + if appendix != none { + set heading(numbering: none, supplement: tr().appendix) + counter(heading).update(1) + [ + #heading(level: 1)[#tr().appendix] + ] + + set heading(numbering: "1.1.1") + + appendix + } + } +} + + +#import "@preview/colorful-boxes:1.4.3": * + +#let callout(title, text) = colorbox( + title: title, + color: ( + fill: tokens.colour.lightest, + stroke: tokens.colour.main, + title: tokens.colour.main, + ), + radius: tokens.radius, + width: auto, + inset: 10pt, +)[ + #text +] diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/template/appendix.typ b/packages/preview/modern-zhaw-thesis/0.4.0/template/appendix.typ new file mode 100644 index 0000000000..d7fff876d1 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/template/appendix.typ @@ -0,0 +1,17 @@ +== AI Usage Declaration + +During the preparation of this thesis, AI tools were used for the following purposes: + +#figure( + table( + columns: (auto, auto), + [AI Tool], [Purpose], + [Gemini], [Text summarisation and formulation], + [GitHub Copilot], [Code completion and refactoring suggestions], + [Grammarly], [Grammar and spelling corrections in English text], + [Perplexity], [Literature search assistance], + ), + caption: "AI tools used during thesis preparation", +) + +All AI-generated content was thoroughly reviewed, validated, and modified as necessary. The core ideas, analysis, and conclusions are entirely the work of the authors. diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/template/biblio.bib b/packages/preview/modern-zhaw-thesis/0.4.0/template/biblio.bib new file mode 100644 index 0000000000..dadff0fe7f --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/template/biblio.bib @@ -0,0 +1,46 @@ +// Note: the Typst web app offers auto-sync from Zotero and Mendeley + +@article{chandola_2024, + author = {Chandola, Varun and Banerjee, Arindam and Kumar, Vipin}, + title = {Anomaly Detection: A Survey}, + journal = {ACM Computing Surveys}, + year = {2024}, + volume = {41}, + number = {3}, + pages = {1--58}, + doi = {10.1145/1541880.1541882}, +} + +@inproceedings{breunig2000lof, + author = {Breunig, Markus M. and Kriegel, Hans-Peter and Ng, Raymond T. and Sander, J{\"o}rg}, + title = {LOF: Identifying Density-Based Local Outliers}, + booktitle = {Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data}, + year = {2000}, + pages = {93--104}, + publisher = {ACM}, +} + +@article{liu2008isolation, + author = {Liu, Fei Tony and Ting, Kai Ming and Zhou, Zhi-Hua}, + title = {Isolation Forest}, + journal = {IEEE Transactions on Knowledge and Data Engineering}, + year = {2008}, + volume = {20}, + number = {12}, + pages = {1618--1630}, +} + +@book{goodfellow2016deep, + author = {Goodfellow, Ian and Bengio, Yoshua and Courville, Aaron}, + title = {Deep Learning}, + publisher = {MIT Press}, + year = {2016}, +} + +@inproceedings{garcia2021microservices, + author = {Garcia, Alessandro and others}, + title = {Monitoring and Anomaly Detection in Microservices: A Systematic Literature Review}, + booktitle = {IEEE International Conference on Software Architecture}, + year = {2021}, + pages = {201--212}, +} \ No newline at end of file diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/template/glossary.typ b/packages/preview/modern-zhaw-thesis/0.4.0/template/glossary.typ new file mode 100644 index 0000000000..64d4682e44 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/template/glossary.typ @@ -0,0 +1,48 @@ +#let myGlossary = ( + "deployment": ( + short: "deployment", + description: [The process of making a software system operational in a production environment. In distributed systems, deployment involves orchestrating multiple services, configuring network connections, and ensuring system availability during transitions.], + group: "Terms", + ), + "iot": ( + short: "IoT", + long: "Internet of Things", + description: [A network of physical devices embedded with sensors, software, and connectivity that enables them to collect and exchange data. IoT systems often generate massive amounts of monitoring data that require automated analysis.], + group: "Acronyms", + ), + "ML": ( + short: "ML", + long: "machine learning", + description: [A subset of artificial intelligence focused on building systems that learn from data. ML algorithms identify patterns and make predictions without being explicitly programmed for specific tasks.], + group: "Acronyms", + ), + "API": ( + short: "API", + long: "Application Programming Interface", + description: [A set of protocols and tools for building software applications. APIs define how software components should interact, enabling integration between different systems.], + group: "Acronyms", + ), + "microservice": ( + short: "microservice", + description: [An architectural style that structures an application as a collection of loosely coupled, independently deployable services. Each microservice focuses on a specific business capability and communicates with others through well-defined interfaces.], + group: "Terms", + ), + "ntp": ( + short: "NTP", + long: "Network Time Protocol", + description: [A networking protocol for clock synchronization between computer systems over packet-switched networks. NTP is critical for distributed systems to maintain consistent timestamps across multiple machines.], + group: "Acronyms", + ), + "pca": ( + short: "PCA", + long: "Principal Component Analysis", + description: [A dimensionality reduction technique that transforms high-dimensional data into a lower-dimensional space while preserving as much variance as possible. PCA identifies the principal components that capture the most important patterns in the data.], + group: "Acronyms", + ), + "roc": ( + short: "ROC", + long: "Receiver Operating Characteristic", + description: [A graphical plot that illustrates the diagnostic ability of a binary classifier as its discrimination threshold is varied. The ROC curve plots the true positive rate against the false positive rate at various threshold settings.], + group: "Acronyms", + ), +) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ b/packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ new file mode 100644 index 0000000000..b7916f82e0 --- /dev/null +++ b/packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ @@ -0,0 +1,163 @@ +#import "@preview/modern-zhaw-thesis:0.4.0": * +#import "glossary.typ": myGlossary + +#show: zhaw-thesis.with( + language: languages.en, + cover: ( + school: "Engineering", + institute: "Institute of Computer Science", + work-type: "Bachelor thesis", + title: "ZHAW Thesis Template", + authors: ("Alice Müller", "Bob Schmidt"), + supervisors: ( + main: ("Alice Müller", "Dr. Eve Johnson"), + ), + study-program: "Computer Science B.Sc.", + ), + abstract: ( + keywords: ("template", "typst", "zhaw", "thesis"), + de: "Diese Vorlage dient als Demonstration der Funktionen von Typst und der Struktur einer Abschlussarbeit an der ZHAW. Sie umfasst Beispiele für Querverweise, ein Glossar, ein Literaturverzeichnis, mathematische Gleichungen und Codeausschnitte.", + en: "This template serves as a demonstration of Typst features and the structure of a thesis at ZHAW. It includes examples of cross-references, a glossary, bibliography, mathematical equations, and code snippets.", + ), + declaration-of-originality: ( + location: "Zürich", + ), + glossary-entries: myGlossary, + biblio: ( + file: read("biblio.bib", encoding: none), + style: "ieee", + ), + appendix: [#include "appendix.typ"], +) + +// ---------------------------------- +// Do not forget to IMPORT THE FONTS! Otherwise your document will LOOK WRONG. See: https://typst.app/universe/package/modern-zhaw-thesis +// ---------------------------------- + +// Below you can write your thesis. It's recommended to create separate files for each chapter and include them here using #include "path/to/chapter.typ". + += Introduction + +This document serves as a demo of both Typst features and the template itself. + +== What is Typst? + +#link("https://typst.app/", "Typst") is a modern typesetting system that combines the simplicity of Markdown with the power of LaTeX. It allows you to create beautiful documents with ease, keeping styling separate from content. + +== Is Typst better than Latex? + +That's subjective, but: +- it compiles much faster and provides real-time preview (no compilation delays) +- its syntax is much nicer to write and look at +- it has built-in support for features that require packages in LaTeX (bibliography, cross-references, glossary, code snippets, etc.) +- its web editor works better than Overleaf + += Features showcase + +== Glossary, references and labels + +Here we have a glossary reference: @iot:long. We can also use the acronym form: @iot:short. See the #link("https://typst.app/universe/package/glossy/", "Glossy") documentation for more details. + +Here we refer to a source from our bibliography @garcia2021microservices. The template uses IEEE style by default, but you can change it with the `bibliography-style` option in `zhaw-thesis.with()`. + +We can also refer to equations, such as @eq:weights, and figures, such as @tab:results. + +Finally, here we refer to a section: @intro. + +== Quotes, lists, and footnotes + +#quote(attribution: [Alan Kay, keynote address])[The best way to predict the future is to invent it.] + ++ Plan the structure of each chapter ++ Write and revise the main text + + Draft each section in a separate file and `#include` it from `main.typ` + + Keep figures and tables near their first reference + + Prefer vector graphics (SVG) for diagrams + + Export raster images at sufficient resolution for print ++ Proofread the bibliography and front matter + +Here is a footnote.#footnote[ + Footnote text is set at the bottom of the page; numbering restarts each page by default unless you change `footnote` rules globally. +] + +== Maths + +$ + f(x) & = sigma(W_L sigma(W_(L-1) dots sigma(W_1 x + b_1) dots + b_(L-1)) + b_L) \ + & = (sigma dot W_L dot sigma dot W_(L-1) dot dots dot sigma dot W_1)(x, b_1, dots, b_L) +$ + +The equation above (@eq:weights) shows the forward pass of a neural network with $L$ layers, weights $W_i$, biases $b_i$, and activation function $sigma$. + +Equations can also be inline: $V_k^* (s) = max_a sum_(s') underbrace(P(s' | s, a), "transition proba") lr((underbrace(r_(t+1), "reward s" arrow "s'") + gamma underbrace(V_(k-1)^* (s'), "precalc. val of s'")), size: #40%)$. + +== Figures + +Figures allow to wrap images, tables, code snippets, and more in captions and labels that you can refer to. + +=== Tables + +#figure( + table( + columns: 3, + align: (left, center, right), + [Metric], [Best Value], [Interpretation], + [Precision], [1.0], [All predictions are correct], + [Recall], [1.0], [All targets are found], + [$F_1$ Score], [1.0], [Perfect balance], + [False Positive Rate], [0.0], [No false alarms], + ), + caption: "Table with custom alignment", +) + +#figure( + { + show table.cell.where(y: 5): strong + table( + columns: (2fr, 1fr, 1fr, 1fr, 1fr), + align: (left, center, center, center, center), + [Approach], [Speed], [Beauty], [Ease], [Overall], + [Word], [0.2], [0.3], [0.7], [0.4], + [LaTeX], [0.3], [0.9], [0.3], [0.5], + [Markdown], [0.9], [0.4], [0.9], [0.7], + [Google Docs], [0.7], [0.2], [0.8], [0.6], + [Typst], [0.95], [0.98], [0.92], [0.95], + ) + }, + caption: "Table that spans full width", +) + +=== Code + +@code:detection below shows how code snippets look like. This is handled by the #link("https://typst.app/universe/package/codly/", "Codly") package, which provides many customisation options. + +#figure( + ```python + import numpy as np + from sklearn.preprocessing import StandardScaler + from sklearn.ensemble import IsolationForest + + class Model: + def __init__(self, temp=1): + self.scaler = StandardScaler() + self.excitement = IsolationForest( + temp=temp, + random_state=42 + ) + ```, + caption: "Sample code demonstrating syntax highlighting and professional formatting", +) + +#callout( + "In summary", +)[ + This template showcases: + + + Cross-references to sections, equations, tables, and figures + + Glossary integration with short (@ML:short) and long (@ntp:long) forms + + Bibliography citations @garcia2021microservices + + Mathematical equations with proper labeling + + Code listings with syntax highlighting + + Professional tables and figures + + Block quotes, nested numbered lists, and footnotes +] diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/thumbnail.png b/packages/preview/modern-zhaw-thesis/0.4.0/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..a4484ad457edce0cf69ccf89bf7dab980c07b285 GIT binary patch literal 56361 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"] +license = "MIT-0" +description = "An unofficial template for ZHAW academic works, adapted from the official branding and guidelines." +repository = "https://github.com/stanlrt/typst-zhaw-thesis" +keywords = ["thesis", "ZHAW", "Zürcher Hochschule für Angewandte Wissenschaften", "Zürich", "academic"] +categories = ["thesis", "report", "paper"] +compiler = "0.14.0" +exclude = [ + ".github", + "docs", + "scripts", + "tests", + ".typstignore", + "Justfile", + "showcase.pdf", +] + +[template] +path = "template/" # all files inside will be copied into the user's new project directory +entrypoint = "main.typ" # compilation target +thumbnail = "thumbnail.png" + +# [tool.mytool] +# foo = "bar" From be312de6a51ab243f190a1e661286eb469d01692 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Wed, 22 Apr 2026 16:40:59 +0200 Subject: [PATCH 17/30] feat: remove glossy patch and --- .../modern-zhaw-thesis/0.4.0/CHANGELOG.md | 2 +- .../0.4.0/src/patches/glossy/lib.typ | 2 - .../0.4.0/src/patches/glossy/src/gloss.typ | 816 ------------------ .../0.4.0/src/patches/glossy/src/schemas.typ | 25 - .../0.4.0/src/patches/glossy/src/themes.typ | 6 - .../patches/glossy/src/themes/academic.typ | 47 - .../src/patches/glossy/src/themes/basic.typ | 68 -- .../glossy/src/themes/chicago-index.typ | 45 - .../src/patches/glossy/src/themes/compact.typ | 89 -- .../src/patches/glossy/src/themes/table.typ | 36 - .../src/patches/glossy/src/themes/twocol.typ | 74 -- .../0.4.0/src/patches/glossy/src/utils.typ | 272 ------ .../0.4.0/src/styling/glossary.typ | 2 +- .../0.4.0/template/main.typ | 2 +- 14 files changed, 3 insertions(+), 1483 deletions(-) delete mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/lib.typ delete mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/gloss.typ delete mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/schemas.typ delete mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes.typ delete mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/academic.typ delete mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/basic.typ delete mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/chicago-index.typ delete mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/compact.typ delete mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/table.typ delete mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/twocol.typ delete mode 100644 packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/utils.typ diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md b/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md index c4cbd0efa8..a71f92be86 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md +++ b/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md @@ -2,7 +2,7 @@ ## 0.4.0 -- Replaced custom glossy fork with official 0.9.1 release +- Replaced custom Glossy patch with official 0.9.1 release. Should not be a breaking change. ## 0.3.0 diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/lib.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/lib.typ deleted file mode 100644 index c0f59b947e..0000000000 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/lib.typ +++ /dev/null @@ -1,2 +0,0 @@ -#import "src/gloss.typ": glossary, init-glossary -#import "src/themes.typ": * diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/gloss.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/gloss.typ deleted file mode 100644 index 7b6c47f7a5..0000000000 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/gloss.typ +++ /dev/null @@ -1,816 +0,0 @@ -#import "@preview/valkyrie:0.2.2" as z - -#import "./schemas.typ": * -#import "./themes.typ": * -#import "./utils.typ": * - -#let __gloss_entries = state("__gloss_entries", (:)) - -#let __gloss_label_prefix = "__gloss:" -#let __gloss_first_use_counter_postfix = ":first-use-count" -#let __gloss_entry_postfix = ":entry" - -// Normalizes a dictionary entry by ensuring all required and optional keys exist -// with appropriate default values. -// -// Parameters: -// key: The key from the input dictionary -// entry (dictionary): Input dictionary containing at least 'short' and optionally -// 'long', 'plural', 'longplural', 'description', and 'group' -// -// entry (string): If you pass a string to entry, we assume you're using the -// abbreviated syntax `short: "long"`, where the `key` is used -// for `short` and `entry` is used for `long`. -// -// Returns: -// dictionary: Normalized dictionary with all expected keys populated -// -// Panics: -// - If 'short' key is missing when using normal (non-abbreviated) syntax -// - If 'short' value is not a string -// - If 'short' value is an empty string -// -#let __normalize_entry(key, entry) = { - // If it's a string, it's using the abbreviated syntax `short: "long"`. - if (type(entry) == str) { - entry = (short: key, long: entry) - } - - // Validate required fields - if not "short" in entry { - panic("Entry must contain a 'short' key") - } - if type(entry.short) != str { - panic("Entry 'short' must be a string") - } - if entry.short.trim() == "" { - panic("Entry 'short' cannot be empty") - } - - // Extract values with defaults, using consistent none for missing optionals - let long = entry.at("long", default: none) - - // Return the normalized entry - ( - short: entry.short, - plural: entry.at("plural", default: __pluralize(entry.short)), - article: entry.at("article", default: __determine_article(entry.short)), - long: long, - longplural: entry.at("longplural", default: __pluralize(long)), - longarticle: entry.at("longarticle", default: __determine_article(long)), - description: entry.at("description", default: none), - group: entry.at("group", default: ""), - ) -} - -// Checks if a key exists in the glossary state. -// -// Parameters: -// key (string): The key to look up in the glossary entries -// -// Returns: -// boolean: True if the key exists in the glossary, false otherwise -// -#let __has_entry(key) = { - key in __gloss_entries.final().keys() -} - -// Updates the glossary state by adding or updating an entry. -// -// Parameters: -// key (string): The key under which to store the entry -// entry (dictionary): The normalized glossary entry to store -// -// Returns: -// none: Updates state as a side effect -// -#let __add_entry(key, entry) = { - __gloss_entries.update(state => { - state.insert(key, entry) - state - }) -} - -// Retrieves a glossary entry from the state. -// -// Parameters: -// key (string): The key of the entry to retrieve -// -// Returns: -// dictionary: The glossary entry associated with the key -// -// Panics: -// - If the key does not exist in the glossary -// -#let __get_entry(key) = { - let entries = __gloss_entries.final() - if key not in entries.keys() { - panic("Glossary error: Missing key '" + key + "'") - } - - entries.at(key) -} - -// Creates a label object for term usage in documents. -// -// Parameters: -// key (string): The glossary entry key -// -// Returns: -// label: A Typst label object for the term usage -// -#let __term_label(key) = { - label(__gloss_label_prefix + key) -} - -// Creates a label object for the entry in the glossary. -// -// Parameters: -// key (string): The glossary entry key -// -// Returns: -// label: A Typst label object for the term usage -// -#let __entry_label(key) = { - label(__gloss_label_prefix + key + __gloss_entry_postfix) -} - -// Updates the term usage (first use counter & wants to be referenced counter) -// in the glossary state. -// -// Parameters: -// key (string): The glossary entry key -// -// Returns: -// none: Updates state as a side effect -// -#let __mark_term_used(key, count-as-referenced, count-as-first-use) = { - if count-as-referenced { - counter(__gloss_label_prefix + key).step() - } - if count-as-first-use { - counter( - __gloss_label_prefix + key + __gloss_first_use_counter_postfix, - ).step() - } -} - -// Queries whether the term wants to be referenced from ANYWHERE -// -// Parameters: -// key (string): The glossary entry key -// location (location): The location in the document. Use none for end of document -// -// Returns: -// boolean: If the entry is used above the location in the document -// -#let __is_term_ever_referenced(key, location: none) = { - let c = counter(__gloss_label_prefix + key) - c = if location == none { c.final() } else { c.at(location) } - c.at(0) > 0 -} - -// Queries whether the term has been "first used" -// -// "First used" is used to determine how to display the term, either "long -// (short)" or just "(short)" -// -// Parameters: -// key (string): The glossary entry key -// location (location): The location in the document. Use none for end of document -// -// Returns: -// boolean: If the entry is used above the location in the document -// -#let __is_term_first_used(key, location: none) = { - let c = counter( - __gloss_label_prefix + key + __gloss_first_use_counter_postfix, - ) - c = if location == none { c.final() } else { c.at(location) } - c.at(0) > 0 -} - -// Reset the first use counter to 0 -// -// Parameters: -// key (string): The glossary entry key -// -// Returns: -// none: Updates state as a side effect -// -#let __reset_term_first_used(key, location: none) = { - counter( - __gloss_label_prefix + key + __gloss_first_use_counter_postfix, - ).update(0) -} - -// Determine if the glossary contains a visible entry -// -// Parameters: -// key (string): The glossary entry key -// -// Returns: -// boolean: If the term is visible in the glossary (and the label is unique) -// -#let __has_glossary_entry(key) = { - query(__entry_label(key)).len() > 0 -} - -// Renders a glossary term with various formatting options. -// -// Parameters: -// key (string): The glossary entry key to render. -// modifiers (array): Array of modifier strings that control term rendering: -// - "cap": Capitalize the first letter of the term. -// - "pl": Use plural form of the term. -// - "both": Show "Long form (short form)". -// - "short": Show only the short form. -// - "long": Show only the long form. -// - "def" or "desc": Show the term's description instead of its name. -// - "a" or "an": Prepend an article, chosen from the entry (short or long form). -// show-term (function): A function that renders the chosen term. -// term-links (boolean): If terms should be clickable links leading to glossary -// -// Behavior: -// - Without modifiers, the first use of a term shows "Long form (short form)", -// subsequent uses show only the short form. -// - Explicit modifiers ("long", "short", "both") override the default behavior. -// - If a requested long form doesn't exist, the logic falls back to the short form. -// - A usage counter tracks how many times a term has been referenced. -// -// Returns: -// content: The fully formatted term, including optional article, capitalization, -// usage tracking metadata, and the chosen form (short, long, or both). -// -#let __gls( - key, - modes-modifiers: array, - format-term: function, - show-term: function, - term-links: true, - display-text: none, -) = { - let possible_modes = ( - "auto", - "both", - "short", - "long", - "supplement", - "description", - "reset", - ) - // --------------------------------------------------------------------------- - // Normalize mode & modifier inputs AND check if the modifiers are valid - // --------------------------------------------------------------------------- - let modes-modifiers = modes-modifiers.map(it => { - if it == "def" or it == "desc" { - return "description" - } else if it == "a" or it == "an" { - return "an" - } else if it == "use" or it == "spend" { - return "use" - } else if it == "nouse" or it == "nospend" { - return "no-use" - } else if it == "noref" or it == "noindex" { - return "noindex" - } else if it in ("both", "short", "long", "reset", "cap", "pl") { - return it - } else if it in ("auto", "description", "supplement") { - panic( - it, - "is a valid mode, but is not used by applying a modifier with this name. Read the documentation.", - ) - } else { - panic(it, "is not a recognized mode or modifier.") - } - }) - if display-text != none and display-text != auto { - // A supplement is provided, thus the mode is "supplement" - modes-modifiers.push("supplement") - } - - // --------------------------------------------------------------------------- - // Determine the requested modes (plural) and the modifier array - // --------------------------------------------------------------------------- - modes-modifiers.push("__MIDDLE_ITEM") // unused modifier - let (requested_modes, modifiers) = modes-modifiers - .sorted(key: it => { - if it in possible_modes { - // It is a 'mode' - return -1 - } else if it == "__MIDDLE_ITEM" { - return 0 - } else { - // It is a 'modifier' - return 1 - } - }) - .split("__MIDDLE_ITEM") - - // --------------------------------------------------------------------------- - // Check for illegal mode and/or modifier combinations - // --------------------------------------------------------------------------- - if requested_modes.len() > 1 { - panic("Cannot mix modes ", requested_modes, ", pick one.") - } - if "description" in requested_modes and modifiers.len() > 0 { - panic("Cannot use mode 'def'/'desc' with other modifiers.") - } - if "reset" in requested_modes and modifiers.len() > 0 { - panic("Cannot use mode 'reset' with other modifiers.") - } - if "an" in modifiers and "pl" in modifiers { - panic("Cannot use 'a'/'an' and 'pl' together.") - } - if "use" in modifiers and "no-use" in modifiers { - panic("Cannot use 'use'/'spend' and 'nouse'/'nospend' together.") - } - - // --------------------------------------------------------------------------- - // Retrieve the glossary entry and its label - // --------------------------------------------------------------------------- - let entry = __get_entry(key) - - // --------------------------------------------------------------------------- - // Determine the requested mode (singular) - // --------------------------------------------------------------------------- - let requested_mode = if requested_modes.len() == 0 { - "auto" - } else { - requested_modes.at(0) - } - - // --------------------------------------------------------------------------- - // If mode is "description", show the entry's description immediately - // --------------------------------------------------------------------------- - if requested_mode == "description" { - if entry.description == none { - panic("Use of 'def'/'desc' requires a description be defined.") - } - return show-term([#entry.description]) - } - // --------------------------------------------------------------------------- - // If mode is "reset", reset the (first) usage counter and return immediately - // --------------------------------------------------------------------------- - if requested_mode == "reset" { - __reset_term_first_used(key) - return - } - - // --------------------------------------------------------------------------- - // Manage term usage counting and determine if it's the first reference - // --------------------------------------------------------------------------- - let is_first_use = not __is_term_first_used(key, location: here()) - let default-count-as-first-use = ( - requested_mode == "auto" or requested_mode == "both" - ) - let force-count-as-first-use = "use" in modifiers - let force-skip-as-first-use = "no-use" in modifiers - let wants_reference = "noindex" not in modifiers - __mark_term_used( - key, - wants_reference, - force-count-as-first-use or (not force-skip-as-first-use and default-count-as-first-use), - ) - - // --------------------------------------------------------------------------- - // Helper Functions - // --------------------------------------------------------------------------- - - // pluralize_term(singular, plural): Returns plural form if "pl" modifier is present and available; - // otherwise returns the singular form. - let pluralize_term = (singular, plural) => { - if "pl" in modifiers and plural != none { - plural - } else { - singular - } - } - - // capitalize_term(article, term): If "cap" is in modifiers, capitalizes the first letter - // of whichever text appears first (the article if present, otherwise the term). - // Returns a tuple (article, term) which may be modified to have uppercase first letters. - let capitalize_term = (article, term) => { - if "cap" not in modifiers { - (article, term) - } else if article == none { - // No article present, so capitalize the term's first letter. - (article, upper(term.first()) + term.slice(1)) - } else { - // Article is present; capitalize its first letter instead. - (upper(article.first()) + article.slice(1), term) - } - } - - // get_article(mode): Returns the appropriate article string based on the mode. - // - If wants_article is false, returns none - // - If mode is "short", return the short article. - // - If mode is "long" or "both", return the long article. - // The calling logic ensures that when mode = "long" or "both", a long form exists. - let get_article = mode => { - let wants_article = "an" in modifiers - if not wants_article { - none - } else if mode == "short" { - entry.article + " " - } else { - // mode == "long" or "both" - entry.longarticle + " " - } - } - - // --------------------------------------------------------------------------- - // Determine desired options based on modifiers and entry.long availability - // --------------------------------------------------------------------------- - // Decide which mode ("short", "long", or "both" or "supplement") to use. - // If the requested mode can't be fulfilled due to no long form, fall back to "short". - // If no explicit mode is given (i.e. we are in 'auto' mode), the default behavior is: - // - On first use and if a long form exists, "both". - // - Otherwise, "short". - if requested_mode == "auto" { - // Set requested_mode to automatically determined mode - requested_mode = if is_first_use { - "both" - } else { - "short" - } - } - - let long_available = entry.long != none - let mode = if ( - (requested_mode == "both" or requested_mode == "long") and not long_available - ) { - // The fall back case, because long form is not available, but it is requested - "short" - } else { - // No fall back needed, the requested mode can be fulfilled - requested_mode - } - - // Pluralize (if requested) - let short-form = pluralize_term(entry.short, entry.plural) - let long-form = pluralize_term(entry.long, entry.longplural) // `none` safe here - - // Apply format-term() to get the term - let formatted-term = if mode == "supplement" { - // Display text was overriden by user, just accept it (string or content) - display-text - } else { - // Normal display (ie no override from user) - format-term(mode, short-form, long-form) - } - if "cap" in modifiers and type(formatted-term) != str { - // This is because we still need to capitalize the term, and we cannot do - // that with content, thus requiring a string here. - // TODO: consider if we want to capitalize *before* this. First intuition is - // "no". - panic("Your custom format-term() function must return a string.") - } - - // Get the article, then capitalize either the article or term (if requested) - let (article, term) = capitalize_term(get_article(mode), formatted-term) - - // --------------------------------------------------------------------------- - // Construct and return the final output - // --------------------------------------------------------------------------- - context { - let linked-term = if term-links and __has_glossary_entry(key) { - link(__entry_label(key), term) - } else { - term - } - // Figure out our label (unless not wanted) - let term-label = if wants_reference { - __term_label(key) - } else { - [] - } - - // Create the output content - [#article#show-term(linked-term)#metadata(term)#term-label] - // |^^^^^|^^^^^^^^^ |^^^^^^^^ |^^^^^^^^^^ - // | | | \_ the label for backlink from - // | | | glossary i.e. <__gloss:key>, etc. - // | | \_ metadata lets us label (ie makes it "labelable") - // | \_ apply user formatting function to the term - // \_art. - } -} - -// Creates page number links back to each usage of a glossary term. -// -// This function generates an array of page numbers, where each number links -// back to a usage of the term in the document. Duplicate page numers are -// removed to avoid redundancy. -// -// Parameters: -// key (string): The glossary entry key -// -// Returns: -// array: Linked page numbers -// -// Example output after a typical .join(", "): -// "1, 3, 5" where each number links to the term usage on that page -// -#let __create_backlinks(key) = { - return query(__term_label(key)) // find all reference - .map(meta => { - // extract location and page number (or symbol) - let loc = meta.location() - let page = numbering( - __default(loc.page-numbering(), "1"), - ..counter(page).at(loc), - ) - (loc, page) - }) - .dedup(key: ((loc, page)) => page) // deduplicate by page - .map(((loc, page)) => link(loc, page)) // create links -} - -// Formats a term string based on the specified mode. -// -// Given mode, long-form, and short-form, this function returns the formatted -// term based on the mode. When mode is ... -// -// - "short" -> returns "short-form" -// - "long" -> returns "long-form" -// - "both" -> returns "short-form (long-form)" -// -// Parameters: -// mode (string): The mode in which to format the term. Possible values are "short", "long", or "both". -// short-form (string): The short form of the term. -// long-form (string): The long form of the term. -// -// Returns: -// string: The formatted term based on the specified mode. -// -#let __default-format-term(mode, short-form, long-form) = { - if mode == "short" { - short-form - } else if mode == "long" { - long-form - } else { - // mode assumed to be "both" - long-form + " (" + short-form + ")" - } -} - -// Styles a term to control its display in a document. -// -// Parameters: -// term-body (content'ish): the unstyled output from __gls() -// -// Returns: -// content: display ready content (assumed based on `term-body`) -// -#let __default-show-term(term-body) = { - // Default: just render it like normal text - term-body -} - -// Initializes the glossary system and sets up term reference handling. -// -// This function is typically used with `#show: init-glossary`. It performs -// three main tasks: -// 1. Validates and loads glossary entries into the state -// 2. Sets up reference handling to intercept and format term usage -// 3. Applies custom term formatting if provided -// -// Parameters: -// entries (dictionary): Dictionary of glossary entries where: -// - keys are term identifiers -// - values are entry dictionaries containing term details -// show-term ((content) => content): Optional function to customize term rendering -// Default: Returns term content unchanged -// term-links (boolean): If terms should be clickable links leading to glossary -// body (content): Document content to process -// -// Returns: -// content: Processed document content with glossary functionality enabled -// -// Panics: -// - If entries parameter is not a dictionary -// -#let init-glossary( - entries, - format-term: __default-format-term, - show-term: __default-show-term, - term-links: false, - body, -) = context { - // Type checking - let checked-entries = (:) - for (key, entry) in entries { - let checked-key = z.parse(key, z.string(), scope: ("dictionary key",)) - let checked-entry = z.parse(entry, dict-schema, scope: ( - "dictionary entry", - )) - checked-entries.insert(checked-key, checked-entry) - } - let checked-format-term = z.parse(format-term, z.function(), scope: ( - "format-term", - )) - let checked-show-term = z.parse(show-term, z.function(), scope: ( - "show-term", - )) - let checked-body = z.parse(body, z.content(), scope: ("body",)) - - // Process and store each glossary entry - for (key, entry) in entries { - __add_entry(key, __normalize_entry(key, entry)) - // Create placeholder labels for autocompletion - [#metadata(key)#label(key)] - } - - // Set up reference handling for glossary terms - show ref: r => { - let (raw_key, ..raw_modifiers) = str(r.target).split(":") - let supplement = r.supplement // used for term display overrides - - // Determine if we need to swap the key and first modifier. - // Conditions for swapping: - // - The original key is "a" or "an" (case-insensitive), - // - That "key" does not correspond to an actual entry, - // - There is at least one modifier, - // - The first modifier corresponds to an existing entry key. - let can_swap = ( - (lower(raw_key) == "a" or lower(raw_key) == "an") - and not __has_entry(raw_key) - and raw_modifiers.len() > 0 - and __has_entry(raw_modifiers.first()) - ) - - // If we can swap, use the first modifier as the key and insert "a" as the first modifier. - let (key, modifiers) = if can_swap { - (raw_modifiers.first(), ("a",) + raw_modifiers.slice(1)) - } else { - (raw_key, raw_modifiers) - } - - // Now see if this is an actual glossary term key - if __has_entry(key) { - // Found in dictionary, render via __gls() - __gls( - key, - modes-modifiers: modifiers.map(lower), - format-term: checked-format-term, - show-term: checked-show-term, - term-links: term-links, - display-text: supplement, - ) - } else { - // Not one of ours, so just pass it through - r - } - } - - body -} - -// Renders a complete glossary with customizable formatting and grouping. -// -// The glossary displays all used terms, optionally grouped by category, with page -// references back to term usage. The appearance is controlled by a theme that -// defines how sections, groups, and entries are formatted. -// -// Parameters: -// title (string): Glossary section title (default: "Glossary") -// theme (dictionary): Controls glossary appearance with three functions: -// - section(title, body): Renders the main glossary section -// - title: The glossary title -// - body: Content containing all groups and entries -// - group(name, index, total, body): Renders a group of related terms -// - name: Group name -// - index: Zero-based group index -// - total: Total number of groups -// - body: Content containing the group's entries -// - entry(entry, index, total): Renders a single glossary entry -// - entry: Dictionary containing: -// - short: Short form of term -// - long: Long form of term (optional) -// - description: Term description (optional) -// - label: Term's dictionary label -// - pages: Array of linked page numbers where term appears -// - index: Zero-based entry index within group -// - total: Total entries in group -// groups (array): Optional list of groups to include -// If empty, includes all groups -// -// Returns: -// content: Formatted glossary content -// -// Panics: -// - If a requested group doesn't exist -// -#let glossary( - title: "Glossary", - theme: theme-academic, - sort: true, - ignore-case: false, - groups: (), - show-all: false, -) = context { - // Type checking - let checked-title = z.parse(title, z.content(), scope: ("title",)) - let checked-groups = z.parse(groups, groups-list-schema, scope: ("groups",)) - let checked-ignore-case = z.parse(ignore-case, z.boolean(), scope: ( - "ignore-case", - )) - let checked-theme = z.parse(theme, theme-schema, scope: ("theme",)) - - // Collect and organize entries by group - let output = (:) - let all_entries = __gloss_entries.final() - let all_used = if not show-all { - all_entries.keys().filter(key => __is_term_ever_referenced(key)) - } else { - all_entries.keys() - } - - // Determine which groups to process - let all_groups = all_entries - .values() - .map(e => e.at("group")) - .map(g => { if g == none { "" } else { g } }) - .dedup() - .sorted() - - let target_groups = if checked-groups.len() == 0 { - all_groups - } else { - // Validate requested groups exist - for g in checked-groups { - if g == none { - g = "" - } - if g not in all_groups { - panic("Requested group, '" + g + "', not found.") - } - } - checked-groups - } - - // Process entries group by group - for group in target_groups { - let current_entries = () - - // Collect all used entries for this group - for key in all_used { - let entry = all_entries.at(key) - if entry.at("group") == group { - current_entries.push(( - short: entry.at("short"), - long: entry.at("long"), - description: entry.at("description"), - label: [#metadata(key)#__entry_label(key)], - pages: __create_backlinks(key), - )) - } - } - - // Add non-empty groups to output - if current_entries.len() > 0 { - group = if group == none { "" } else { group } - - // sort entries by case insensitivity if requested - // sort entries by case insensitivity if requested - let sorted_entries = if sort { - current_entries - // 1. create array of tuples with (lower [if ignore-case], entry) - .map(e => { - if ignore-case { (lower(e.short), e) } else { (e.short, e) } - }) - // 2. sort the tuples (by first element then second) - .sorted(key: e => e.first()) // NOTE: sorted() is NOT language-aware - // 3. strip away the tuple's first element, leaving an array of entries - .map(t => t.last()) - } else { - current_entries - } - - // add entries to this group's output map - output.insert(group, sorted_entries) - } - } - - // Render the glossary using the theme - let group_index = 0 - - [ - #metadata("glossary") - #(checked-theme.section)( - title, - for (group, entries) in output { - (checked-theme.group)( - group, - group_index, - output.len(), - for (i, entry) in entries.enumerate() { - (checked-theme.entry)(entry, i, entries.len()) - }, - ) - group_index += 1 - }, - ) - ] -} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/schemas.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/schemas.typ deleted file mode 100644 index 366c29aac1..0000000000 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/schemas.typ +++ /dev/null @@ -1,25 +0,0 @@ -#import "@preview/valkyrie:0.2.2" as z - -#let dict-schema = z.either( - z.string(), - z.dictionary( - ( - short: z.content(), // this is the only required field - plural: z.content(optional: true), - long: z.content(optional: true), - longplural: z.content(optional: true), - description: z.content(optional: true), - group: z.content(optional: true), - ), - ), -) - -#let theme-schema = z.dictionary( - ( - section: z.function(), - group: z.function(), - entry: z.function(), - ), -) - -#let groups-list-schema = z.array(pre-transform: z.coerce.array) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes.typ deleted file mode 100644 index dc3f4b855f..0000000000 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes.typ +++ /dev/null @@ -1,6 +0,0 @@ -#import "themes/academic.typ": theme-academic -#import "themes/basic.typ": theme-basic -#import "themes/chicago-index.typ": theme-chicago-index -#import "themes/compact.typ": theme-compact -#import "themes/table.typ": theme-table -#import "themes/twocol.typ": theme-twocol diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/academic.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/academic.typ deleted file mode 100644 index 4d97bda7c5..0000000000 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/academic.typ +++ /dev/null @@ -1,47 +0,0 @@ -// Inspired by academic textbook glossaries -#let theme-academic = ( - section: (title, body) => { - heading(level: 1, title) - v(1em) - body - }, - group: (name, index, total, body) => { - if name != "" and total > 1 { - v(1.5em) - align(left, text(weight: "bold", size: 1.2em, name)) - v(0.75em) - line(length: 100%, stroke: 0.5pt) - v(0.75em) - } - body - }, - entry: (entry, index, total) => { - let short-display = text(weight: "bold", entry.short) - let long-display = if entry.long == none { - [] - } else { - [. #entry.long] - } - - let description = if entry.description == none { - [] - } else { - [. #entry.description] - } - - block( - below: 1em, - text( - size: 0.95em, - { - grid( - columns: (1fr, auto), - gutter: 0.75em, - [#short-display#long-display#description#entry.label], - text(fill: rgb("#666666"), entry.pages.join(", ")), - ) - }, - ), - ) - }, -) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/basic.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/basic.typ deleted file mode 100644 index 8c6bec26e8..0000000000 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/basic.typ +++ /dev/null @@ -1,68 +0,0 @@ -// Theme definition for a basic single-column glossary layout -// -// This theme provides a traditional glossary format with: -// 1. Bold terms -// 2. Indented descriptions -// 3. Simple page references -// 4. Optional group headings -// -#let theme-basic = ( - // Renders the main glossary section as a single column - // Parameters: - // title: The glossary section title - // body: Content containing all groups and entries - section: (title, body) => { - heading(level: 1, title) - body - }, - // Renders a group of related glossary terms - // Parameters: - // name: Group name (empty string for ungrouped terms) - // index: Zero-based group index - // total: Total number of groups - // body: Content containing the group's entries - group: (name, index, total, body) => { - if name != "" and total > 1 { - heading(level: 2, name) - } - body - }, - // Renders a single glossary entry with term, definition, and page references - // Parameters: - // entry: Dictionary containing term data: - // - short: Short form of term - // - long: Long form of term (optional) - // - description: Term description (optional) - // - label: Term's dictionary label - // - pages: Array of linked page numbers where term appears - // index: Zero-based entry index within group - // total: Total entries in group - entry: (entry, index, total) => { - // Format the term parts - let term = text(weight: "bold", entry.short) - let long-form = if entry.long == none { - [] - } else { - [, #entry.long] - } - - // Format the description with proper spacing - let description = if entry.description == none { - [] - } else { - [: #entry.description] - } - - // Create the complete entry with hanging indent - block( - spacing: 0.5em, - pad( - left: 1em, - bottom: 0.5em, - block( - [#term#entry.label#long-form#description #h(1em) (pp. #entry.pages.join(", "))], - ), - ), - ) - }, -) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/chicago-index.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/chicago-index.typ deleted file mode 100644 index 91bb498891..0000000000 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/chicago-index.typ +++ /dev/null @@ -1,45 +0,0 @@ -// Inspired by the Chicago Manual of Style's index format -#let theme-chicago-index = ( - section: (title, body) => { - set par(hanging-indent: 1em) - heading(level: 1, smallcaps(title)) - body - }, - group: (name, index, total, body) => { - if name != "" and total > 1 { - v(1em) - text(weight: "medium", style: "italic", name) - v(0.5em) - } - body - }, - entry: (entry, index, total) => { - let short-display = text(weight: "regular", entry.short) - let long-display = if entry.long == none { - [] - } else { - [ — #entry.long] // Using em-dash for Chicago style - } - - let description = if entry.description == none { - [] - } else { - text(style: "italic", [: #entry.description]) - } - - block( - below: 0.65em, - text( - size: 0.9em, - { - grid( - columns: (1fr, auto), - gutter: 1em, - [#short-display#entry.label#long-display#description#entry.label], - [#entry.pages.join(", ")], - ) - }, - ), - ) - }, -) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/compact.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/compact.typ deleted file mode 100644 index 60c185065d..0000000000 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/compact.typ +++ /dev/null @@ -1,89 +0,0 @@ -// Theme definition for a compact glossary layout optimized for space efficiency -// -// This theme provides a dense but readable format with: -// 1. Terms and definitions on same line -// 2. Smaller font size -// 3. Minimal vertical spacing -// 4. Left-aligned groups for quick scanning -// 5. Condensed page references -// -#let theme-compact = ( - // Renders the main glossary section with minimal spacing - // Parameters: - // title: The glossary section title - // body: Content containing all groups and entries - section: (title, body) => { - set par(leading: 0.65em) - heading(level: 1, outlined: false, text(weight: "bold", size: 1.1em, title)) - body - }, - // Renders a group of related glossary terms - // Parameters: - // name: Group name (empty string for ungrouped terms) - // index: Zero-based group index - // total: Total number of groups - // body: Content containing the group's entries - group: (name, index, total, body) => { - if name != "" and total > 1 { - block( - spacing: 0.5em, - pad( - top: 0.5em, - text(weight: "bold", size: 0.9em, name), - ), - ) - } - body - }, - // Renders a single glossary entry with term, definition, and page references - // Parameters: - // entry: Dictionary containing term data: - // - short: Short form of term - // - long: Long form of term (optional) - // - description: Term description (optional) - // - label: Term's dictionary label - // - pages: Array of linked page numbers where term appears - // index: Zero-based entry index within group - // total: Total entries in group - entry: (entry, index, total) => { - // Format term components with minimal spacing - let term = text( - size: 0.65em, - weight: "medium", - fill: gray.darken(60%), - entry.short, - ) - - let long-form = if entry.long == none { - [] - } else { - text(size: 0.65em, fill: gray.darken(20%), [ (#entry.long)]) - } - - let description = if entry.description == none { - [] - } else { - text(size: 0.65em, [· #entry.description]) - } - - // Create the complete entry with tight spacing - block( - spacing: 0.4em, - grid( - columns: (auto, 1fr, auto), - align: left + bottom, - gutter: 0.5em, - // Term and description column - box[#term#entry.label#long-form #description], - // Dots.... - repeat(h(0.25em) + text(fill: gray, ".") + h(0.25em)), - // Page references with smaller font - text( - size: 0.6em, - fill: gray.darken(20%), - entry.pages.join(", "), - ), - ), - ) - }, -) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/table.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/table.typ deleted file mode 100644 index 5b32acbdcf..0000000000 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/table.typ +++ /dev/null @@ -1,36 +0,0 @@ -// A tabular theme courtesy of [@Fevol](https://github.com/Fevol) -#let theme-table = ( - section: (title, body) => { - heading(level: 1, title) - body - }, - group: (name, index, total, body) => { - if name != "" and total > 1 { - heading(level: 2, name) - } - - table( - columns: 4, - stroke: none, - inset: (x, y) => { - if (x == 0) { - (left: 0pt, rest: 5pt) - } else if (x == 3) { - (right: 0pt, rest: 5pt) - } else { - 5pt - } - }, - table.header([*Abbreviation*], [*Full Name*], [*Description*], [*Pages*]), - ..body, - ) - }, - entry: (entry, index, total) => { - ( - entry.short + entry.label, - entry.long, - entry.description, - entry.pages.join(", "), - ) - }, -) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/twocol.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/twocol.typ deleted file mode 100644 index 947fa2d2ce..0000000000 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/themes/twocol.typ +++ /dev/null @@ -1,74 +0,0 @@ -// Theme definition for a two-column glossary layout with hierarchical sections -// -// This theme provides formatting for three levels of glossary content: -// 1. Section: The overall glossary container -// 2. Groups: Optional categorization of related terms -// 3. Entries: Individual glossary terms and their definitions -// -#let theme-twocol = ( - // Renders the main glossary section as a two-column layout - // Parameters: - // title: The glossary section title - // body: Content containing all groups and entries - section: (title, body) => { - set par.line(numbering: none) - heading(level: 1, title) - columns(2, body) - }, - // Renders a group of related glossary terms - // Parameters: - // name: Group name (empty string for ungrouped terms) - // index: Zero-based group index - // total: Total number of groups - // body: Content containing the group's entries - group: (name, index, total, body) => { - if name != "" and total > 1 { - heading(level: 2, name) - } - body - }, - // Renders a single glossary entry with term, definition, and page references - // Parameters: - // entry: Dictionary containing term data: - // - short: Short form of term - // - long: Long form of term (optional) - // - description: Term description (optional) - // - label: Term's dictionary label - // - pages: Array of linked page numbers where term appears - // index: Zero-based entry index within group - // total: Total entries in group - entry: (entry, index, total) => { - // Format the short form and optional long form of the term - let short-display = text(weight: "regular", entry.short) - let long-display = if entry.long == none { - [] - } else { - [#h(0.25em) -- #entry.long] - } - - // Format the optional description - let description = if entry.description == none { - [] - } else { - [: #entry.description] - } - - // Render the complete entry with dotted leader line to page numbers - text( - size: 0.75em, - weight: "light", - grid( - columns: (auto, 1fr, 1em, auto), - align: (left, center, center, right), - [#short-display#entry.label#long-display#description], - // Term with label - [#repeat(h(0.25em) + "." + h(0.25em))], - // Dotted leader line - [ . ], - // A 1em wide dot so we definitely get some break between term and pages - [#entry.pages.join(", ")], - // Page references - ), - ) - }, -) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/utils.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/utils.typ deleted file mode 100644 index 9a6be1b2d1..0000000000 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/patches/glossy/src/utils.typ +++ /dev/null @@ -1,272 +0,0 @@ -// Returns the provided value if it is not none, otherwise returns the default value -// Parameters: -// val: The value to check -// default: The fallback value to use if val is none -// Returns: val if not none, otherwise default -#let __default(val, default) = if val == none { default } else { val } - -// Converts an English word to its plural form following standard English pluralization rules -// Parameters: -// word: The singular word to pluralize -// Returns: The pluralized form of the word, or none if input is none -#let __pluralize(word) = { - // Early exit for invalid input - if word == none { - return none - } - - // Helper functions for checking endings - let ends_with = suffix => lower(word).ends-with(suffix) - let ends_with_any = suffixes => suffixes.any(suffix => ends_with(suffix)) - - // Map of irregular plurals for common words - let irregulars = ( - "alumna": "alumnae", - "alumnus": "alumni", - "analysis": "analyses", - "appendix": "appendices", - "basis": "bases", - "cactus": "cacti", - "child": "children", - "crisis": "crises", - "criterion": "criteria", - "datum": "data", - "foot": "feet", - "fungus": "fungi", - "goose": "geese", - "man": "men", - "medium": "media", - "mouse": "mice", - "nucleus": "nuclei", - "oasis": "oases", - "person": "people", - "phenomenon": "phenomena", - "stimulus": "stimuli", - "thesis": "theses", - "tooth": "teeth", - "woman": "women", - ) - - // Set of plural-only words - let plural_only = ( - "advice", - "alumni", - "bison", - "children", - "criteria", - "data", - "deer", - "feet", - "fish", - "geese", - "information", - "media", - "men", - "mice", - "money", - "moose", - "octopi", - "octopodes", - "people", - "scissors", - "series", - "sheep", - "species", - "teeth", - "trousers", - "women", - ) - - // Irregular suffixes - let f_to_ves = ("leaf", "loaf", "calf", "half", "wolf", "thief") - let fe_to_ves = ("wife", "knife", "life") - let o_to_os = ( - "photo", - "piano", - "halo", - "radio", - "video", - "studio", - "solo", - "taco", - "memo", - "zero", - ) - - // Convenience - let w = lower(word) - - // Check for words already plural - if plural_only.contains(w) { - return word - } - - // Check for irregular singulars - if irregulars.keys().contains(w) { - return irregulars.at(w) - } - - // Standard pluralization rules - if ends_with("iz") { - word + "zes" - } else if ends_with_any(("s", "x", "z", "sh", "ch")) { - word + "es" - } else if ends_with("y") { - if not ends_with_any(("ay", "ey", "iy", "oy", "uy")) { - word.slice(0, -1) + "ies" - } else { - word + "s" - } - } else if ends_with("f") { - if f_to_ves.contains(w) { - word.slice(0, -1) + "ves" - } else { - word + "s" - } - } else if ends_with("fe") { - if fe_to_ves.contains(w) { - word.slice(0, -2) + "ves" - } else { - word + "s" - } - } else if ends_with("us") { - word.slice(0, -2) + "i" - } else if ends_with("is") { - word.slice(0, -2) + "es" - } else if ends_with("on") { - word + "s" - } else if ends_with("o") { - if o_to_os.contains(w) { - word + "s" - } else { - word + "es" - } - } else { - word + "s" - } -} - -// Determines the appropriate indefinite article ("a" or "an") for a given English word. -// -// Heuristic rules: -// 1. If word looks like an acronym (all uppercase or letters separated by dots): -// - Use "an" if the first letter's name starts with a vowel sound, e.g. A (ay), E (ee), F (eff), H (aitch), I (eye), L (el), M (em), N (en), O (oh), R (ar), S (ess), X (ex). -// - Otherwise "a". -// -// 2. Otherwise, lowercase the word and apply standard rules: -// - Starts with a vowel (a, e, i, o): "an". -// - Starts with "u": -// * If it begins with "uni", "use", "user", or "eu" (e.g. "university", "use", "Europe"), we treat it as a "yoo" sound -> "a". -// * Otherwise -> "an". -// - Special silent 'h' words: if it starts with "hour", "honest", "honor", "honour", or other, use "an". -// Otherwise if starts with 'h', use "a". -// - Default: "a". -// -// Notes: -// - This is a best-effort heuristic and won't be perfect. -// - These are for singular forms. If plural form is requested alongside -// articles, the caller should panic before calling this function. -// -// Returns: -// "a" or "an" -// -// Example: -// __determine_article("RF") -> "an" (Ar-Ef) -// __determine_article("radio") -> "a" -// __determine_article("hour") -> "an" -// __determine_article("honest") -> "an" -// __determine_article("university") -> "a" -// __determine_article("umbrella") -> "an" -// __determine_article("Europe") -> "a" (because we assume "yoo-ruhp") -#let __determine_article(word) = { - // Check input - if word == none or word.trim() == "" { - // If invalid, default to none - return none - } - - // Normalize the word - let upper_word = word.trim() - let lower_word = lower(upper_word) - - // When these letters are spelled out, they get an "an" (i.e. "an RFC") - let acronym_vowels = ( - "A", // "ay" - "E", // "ee" - "F", // "eff" - "H", // "aitch" - "I", // "eye" - "L", // "el" - "M", // "em" - "N", // "en" - "O", // "oh" - "R", // "ar" - "S", // "ess" - "X", // "ex" - ) - - // Helper to detect if word looks like an acronym - let is_acronym = { - // All uppercase or letters separated by non-alphabetical chars - let cleaned = upper_word.replace(".", "").replace("-", "") - cleaned.codepoints().all(c => c == upper(c)) and cleaned.len() > 0 - } - - if is_acronym { - // Use acronym rules - let first_char = upper_word.codepoints().slice(0, 1).first() - if acronym_vowels.contains(first_char) { - "an" - } else { - "a" - } - } else { - // Non-acronym rules - let first_char = lower_word.codepoints().slice(0, 1).first() - - // Special cases for words matching a set of known 'silent h' prefixes - let silent_h_words = ( - "heir", // "air" - "herb", // "erb" (in American English) - "homage", // "oh-mij" or "ah-mij" - "honest", // "on-est" - "honor", // "on-or" (American English) - "honour", // "on-our" (British English) - "hour", // "our" - ) - if silent_h_words.any(w => lower_word.starts-with(w)) { - return "an" - } - - // Words starting with 'eu', which has the 'yoo' sound - if lower_word.starts-with("eu") { - return "a" - } - - // Words starting with 'u', that get the 'yoo' sound - if first_char == "u" { - let yoo_sounds = ( - "ubi", // ubiquitous - "uni", // unicycle, uniform, universe, university, unilateral, unique, union, etc. - "usa", // usage, usability - "use", // use, useful, useless - "usu", // usual, usually - "usur", // usurp - "ute", // utensil, uterus - "uti", // utility, utilize, utilization - "uto", // utopia, utopian - ) - if yoo_sounds.any(w => lower_word.starts-with(w)) { - return "a" - } - } - - // Vowel start - if "aeiou".contains(first_char) { - return "an" - } - - // the default case, plus 'h' words not in the silent list - "a" - } -} diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/glossary.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/glossary.typ index 313bd36934..1962114907 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/glossary.typ +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/glossary.typ @@ -1,4 +1,4 @@ -#import "../patches/glossy/lib.typ": * +#import "@preview/glossy:0.9.1": * #let glossary-theme = ( section: (title, body) => { diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ b/packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ index b7916f82e0..244c44d0cf 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ +++ b/packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ @@ -56,7 +56,7 @@ That's subjective, but: == Glossary, references and labels -Here we have a glossary reference: @iot:long. We can also use the acronym form: @iot:short. See the #link("https://typst.app/universe/package/glossy/", "Glossy") documentation for more details. +Here we have a glossary reference: @iot:long. We can also use the acronym form: @iot:short. See the #link("https://typst.app/universe/package/glossy/", "Glossy") documentation for more details. Here we refer to a term, not an acronym: @deployment. Here we refer to a source from our bibliography @garcia2021microservices. The template uses IEEE style by default, but you can change it with the `bibliography-style` option in `zhaw-thesis.with()`. From 58d727ac6c1936f625c2f0e12429e583d8e7f113 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Wed, 22 Apr 2026 16:49:50 +0200 Subject: [PATCH 18/30] feat: adjust h1 sizes based on feedback --- .gitignore | 1 + packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md | 1 + .../preview/modern-zhaw-thesis/0.4.0/src/styling/text.typ | 4 ++-- .../preview/modern-zhaw-thesis/0.4.0/src/styling/tokens.typ | 2 +- packages/preview/modern-zhaw-thesis/0.4.0/src/utils.typ | 2 +- 5 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 1c9f682544..60591dcefe 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ desktop.ini # Rust /bundler/target +.claude/settings.local.json diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md b/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md index a71f92be86..0510326258 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md +++ b/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md @@ -2,6 +2,7 @@ ## 0.4.0 +- Tweaked H1 font size and spacing based on feedback - Replaced custom Glossy patch with official 0.9.1 release. Should not be a breaking change. ## 0.3.0 diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/text.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/text.typ index 4c080e7017..c63605b9f5 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/text.typ +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/text.typ @@ -64,8 +64,8 @@ rows: auto, gutter: -0.8cm, align: top + start, - block(width: 100%, pad(left: -0.5em, text(fill: tokens.colour.main, size: 96pt, heading_number))), - text(fill: tokens.colour.main, size: tokens.font-sizes.h1, it.body), + block(width: 100%, pad(left: -0.5em, text(fill: tokens.colour.main, size: 88pt, heading_number))), + pad(top:0.1cm, text(fill: tokens.colour.main, size: tokens.font-sizes.h1, it.body)), ) v-after-numbered-chapter-heading(it) } diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/tokens.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/tokens.typ index c7fbe85cfb..45823729d3 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/tokens.typ +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/tokens.typ @@ -10,7 +10,7 @@ headers: "Arial Rounded MT", //Nunito ), font-sizes: ( - "h1": 32pt, + "h1": 30pt, "h3": 11pt, "h4": 11pt, "body": 11pt, diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/utils.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/utils.typ index 83fbcb2cd7..ee63d3fdfd 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/utils.typ +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/utils.typ @@ -122,7 +122,7 @@ set align(center + horizon) set par(first-line-indent: 0cm) align(start + horizon)[ - #text(font: tokens.font-families.headers, fill: tokens.colour.main, weight: "bold", size: 24pt, title) + #text(font: tokens.font-families.headers, fill: tokens.colour.main, weight: "bold", size: tokens.font-sizes.h1, title) #content ] } From 5f90235d110bf1cee2c8fccdf6825364580772c8 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Wed, 22 Apr 2026 18:15:11 +0200 Subject: [PATCH 19/30] feat: fruther heading tweak --- .../preview/modern-zhaw-thesis/0.4.0/src/styling/tokens.typ | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/tokens.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/tokens.typ index 45823729d3..2b29079955 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/tokens.typ +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/tokens.typ @@ -10,7 +10,7 @@ headers: "Arial Rounded MT", //Nunito ), font-sizes: ( - "h1": 30pt, + "h1": 28pt, "h3": 11pt, "h4": 11pt, "body": 11pt, From 47562d8eb17297877fe4c6f0889ee3bf7cce59d6 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Wed, 22 Apr 2026 18:17:43 +0200 Subject: [PATCH 20/30] feat: further heading tweak 2 --- packages/preview/modern-zhaw-thesis/0.4.0/src/styling/text.typ | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/text.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/text.typ index c63605b9f5..e58a11a36b 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/text.typ +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/text.typ @@ -64,7 +64,7 @@ rows: auto, gutter: -0.8cm, align: top + start, - block(width: 100%, pad(left: -0.5em, text(fill: tokens.colour.main, size: 88pt, heading_number))), + block(width: 100%, pad(left: -0.5em, text(fill: tokens.colour.main, size: tokens.font-sizes.h1 + 58pt, heading_number))), pad(top:0.1cm, text(fill: tokens.colour.main, size: tokens.font-sizes.h1, it.body)), ) v-after-numbered-chapter-heading(it) From 96700d3b8880af3dafa5739921fd130736fa3639 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Wed, 22 Apr 2026 18:39:35 +0200 Subject: [PATCH 21/30] feat: page header ellispsing --- .../0.4.0/src/styling/page-header.typ | 3 +- .../modern-zhaw-thesis/0.4.0/src/utils.typ | 35 ++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/page-header.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/page-header.typ index 2ab1fcbc43..f6e16ead9b 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/page-header.typ +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/styling/page-header.typ @@ -1,5 +1,6 @@ #import "tokens.typ": tokens #import "@preview/tieflang:0.1.0": tr +#import "../utils.typ": ellipsisise #let page-header-styles(doc) = { set page( @@ -12,7 +13,7 @@ ), ) - [#left-text #h(1fr) #right-text] + [#left-text #h(1fr) #ellipsisise(80%, right-text)] } let page-number = here().page() diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/utils.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/utils.typ index ee63d3fdfd..50fd14607d 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/utils.typ +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/utils.typ @@ -56,6 +56,33 @@ return none } +#let content-to-string(c) = { + if type(c) == str { c } + else if c == [ ] { " " } + else if c.has("text") { c.text } + else if c.has("children") { c.children.map(content-to-string).join("") } + else if c.has("body") { content-to-string(c.body) } + else { "" } +} + +#let ellipsisise(max-width, text) = box(layout(size => context { + let width(t) = measure(t).width + let limit = if type(max-width) == ratio { max-width * size.width } else { max-width } + let s = content-to-string(text) + let s_orig = s + let ellipsis = "..." + + while s.len() > 0 and width(s) + width(ellipsis) > limit { + s = s.slice(0, calc.max(0, s.len() - 1)) + } + + if s == s_orig { + s + } else { + s + ellipsis + } +})) + #let v-after-numbered-chapter-heading(it) = context { if it == none { panic("Parameter \"it\" of \"v-after-numbered-chapter-heading\" must be defined.") @@ -122,7 +149,13 @@ set align(center + horizon) set par(first-line-indent: 0cm) align(start + horizon)[ - #text(font: tokens.font-families.headers, fill: tokens.colour.main, weight: "bold", size: tokens.font-sizes.h1, title) + #text( + font: tokens.font-families.headers, + fill: tokens.colour.main, + weight: "bold", + size: tokens.font-sizes.h1, + title, + ) #content ] } From 5168a58ae64837e752bb4b2a0fe2255aaf1323dc Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Thu, 23 Apr 2026 12:17:48 +0200 Subject: [PATCH 22/30] chore: update showcase pdf --- .../modern-zhaw-thesis/0.4.0/showcase.pdf | Bin 205468 -> 222291 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/showcase.pdf b/packages/preview/modern-zhaw-thesis/0.4.0/showcase.pdf index 39e5e110c31c451bf6b444770d13c3a9a8120150..24c3d55bf7b1e1b45304640b5340164108e6150d 100644 GIT binary patch delta 102261 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%0A6z>eM}(uo366oQh+X%S{^+ zW(7j#c5NknebE~ybgZpzht*-Q1<9O!`SIyYI)?W5ans%@#l&Xm zliuMPC-X}2JV%2C+qxk0GH;fbg;a_*Qy`ral&#to8h-!T$5#}JR^CKrXKo{6zlc*@ z9OhS;8FPdFn043l(9Zi}_V8v3YRf8=K>jQ%=GeM&=CN%e zO$Afn7};;7P;>?`B6(j(H9VEAj5#iB5V;8+l2pKp6r0?@yiN#4NG^{$M2}^wdM{$n zA05k_<))2^Nm)i{u`D2ok5bmCuMxREG+AN!0(r|t19x4$QJ=FIyn@!?Mv)hD8>B8v zvcX8L=zGL!}w1@mj8Ag3s}IA#*{ai8_wIobt}#J4rwY zUg{FCerOMOEOIto^-z9(ujE6U6PMf&FApA+_D@heEVX9aP~4~UZ_EFxuTd;8lsT>2 z8!S-HUBijfPzJVNweP|WMcA~m*V&*{t&XUMX#>)hL7Osw1W2O=LwwLLna`rEpkEHy1@|NRowM3r7sZ-WcAI+Bf-fgdXUH*SBh%0vDLDWqrKK6wzzd*oDB()tS4wFizxxe zkI9)PB&g9|#+PL;$`H@pmNmk&(&~d%-e1O7+AV57P#wTu>pc`4;5zFF!%pn{ayrG6 zo;O?sJ6*=t*)3WSTijJQ>Ib$wY-g2aH|^>*UYH*3pW=REQ#=yVW^R>PX4y18!@J(S z16H*5DV>+=yE7H5%`qKMW&O4+l@cmFZ%GI|uF1l_XB%FXnTPUsyMc{E0+w4o?8|8V z3OO*B`xuP>A~w!y1_QG#2gjTh)A!rXu+$nMSOP`!1tw-OWcqLs@m)gxqPY0-WUq

UhlB9o_> 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 delta 90173 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 I_2AzB2d%Jn@&Et; From d74e4263b44d24b74b9a580a434e6e55718d5744 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Thu, 23 Apr 2026 12:20:22 +0200 Subject: [PATCH 23/30] revert: gitignore file --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 60591dcefe..1c9f682544 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,3 @@ desktop.ini # Rust /bundler/target -.claude/settings.local.json From c63afac2b17e33016ebe434982d33dfbc3964070 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sat, 25 Apr 2026 20:51:05 +0200 Subject: [PATCH 24/30] docs: indicate breaking change --- packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md b/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md index 0510326258..650fc54c38 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md +++ b/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md @@ -2,7 +2,7 @@ ## 0.4.0 -- Tweaked H1 font size and spacing based on feedback +- **BREAKING (layout shifts)**: Tweaked H1 font size and spacing based on feedback - Replaced custom Glossy patch with official 0.9.1 release. Should not be a breaking change. ## 0.3.0 From b01941708b365db0b9c0b89b4775d1d3a10290e1 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sat, 25 Apr 2026 20:52:02 +0200 Subject: [PATCH 25/30] docs: ichangelog on pkg page --- .../modern-zhaw-thesis/0.4.0/README.md | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/README.md b/packages/preview/modern-zhaw-thesis/0.4.0/README.md index 2d159ad532..dabd9f404e 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/README.md +++ b/packages/preview/modern-zhaw-thesis/0.4.0/README.md @@ -142,3 +142,37 @@ For information about ZHAW's branding guidelines, refer to the official [ZHAW tr This is an **unofficial** template created by a student. It is not endorsed, maintained, or supported by ZHAW. The template attempts to follow official ZHAW branding guidelines and academic requirements, but users should verify compliance with current university standards. +## Changelog + +### 0.4.0 + +- **BREAKING (layout shifts)**: Tweaked H1 font size and spacing based on feedback +- Replaced custom Glossy patch with official 0.9.1 release. Should not be a breaking change. + +### 0.3.0 + +- Allow setting overrideable options to `none` +- Fixed edge cases when some options were set to `none` and caused errors +- Fixed declaration of originality appendix ref +- Fixed bug displaying supervisor names in acknowledgements page +- Fixed localisation of "Chapter" label in page header +- Fixed long H1s overlapping with next section + +### 0.2.0 + +- Added custom quote styling +- Fixed glossary issues when no entries are provided +- Localised outline and appendix headings +- Fixed Glossy init-glossary validation bug +- Fixed empty optional supervisor fields +- Fixed translation strings +- Fixed custom declaration of originality body rendering +- Fixed README typos + +### 0.1.1 + +Improved README + +### 0.1.0 + +Initial release From 14ce1d63753eb285663abb567c733bd30c062f44 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sun, 26 Apr 2026 17:42:57 +0200 Subject: [PATCH 26/30] feat!: native bibliography function --- .../modern-zhaw-thesis/0.4.0/CHANGELOG.md | 1 + .../modern-zhaw-thesis/0.4.0/README.md | 14 ++++++-------- .../0.4.0/src/zhaw-thesis.typ | 19 +++++-------------- .../0.4.0/template/main.typ | 7 ++----- 4 files changed, 14 insertions(+), 27 deletions(-) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md b/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md index 650fc54c38..bfc5eba52e 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md +++ b/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md @@ -3,6 +3,7 @@ ## 0.4.0 - **BREAKING (layout shifts)**: Tweaked H1 font size and spacing based on feedback +- **BREAKING**: `biblio: (file:, style:)` replaced by `bibliography:` — pass a `bibliography()` object directly - Replaced custom Glossy patch with official 0.9.1 release. Should not be a breaking change. ## 0.3.0 diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/README.md b/packages/preview/modern-zhaw-thesis/0.4.0/README.md index dabd9f404e..3ab20feb7c 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/README.md +++ b/packages/preview/modern-zhaw-thesis/0.4.0/README.md @@ -6,9 +6,9 @@ ## Setup -1. Download the font files from the repo's font directory: +1. Download the font files from the repo's font directory: - [GitHub](https://github.com/stanlrt/typst-zhaw-thesis/tree/28927077165d31305c4438657eb0cdefa32bbcbd/fonts) + [GitHub](https://github.com/stanlrt/typst-zhaw-thesis/tree/28927077165d31305c4438657eb0cdefa32bbcbd/fonts) [Direct download](https://download-directory.github.io/?url=https%3A%2F%2Fgithub.com%2Fstanlrt%2Ftypst-zhaw-thesis%2Ftree%2F28927077165d31305c4438657eb0cdefa32bbcbd%2Ffonts) @@ -68,10 +68,7 @@ Below is the complete list of configuration options, including default values an override: none, // Override the declaration page with your own file ), - biblio: ( - file: none, // Stream to .bib file e.g. `read("references.bib", encoding: none)` - style: "ieee", // Bibliography style, e.g. "ieee" - ), + bibliography: none, // bibliography() object, e.g. `bibliography("refs.bib", style: "ieee")` glossary-entries: none, // Variable containing glossary entries (see template) appendix: none, // Appendix Typst file, e.g. [#include "appendix.typ"] @@ -104,7 +101,7 @@ You can refer to the [demo document](./template/main.typ) for usage examples. ### Glossary -The template uses the [Glossy package](https://typst.app/universe/package/glossy/) to power the glossary feature under the hood. +The template uses the [Glossy package](https://typst.app/universe/package/glossy/) to power the glossary feature under the hood. You can find instructions about how to use all its options directly on the [package page](https://typst.app/universe/package/glossy/). ### Code blocks @@ -118,7 +115,7 @@ Should you need use different languages for different pages of your work, you ca ## Feature requests & problems -Feel free to request features or report problems [here](https://github.com/stanlrt/typst-zhaw-thesis/issues) +Feel free to [request features or report problems here](https://github.com/stanlrt/typst-zhaw-thesis/issues) ## License and Trademark Notice @@ -147,6 +144,7 @@ This is an **unofficial** template created by a student. It is not endorsed, mai ### 0.4.0 - **BREAKING (layout shifts)**: Tweaked H1 font size and spacing based on feedback +- **BREAKING**: `biblio: (file:, style:)` replaced by `bibliography:` — pass a `bibliography()` object directly - Replaced custom Glossy patch with official 0.9.1 release. Should not be a breaking change. ### 0.3.0 diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/zhaw-thesis.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/zhaw-thesis.typ index 4f4f4768e4..6ef5ababdf 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/zhaw-thesis.typ +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/zhaw-thesis.typ @@ -1,4 +1,4 @@ -#import "utils.typ": deep-merge, deep-merge-or-default +#import "utils.typ": deep-merge #import "frontmatter.typ": ( zhaw-abstract-section, zhaw-acknowledgements-section, zhaw-cover-page, zhaw-declaration-section, ) @@ -42,8 +42,8 @@ override: none, ), glossary-entries: none, - // Default `none` so callers may pass `biblio: none` (same as omitting: IEEE, no .bib file). - biblio: none, + /// Pass a bibliography() object directly, e.g. bibliography("refs.bib", style: "ieee"). + bibliography: none, appendix: none, page-border: true, hide-frontmatter: false, @@ -87,12 +87,6 @@ let declaration-of-originality = deep-merge(declaration-defaults, declaration-of-originality) - let biblio-defaults = ( - file: none, - style: "ieee", - ) - let biblio = deep-merge-or-default(biblio-defaults, biblio) - set enum(numbering: "1.i.1.i.") show: setup-language.with(language) @@ -144,11 +138,8 @@ styled-glossary } - if biblio.file != none { - bibliography( - biblio.file, - style: biblio.style, - ) + if bibliography != none { + bibliography } if appendix != none { diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ b/packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ index 244c44d0cf..441a688734 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ +++ b/packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ @@ -23,10 +23,7 @@ location: "Zürich", ), glossary-entries: myGlossary, - biblio: ( - file: read("biblio.bib", encoding: none), - style: "ieee", - ), + bibliography: bibliography("biblio.bib", style: "ieee"), appendix: [#include "appendix.typ"], ) @@ -58,7 +55,7 @@ That's subjective, but: Here we have a glossary reference: @iot:long. We can also use the acronym form: @iot:short. See the #link("https://typst.app/universe/package/glossy/", "Glossy") documentation for more details. Here we refer to a term, not an acronym: @deployment. -Here we refer to a source from our bibliography @garcia2021microservices. The template uses IEEE style by default, but you can change it with the `bibliography-style` option in `zhaw-thesis.with()`. +Here we refer to a source from our bibliography @garcia2021microservices. Pass a `bibliography()` object to the `bibliography:` parameter to control the file and style. We can also refer to equations, such as @eq:weights, and figures, such as @tab:results. From ee8466c62f9107c3d75218d381ba3b050d5fb2a6 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent <63193889+stanlrt@users.noreply.github.com> Date: Sun, 26 Apr 2026 21:04:55 +0200 Subject: [PATCH 27/30] docs: improve biblio docu --- packages/preview/modern-zhaw-thesis/0.4.0/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/README.md b/packages/preview/modern-zhaw-thesis/0.4.0/README.md index 3ab20feb7c..c4d74b3ed2 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/README.md +++ b/packages/preview/modern-zhaw-thesis/0.4.0/README.md @@ -68,7 +68,7 @@ Below is the complete list of configuration options, including default values an override: none, // Override the declaration page with your own file ), - bibliography: none, // bibliography() object, e.g. `bibliography("refs.bib", style: "ieee")` + bibliography: none, // bibliography() object, e.g. `bibliography("refs.bib", style: "ieee")` (refer to Typst's docs) glossary-entries: none, // Variable containing glossary entries (see template) appendix: none, // Appendix Typst file, e.g. [#include "appendix.typ"] @@ -144,7 +144,7 @@ This is an **unofficial** template created by a student. It is not endorsed, mai ### 0.4.0 - **BREAKING (layout shifts)**: Tweaked H1 font size and spacing based on feedback -- **BREAKING**: `biblio: (file:, style:)` replaced by `bibliography:` — pass a `bibliography()` object directly +- **BREAKING**: `biblio: (file:, style:)` replaced by `bibliography:` — pass a `bibliography()` object directly (refer to [Typst's docs](https://typst.app/docs/reference/model/bibliography/)) - Replaced custom Glossy patch with official 0.9.1 release. Should not be a breaking change. ### 0.3.0 From ba90872fdc4cca51893f30ba33e4206844fe8ef3 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sun, 26 Apr 2026 21:09:37 +0200 Subject: [PATCH 28/30] docs: link to docs --- packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ b/packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ index 441a688734..c9a6f077e1 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ +++ b/packages/preview/modern-zhaw-thesis/0.4.0/template/main.typ @@ -55,7 +55,7 @@ That's subjective, but: Here we have a glossary reference: @iot:long. We can also use the acronym form: @iot:short. See the #link("https://typst.app/universe/package/glossy/", "Glossy") documentation for more details. Here we refer to a term, not an acronym: @deployment. -Here we refer to a source from our bibliography @garcia2021microservices. Pass a `bibliography()` object to the `bibliography:` parameter to control the file and style. +Here we refer to a source from our bibliography @garcia2021microservices. Pass a #link("https://typst.app/docs/reference/model/bibliography/")[`bibliography()` object] to the `bibliography:` parameter to control the file and style. We can also refer to equations, such as @eq:weights, and figures, such as @tab:results. From 256fba8169fc678251eec4e9490920dc314d5e85 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Sun, 26 Apr 2026 21:23:59 +0200 Subject: [PATCH 29/30] feat!: preset feature (hide-frontmatter gone) --- .../modern-zhaw-thesis/0.4.0/CHANGELOG.md | 2 ++ .../preview/modern-zhaw-thesis/0.4.0/README.md | 18 ++++++++++++------ .../0.4.0/src/zhaw-thesis.typ | 15 ++++++++++----- .../modern-zhaw-thesis/0.4.0/typst.toml | 2 +- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md b/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md index bfc5eba52e..d62fba4c13 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md +++ b/packages/preview/modern-zhaw-thesis/0.4.0/CHANGELOG.md @@ -4,6 +4,8 @@ - **BREAKING (layout shifts)**: Tweaked H1 font size and spacing based on feedback - **BREAKING**: `biblio: (file:, style:)` replaced by `bibliography:` — pass a `bibliography()` object directly +- **BREAKING**: `hide-frontmatter` replaced by `preset` — use `preset: "draft"` for equivalent behaviour +- Added `preset` parameter: `"thesis"` (default, show everything), `"draft"` (hide all frontmatter), `"exercise"` (show cover page + TOC, hide abstract/acknowledgements/declaration) - Replaced custom Glossy patch with official 0.9.1 release. Should not be a breaking change. ## 0.3.0 diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/README.md b/packages/preview/modern-zhaw-thesis/0.4.0/README.md index c4d74b3ed2..355f22bd9e 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/README.md +++ b/packages/preview/modern-zhaw-thesis/0.4.0/README.md @@ -1,6 +1,6 @@ # `modern-zhaw-thesis` template -`modern-zhaw-thesis` is an unofficial template for ZHAW academic works, adapted from the official branding and following official requirements. It supports both English and German. +`modern-zhaw-thesis` is a comprehensive template for ZHAW academic works, adapted from the official branding and following official requirements. It supports both English and German. [Here's a showcase](./showcase.pdf) of how it looks like. @@ -31,9 +31,13 @@ Below is the complete list of configuration options, including default values an ```typ #import "@preview/modern-zhaw-thesis:0.4.0": zhaw-thesis, languages -// Note: `override` options accept Typst files, e.g. `override: [#include "my-override.typ"]`, and `none` +// Note: `override` options accept Typst files (`override: [#include "my-override.typ"]`), and `none` + #show: zhaw-thesis.with( language: languages.de, // Document language + preset: "thesis", // "thesis": show everything (default) + // "draft": hide all frontmatter (to focus on writing) + // "exercise": show cover+TOC (no abstract/acks./declaration) cover: ( school: none, // E.g., "School of Engineering" REQUIRED @@ -68,12 +72,12 @@ Below is the complete list of configuration options, including default values an override: none, // Override the declaration page with your own file ), - bibliography: none, // bibliography() object, e.g. `bibliography("refs.bib", style: "ieee")` (refer to Typst's docs) - + bibliography: none, // bibliography() object + // e.g. `bibliography("refs.bib", style: "ieee")` (see Typst's docs) + glossary-entries: none, // Variable containing glossary entries (see template) appendix: none, // Appendix Typst file, e.g. [#include "appendix.typ"] - page-border: true, // Enable/disable page border - hide-frontmatter: false, // Hide all content before the 1st chapter (to focus on writing) + page-border: true, // Enable/disable page border print-mode: false, // Gives a white background to the cover page to reduce ink usage ) ``` @@ -145,6 +149,8 @@ This is an **unofficial** template created by a student. It is not endorsed, mai - **BREAKING (layout shifts)**: Tweaked H1 font size and spacing based on feedback - **BREAKING**: `biblio: (file:, style:)` replaced by `bibliography:` — pass a `bibliography()` object directly (refer to [Typst's docs](https://typst.app/docs/reference/model/bibliography/)) +- **BREAKING**: `hide-frontmatter` replaced by `preset` — use `preset: "draft"` for equivalent behaviour +- Added `preset` parameter: `"thesis"` (default, show everything), `"draft"` (hide all frontmatter), `"exercise"` (show cover page + TOC, hide abstract/acknowledgements/declaration) - Replaced custom Glossy patch with official 0.9.1 release. Should not be a breaking change. ### 0.3.0 diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/src/zhaw-thesis.typ b/packages/preview/modern-zhaw-thesis/0.4.0/src/zhaw-thesis.typ index 6ef5ababdf..48679cb9af 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/src/zhaw-thesis.typ +++ b/packages/preview/modern-zhaw-thesis/0.4.0/src/zhaw-thesis.typ @@ -46,7 +46,8 @@ bibliography: none, appendix: none, page-border: true, - hide-frontmatter: false, + /// "thesis": show everything (default). "draft": hide all frontmatter. "exercise": show cover only. + preset: "thesis", print-mode: false, doc, ) = { @@ -116,15 +117,19 @@ // context is needed for the tr() calls inside the page functions context { - if (not hide-frontmatter) { + if preset == "thesis" or preset == "exercise" { zhaw-cover-page(cover, print-mode: print-mode) + } + if preset == "thesis" or preset == "exercise" { set page(numbering: "i") counter(page).update(1) - zhaw-abstract-section(abstract, cover) - zhaw-acknowledgements-section(acknowledgements, cover) - zhaw-declaration-section(declaration-of-originality, cover) + if preset == "thesis" { + zhaw-abstract-section(abstract, cover) + zhaw-acknowledgements-section(acknowledgements, cover) + zhaw-declaration-section(declaration-of-originality, cover) + } outline(title: tr().table_of_contents, depth: 3) } diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/typst.toml b/packages/preview/modern-zhaw-thesis/0.4.0/typst.toml index 8ea41848aa..a9971cb30f 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/typst.toml +++ b/packages/preview/modern-zhaw-thesis/0.4.0/typst.toml @@ -6,7 +6,7 @@ version = "0.4.0" entrypoint = "lib.typ" authors = ["Stanislas Laurent "] license = "MIT-0" -description = "An unofficial template for ZHAW academic works, adapted from the official branding and guidelines." +description = "Template for ZHAW academic works, adapted from the official branding and guidelines." repository = "https://github.com/stanlrt/typst-zhaw-thesis" keywords = ["thesis", "ZHAW", "Zürcher Hochschule für Angewandte Wissenschaften", "Zürich", "academic"] categories = ["thesis", "report", "paper"] From 111c43689aa207e4a07c8791c1a66aaeeb557c07 Mon Sep 17 00:00:00 2001 From: Stanislas Laurent Date: Mon, 27 Apr 2026 00:52:49 +0200 Subject: [PATCH 30/30] docs: better desc --- packages/preview/modern-zhaw-thesis/0.4.0/README.md | 2 +- packages/preview/modern-zhaw-thesis/0.4.0/typst.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/README.md b/packages/preview/modern-zhaw-thesis/0.4.0/README.md index 355f22bd9e..89b6c859d9 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/README.md +++ b/packages/preview/modern-zhaw-thesis/0.4.0/README.md @@ -1,6 +1,6 @@ # `modern-zhaw-thesis` template -`modern-zhaw-thesis` is a comprehensive template for ZHAW academic works, adapted from the official branding and following official requirements. It supports both English and German. +`modern-zhaw-thesis` is a comprehensive template for ZHAW academic works (theses, exercises, reports...), adapted from the official branding and following official requirements. It supports both English and German. [Here's a showcase](./showcase.pdf) of how it looks like. diff --git a/packages/preview/modern-zhaw-thesis/0.4.0/typst.toml b/packages/preview/modern-zhaw-thesis/0.4.0/typst.toml index a9971cb30f..4bb9410753 100644 --- a/packages/preview/modern-zhaw-thesis/0.4.0/typst.toml +++ b/packages/preview/modern-zhaw-thesis/0.4.0/typst.toml @@ -6,7 +6,7 @@ version = "0.4.0" entrypoint = "lib.typ" authors = ["Stanislas Laurent "] license = "MIT-0" -description = "Template for ZHAW academic works, adapted from the official branding and guidelines." +description = "Comprehensive template for ZHAW academic works (theses, exercises, reports...), adapted from the official branding and guidelines." repository = "https://github.com/stanlrt/typst-zhaw-thesis" keywords = ["thesis", "ZHAW", "Zürcher Hochschule für Angewandte Wissenschaften", "Zürich", "academic"] categories = ["thesis", "report", "paper"]