pax_global_header00006660000000000000000000000064152004467600014516gustar00rootroot0000000000000052 comment=5c44c8ea6570c3ab970c51b8bf71fc37ad1d395a DCsunset-pandoc-include-5c44c8e/000077500000000000000000000000001520044676000165525ustar00rootroot00000000000000DCsunset-pandoc-include-5c44c8e/.github/000077500000000000000000000000001520044676000201125ustar00rootroot00000000000000DCsunset-pandoc-include-5c44c8e/.github/workflows/000077500000000000000000000000001520044676000221475ustar00rootroot00000000000000DCsunset-pandoc-include-5c44c8e/.github/workflows/release.yml000066400000000000000000000014221520044676000243110ustar00rootroot00000000000000name: Build and Release on: push: tags: - '*' workflow_dispatch: jobs: build-and-release: runs-on: ubuntu-latest strategy: matrix: python-version: [3.x] steps: - name: Checkout codebase uses: actions/checkout@v2 - name: Setup Python uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: Install essentials run: pip install ".[pypi]" - name: Build env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} run: | python -m build twine check dist/* twine upload --skip-existing dist/* - name: Release uses: softprops/action-gh-release@v1 DCsunset-pandoc-include-5c44c8e/.gitignore000066400000000000000000000122361520044676000205460ustar00rootroot00000000000000test/*.pdf # Created by https://www.toptal.com/developers/gitignore/api/python,vim,visualstudiocode,linux,windows,osx # Edit at https://www.toptal.com/developers/gitignore?templates=python,vim,visualstudiocode,linux,windows,osx ### Linux ### *~ # temporary files which can be created if a process still has a handle open of a deleted file .fuse_hidden* # KDE directory preferences .directory # Linux trash folder which might appear on any partition or disk .Trash-* # .nfs files are created when an open file is removed but is still being accessed .nfs* ### OSX ### # General .DS_Store .AppleDouble .LSOverride # Icon must end with two \r Icon # Thumbnails ._* # Files that might appear in the root of a volume .DocumentRevisions-V100 .fseventsd .Spotlight-V100 .TemporaryItems .Trashes .VolumeIcon.icns .com.apple.timemachine.donotpresent # Directories potentially created on remote AFP share .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk ### Python ### # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ cover/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 db.sqlite3-journal # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder .pybuilder/ target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv # For a library or package, you might want to ignore these files since the code is # intended to run in multiple environments; otherwise, check them in: # .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # poetry # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. # This is especially recommended for binary packages to ensure reproducibility, and is more # commonly ignored for libraries. # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control #poetry.lock # pdm # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. #pdm.lock # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it # in version control. # https://pdm.fming.dev/#use-with-ide .pdm.toml # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ # pytype static type analyzer .pytype/ # Cython debug symbols cython_debug/ # PyCharm # JetBrains specific template is maintained in a separate JetBrains.gitignore that can # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ ### Python Patch ### # Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration poetry.toml # ruff .ruff_cache/ # LSP config files pyrightconfig.json ### Vim ### # Swap [._]*.s[a-v][a-z] !*.svg # comment out if you don't need vector files [._]*.sw[a-p] [._]s[a-rt-v][a-z] [._]ss[a-gi-z] [._]sw[a-p] # Session Session.vim Sessionx.vim # Temporary .netrwhist # Auto-generated tag files tags # Persistent undo [._]*.un~ ### VisualStudioCode ### .vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json !.vscode/*.code-snippets # Local History for Visual Studio Code .history/ # Built Visual Studio Code Extensions *.vsix ### VisualStudioCode Patch ### # Ignore all local history of files .history .ionide ### Windows ### # Windows thumbnail cache files Thumbs.db Thumbs.db:encryptable ehthumbs.db ehthumbs_vista.db # Dump file *.stackdump # Folder config file [Dd]esktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ # Windows Installer files *.cab *.msi *.msix *.msm *.msp # Windows shortcuts *.lnk # End of https://www.toptal.com/developers/gitignore/api/python,vim,visualstudiocode,linux,windows,osx DCsunset-pandoc-include-5c44c8e/CHANGELOG.md000066400000000000000000000167301520044676000203720ustar00rootroot00000000000000# Changelog All notable changes to this project will be documented in this file. ## [1.4.4] - 2026-05-11 ### ๐Ÿ› Bug Fixes - *(66)* Refactor configuration system to support concurrent execution ### โš™๏ธ Miscellaneous Tasks - Update flake inputs - *(flake)* Remove flake-parts ## [1.4.3] - 2025-03-03 ### ๐Ÿ› Bug Fixes - Fix include line regex and code include ### ๐Ÿ“š Documentation - Added instructions to install with pipx ### ๐Ÿงช Testing - Add more complex test case ### โš™๏ธ Miscellaneous Tasks - *(release)* V1.4.3 ## [1.4.2] - 2025-02-09 ### ๐Ÿ› Bug Fixes - Avoid converting code content ### ๐Ÿงช Testing - Update test cases ### โš™๏ธ Miscellaneous Tasks - Use cliff instead of versionrc - Remove envrc and update cliff config - Add script for release - Update flake inputs - *(release)* V1.4.2 ## [1.4.1] - 2024-11-11 ### ๐Ÿ› Bug Fixes - Merge set with syntax supported by below Python 3.9 ### โš™๏ธ Miscellaneous Tasks - *(release)* 1.4.1 ## [1.4.0] - 2024-08-17 ### ๐Ÿš€ Features - Support setting custom pandoc path ### ๐Ÿ› Bug Fixes - Pass down include-entry options for path rewrite - Inherit entry entered state ### ๐Ÿ’ผ Other - Add local nix build for testing ### ๐Ÿ“š Documentation - Update description ### ๐Ÿงช Testing - Update test cases ### โš™๏ธ Miscellaneous Tasks - *(release)* 1.4.0 ## [1.3.3] - 2024-08-05 ### ๐Ÿ› Bug Fixes - Fix relative path rewrite ### ๐Ÿงช Testing - Clean up test dir - Add more test cases - Fix some test case ### โš™๏ธ Miscellaneous Tasks - Update flake inputs - Update nix devShell dependencies - Add direnv config - Update version bumper - *(release)* 1.3.3 ## [1.3.2] - 2024-05-13 ### ๐Ÿ› Bug Fixes - Should unescape underscores back from markdown strict - Allow the XML parser to recover in case of syntax errors for a more robust behavior - Fix version number ### ๐Ÿ“š Documentation - Fix changelog - Add contributing section ### โš™๏ธ Miscellaneous Tasks - *(release)* 1.3.2 ## [1.3.1] - 2024-03-31 ### ๐Ÿ› Bug Fixes - Fix file lookup by always also searching in paths provided in include-resources ### ๐Ÿ“š Documentation - Update installation doc in readme ### ๐Ÿงช Testing - Add test for nixpkgs result bin ### โš™๏ธ Miscellaneous Tasks - *(release)* 1.3.1 ## [1.3.0] - 2024-02-10 ### ๐Ÿš€ Features - Adding handling of resource-paths for includes by adding `include-resources` as meta data variable. - Adding possibility to include `XML` files while applying a `XSL` transformation - [**breaking**] Emit a warning if file not found by default ### ๐Ÿ› Bug Fixes - Merge options with default to prevent missing keys - Fix not found error for code include - Convert to strict markdown to test include line ### ๐Ÿ“š Documentation - Add docs for environment variables - Add todo items ### โš™๏ธ Miscellaneous Tasks - Fix github action - Allow manual dispatch - Add nix flake for dev environment - *(release)* 1.3.0 ## [1.2.1] - 2023-11-08 ### ๐Ÿ› Bug Fixes - Improve efficiency and refactor code ### ๐Ÿ“š Documentation - Update description of format field - Add minimum pandoc version - Add doc for special filenames ### ๐Ÿงช Testing - Add test for sepecial filenames ### โš™๏ธ Miscellaneous Tasks - Add config for venv - Update version updater - *(release)* 1.2.1 ## [1.2.0] - 2021-10-23 ### ๐Ÿš€ Features - Allow include as raw blocks ### ๐Ÿ“š Documentation - Update README ### ๐Ÿงช Testing - Add test for raw blocks ### โš™๏ธ Miscellaneous Tasks - *(release)* 1.2.0 ## [1.1.0] - 2021-08-30 ### ๐Ÿš€ Features - [**breaking**] Rewrite relative paths ### ๐Ÿ› Bug Fixes - Fix code include check ### ๐Ÿšœ Refactor - Improve modularization ### ๐Ÿ“š Documentation - Add description of `rewrite-path` ### โš™๏ธ Miscellaneous Tasks - Update gitignore - *(release)* 1.1.0 ## [1.0.1] - 2021-08-27 ### ๐Ÿ› Bug Fixes - Fix attribute error ### ๐Ÿšœ Refactor - Remove entry point ### ๐Ÿงช Testing - Fix module import - Fix run.py - Update debug ### โš™๏ธ Miscellaneous Tasks - Add automated build - Fix twine config - *(release)* 1.0.1 ## [1.0.0] - 2021-08-26 ### ๐Ÿš€ Features - [**breaking**] Change parsing logic - Move name and config parsing - Support options for partial include - Increment section levels of included file - Allow negative line numbers - Add type for config key - Improve snippet include - Ignore rest of line when including - Add dedent - Add support for different formats ### ๐Ÿ› Bug Fixes - Fix invalid indexing - Fix a typo - Fix a bug - Add missing modules - Add package import in __init__ - Fix setup.py - Rename dir name - Fix module import ### ๐Ÿšœ Refactor - Use literal_eval to lint config ### ๐Ÿ“š Documentation - Update README - Update README - Update README ### ๐Ÿงช Testing - Update test files - Add tests for options - Add more cases - Add more formats ### โš™๏ธ Miscellaneous Tasks - Use packages instead of pymodules - *(release)* 1.0.0 ## [0.8.7] - 2021-04-11 ### ๐Ÿ› Bug Fixes - Remove unnecessary dependencies ### โš™๏ธ Miscellaneous Tasks - *(release)* 0.8.7 ## [0.8.6] - 2021-04-11 ### ๐Ÿ› Bug Fixes - Fix raw header-includes ### ๐Ÿ“š Documentation - Update README - Fix a typo ### ๐Ÿงช Testing - Add header-includes ### โš™๏ธ Miscellaneous Tasks - *(release)* 0.8.6 ## [0.8.5] - 2021-03-09 ### ๐Ÿš€ Features - Add code including ### ๐Ÿ› Bug Fixes - Pass pandoc_options only when necessary ### ๐Ÿ“š Documentation - Update README about pandoc options ### ๐Ÿงช Testing - Update test for code including ### โš™๏ธ Miscellaneous Tasks - *(release)* 0.8.5 ## [0.8.4] - 2020-11-25 ### ๐Ÿงช Testing - Add test for markdown table ### โš™๏ธ Miscellaneous Tasks - Add gitignore - *(release)* 0.8.4 ## [0.8.3] - 2020-09-30 ### ๐Ÿ› Bug Fixes - [**breaking**] Fix the option name ### ๐Ÿ“š Documentation - Add docs for include-order ### โš™๏ธ Miscellaneous Tasks - Add version updater for standard version - *(release)* 0.8.3 ## [0.8.2] - 2020-09-29 ### ๐Ÿ› Bug Fixes - [**breaking**] Remove default extension ### ๐Ÿ“š Documentation - Update README ### โš™๏ธ Miscellaneous Tasks - Bump version to v0.8.2 - *(release)* 0.8.2 ## [0.8.1] - 2020-09-29 ### ๐Ÿ› Bug Fixes - Fix dependencies ### ๐Ÿ“š Documentation - Update changelog ## [0.8.0] - 2020-09-29 ### ๐Ÿš€ Features - Add support for shell-style wildcards ### ๐Ÿ“š Documentation - Update changelog - Update CHANGELOG ### ๐Ÿงช Testing - Update test ### โš™๏ธ Miscellaneous Tasks - Bump version to v0.8.0 ## [0.7.3] - 2020-06-27 ### ๐Ÿ› Bug Fixes - Fix deprecated load function ### ๐Ÿ“š Documentation - Update changelog ### โš™๏ธ Miscellaneous Tasks - Bump version to v0.7.3 ## [0.7.2] - 2020-04-30 ### โš™๏ธ Miscellaneous Tasks - Bump to v0.7.2 ## [0.7.1] - 2020-04-30 ### ๐Ÿ› Bug Fixes - Remove temp file if it exists ### ๐Ÿ“š Documentation - Add changelog - Add descriptions for pandoc-options - Fix a typo - Fix the position of some text ### ๐Ÿงช Testing - Update Makefile ### โš™๏ธ Miscellaneous Tasks - Add .egg to .gitignore - Bump to v0.7.1 ## [0.7.0] - 2020-02-26 ### ๐Ÿš€ Features - Add pandoc-options ### ๐Ÿงช Testing - Add test for pandoc-options ### โš™๏ธ Miscellaneous Tasks - Update version to 0.7.0 ## [0.6.3] - 2020-01-07 ### ๐Ÿ› Bug Fixes - Remove debug info ### โš™๏ธ Miscellaneous Tasks - Update version ## [0.6.2] - 2020-01-07 ### ๐Ÿ› Bug Fixes - Fix latex in header ### ๐Ÿงช Testing - Add test for latex in headers ### โš™๏ธ Miscellaneous Tasks - Update version number ## [0.4.0] - 2019-07-15 DCsunset-pandoc-include-5c44c8e/LICENSE000066400000000000000000000020511520044676000175550ustar00rootroot00000000000000MIT License Copyright (c) 2019 DCsunset Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. DCsunset-pandoc-include-5c44c8e/README.md000066400000000000000000000255241520044676000200410ustar00rootroot00000000000000# pandoc-include [![PyPI](https://img.shields.io/pypi/v/pandoc-include)](https://pypi.org/project/pandoc-include/) [![PyPI - Downloads](https://img.shields.io/pypi/dm/pandoc-include)](https://pypi.org/project/pandoc-include/) [![GitHub](https://img.shields.io/github/license/DCsunset/pandoc-include?color=blue)](https://github.com/DCsunset/pandoc-include) Pandoc filter to allow including files and headers in a document. ## Features * Include as raw blocks * Indent and dedent included contents * Partial include: Allow including only parts of the file using options * Code include: Allow using `!include` in code blocks * Unix style pathname * Recursive include: It depends on `include-entry` header to work * Yaml header Merging: When an included file has its header, it will be merged into the current header. If there's a conflict, the original header of the current file remains. * Header include: Use `!include-header file.yaml` to include Yaml header from file. ## TODO - [ ] Write options to a tmp file and pass the filename by environment variable ## Installation ### Using pip To install the latest published version: ``` pip install --user pandoc-include ``` To install the current (development) version hosted on the repository, use ``` pip install --upgrade --force --no-cache git+https://github.com/DCsunset/pandoc-include ``` To check the version currently installed: ``` pip show pandoc-include ``` ### Using pipx If `pip install` give you a `error: externally-managed-environment` error message, you may bypass this restriction using [pipx](https://github.com/pypa/pipx). To install the latest published version: ``` pipx install pandoc-include ``` To install the current (development) version hosted on the repository, use ``` pipx install --force git+https://github.com/DCsunset/pandoc-include ``` To check the version currently installed, inspect the output of ``` pipx list ``` ### Using Nix `pandoc-include` is included in the Nixpkgs. Simply add the package to your NixOS config or use the following command: ```sh # install in your profile nix-env -iA nixpkgs.pandoc-include # Or use it temporarily in a shell nix-shell -p pandoc-include ``` ## Usage **Note**: you should use `pandoc` with version greater than or equal to `2.17`, which is the minimum version that is tested. ### Command To use this filter, add to pandoc command ``` pandoc input.md --filter pandoc-include -o output.pdf ``` ### Syntax Each include statement has its own line and has the syntax: ``` !include somefolder/somefile !include-header file.yaml ``` Or ``` $include somefolder/somefile $include-header file.yaml ``` Each include statement must be in its own paragraph. That is, in its own line and separated by blank lines. For code include, use `!include` statement in a code block: ````markdown ```cpp !include filename.cpp ``` ```` The path can be either absolute or relative to the **current** file's directory. Besides, [unix-style](https://en.wikipedia.org/wiki/Glob_(programming)) pathname can used. (If the include statement is used in an included file, then the path is absolute or relative to the included file itself.) If there are special characters in the filename, use quotes: ``` !include "filename with space" !include 'filename"with"quotes' ``` If the filename contains special sequences in markdown, use backquotes: (**Note**: this also applies to include statment in code blocks) ``` !include `__filename__` ``` The second syntax may lead to wrong highlighting when using a markdown editor. If it happens, use the first syntax. Also make sure that there are no circular includes. The `!include` command also supports options: ``` !include`=, =` some_file ``` For example, to specify line ranges in options: ``` !include`startLine=1, endLine=10` some_file ``` Or to include snippets with enclosed delimiters: ``` !include`snippetStart="", snippetEnd=""` some_file ``` Or including `xml` files transforming them with `XSLT`: ``` !include`format="markdown", xslt="xslt/api.xslt"` main_8h.xml ``` where `` and `` are two strings occuring in `some_file`. If multiple occurences of `` or `` are in `some_file`, then pandoc-include will include all the blocks between the delimiters. If `snippetEnd` or `snippetStart` is not found or specified, it will include till the end or from the start. Supported options: | Key | Value | Description | | --- | ----- | ----------- | | startLine | `int` | Start line of include (default: 1) | | endLine | `int` | End line of include (default: number of the last line) | | snippetStart | `str` | Start delimiter of a snippet | | snippetEnd | `str` | End delimiter of a snippet | | includeSnippetDelimiters | `bool` | Whether to include the delimiters (default: `False`) | | incrementSection | `int` | Increment (or decrement) section levels of include | | dedent | `int` | Remove n leading whitespaces of each line where possible (`-1` means remove all) | | format | `str` | The input format of the included file (see `pandoc --list-input-formats`). It will be automatically deduced from the path if not set. (Hint: extensions can also be enabled here) | | raw | `str` | Include as raw block. The arg is the format (`latex`, `html`...) | | xslt | `str` | `XSLT` file to use for transforming the given `.xml` file (This is intended to be used with Doxygen's `xml` output | **Note**: the values above are parsed as Python literals. So `str` should be quoted like `'xxx'` or `"xxx"`; `bool` should be `True` or `False`. ### Header options ``` --- include-entry: '' include-order: 'natural' include-resources: '[:]' rewrite-path: true pandoc-options: - --filter=pandoc-include - --- ``` #### `include-entry` The `include-entry` option is to make recursive includes work. Its value is a path relative to current working directory or absolute where the entry file (the initial file) locates. It should be placed in the entry file only, not in the included files. It is optional and the default `include-entry` value is `.`. For example, to compile a file in current directory, no header is needed: ``` pandoc test.md --filter pandoc-include -o test.pdf ``` However, to compile a file not in current directory, like: ``` pandoc dir/test.md --filter pandoc-include -o test.pdf ``` The header should now be set to: `include-entry: 'dir'`. #### `include-order` The `include-order` options is to define the order of included files if the unix-style pathname matches multiple files. The default value is `natural`, which means using the [natural order](https://en.wikipedia.org/wiki/Natural_sort_order). Other possible values are `alphabetical` and `default`. The `default` means to keep the order returned by the Python `glob` module. #### `include-resources` The `include-resources` can be used to simplify relative paths of include statements by searching in the given paths for files with relative paths when otherwise not found. Given following directory structure and `pandoc` command: ``` main.md examples/ hello-world.c content/ chapter1/ chapter01.md image.png chapter2/ chapter02.md image.png ``` ``` $ pandoc --metadata include-resources=examples/ ... main.md ``` This will make it possible to have following include line in `chapter01.md` and `chapter02.md` ````markdown ```cpp !include hello-world.c ``` ```` Instead of: ````markdown ```cpp !include ../../examples/hello-world.c ``` ```` This is most useful if some resources, e.g. source code or Doxygen output, is located in an external directory structure. #### `rewrite-path` The `rewrite-path` option is a boolean value to configure whether the relative paths of images should be rewritten to paths relative to the root file. The default value is `true`. For example, consider the following directory structure: ``` main.md content/ chapter01.md image.png ``` Suppose `chapter01.md` uses the image `image.png`. It should use `![Image](image.png)` if `rewrite-path` is `true`, or `![Image](content/image.png)` if `rewrite-path` is `false`. #### `pandoc-options` The `pandoc-options` option is **a list** to specify the pandoc options when recursively processing included files. By default, the included file will **inherit** the `pandoc-options` from its parent file, **unless** specified in its own file. To make the recursive includes work, `--filter=pandoc-include` is **necessary**. The default value of `pandoc-options` is: ``` pandoc-options: - --filter=pandoc-include ``` ## Examples ### File include File include can be used to separate chapters into different files, or include some latex files: ```markdown --- title: Article author: Author toc: true --- !include chapters/chap01.md !include chapters/chap02.md !include chapters/chap03.md !include`raw="latex"` data/table.tex ``` ### Header include For header include, it is useful to define a header template and include it in many files. For example, in the `header.yaml`, we can define basic info: ```yaml name: xxx school: yyy email: zzz ``` In the `main.md`, we can extend the header: ```markdown --- title: Title --- !include-header header.yaml # Section Body ``` The `main.md` then is equivalent to the follow markdown: ```markdown --- title: Title name: xxx school: yyy email: zzz --- # Section Body ``` ### Environment Variables The following environment variables can be set to change the default behaviour: | Key | Value | Description | |--------------------------------|------------|----------------------------------------------| | PANDOC_INCLUDE_NOT_FOUND_ERROR | `0` or `1` | Emit an error if file not found (default: 0) | ## Development To setup local dev environment, you can use python `venv` to create a virtual environment from `requirements.txt`. Or if you use Nix, you can simply run `nix develop`. ## Contributing Contributions are welcome if you find any bugs or want to add some features. Please open an issue for discussion first if it's a big change (e.g. a new feature) or if you are uncertain about it. Please follow [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) for your commit messages so that the changelog can be generated automatically. ## Trouble Shooting ### Command-line options The pandoc command-line options are processed in order. If you want some options to be applied in included files, make sure the `--filter pandoc-include` option is specified before those options. For example, use bibliography in the included files: ``` pandoc main.md --filter pandoc-include --citeproc --bibliography=ref.bib -o main.pdf ``` ### Executable not found For some operating systems, the path may not be set correctly after installation. Make sure that the `pandoc-include` executable is put in the directory which is in **the PATH environment**. ## License MIT License DCsunset-pandoc-include-5c44c8e/cliff.toml000066400000000000000000000062561520044676000205430ustar00rootroot00000000000000# git-cliff ~ default configuration file # https://git-cliff.org/docs/configuration # # Lines starting with "#" are comments. # Configuration options are organized into tables and keys. # See documentation for more information on available options. [changelog] # template for the changelog header header = """ # Changelog\n All notable changes to this project will be documented in this file.\n """ # template for the changelog body # https://keats.github.io/tera/docs/#introduction body = """ {% if version %}\ ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} {% else %}\ ## [unreleased] {% endif %}\ {% for group, commits in commits | group_by(attribute="group") %} ### {{ group | striptags | trim | upper_first }} {% for commit in commits %} - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\ {% if commit.breaking %}[**breaking**] {% endif %}\ {{ commit.message | upper_first }}\ {% endfor %} {% endfor %}\n """ # template for the changelog footer footer = """ """ # remove the leading and trailing s trim = true # postprocessors postprocessors = [ # { pattern = '', replace = "https://github.com/orhun/git-cliff" }, # replace repository URL ] # render body even when there are no releases to process # render_always = true # output file path # output = "CHANGELOG.md" [git] # parse the commits based on https://www.conventionalcommits.org conventional_commits = true # filter out the commits that are not conventional filter_unconventional = true # process each line of a commit as an individual commit split_commits = false # regex for preprocessing the commit messages commit_preprocessors = [ # Replace issue numbers #{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](/issues/${2}))"}, # Check spelling of the commit with https://github.com/crate-ci/typos # If the spelling is incorrect, it will be automatically fixed. #{ pattern = '.*', replace_command = 'typos --write-changes -' }, ] # regex for parsing and grouping commits commit_parsers = [ { message = "^feat", group = "๐Ÿš€ Features" }, { message = "^fix", group = "๐Ÿ› Bug Fixes" }, { message = "^doc", group = "๐Ÿ“š Documentation" }, { message = "^perf", group = "โšก Performance" }, { message = "^refactor", group = "๐Ÿšœ Refactor" }, { message = "^style", group = "๐ŸŽจ Styling" }, { message = "^test", group = "๐Ÿงช Testing" }, { message = "^chore\\(release\\): prepare for", skip = true }, { message = "^chore\\(deps.*\\)", skip = true }, { message = "^chore\\(pr\\)", skip = true }, { message = "^chore\\(pull\\)", skip = true }, { message = "^chore|^ci", group = "โš™๏ธ Miscellaneous Tasks" }, { body = ".*security", group = "๐Ÿ›ก๏ธ Security" }, { message = "^revert", group = "โ—€๏ธ Revert" }, { message = ".*", group = "๐Ÿ’ผ Other" }, ] # filter out the commits that are not matched by commit parsers filter_commits = false # sort the tags topologically topo_order = false # sort the commits inside sections by oldest/newest order sort_commits = "oldest" DCsunset-pandoc-include-5c44c8e/flake.lock000066400000000000000000000027711520044676000205150ustar00rootroot00000000000000{ "nodes": { "flake-parts": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" }, "locked": { "lastModified": 1777988971, "narHash": "sha256-qIoWPDs+0/8JecyYgE3gpKQxW/4bLW/gp45vow9ioCQ=", "owner": "hercules-ci", "repo": "flake-parts", "rev": "0678d8986be1661af6bb555f3489f2fdfc31f6ff", "type": "github" }, "original": { "owner": "hercules-ci", "repo": "flake-parts", "type": "github" } }, "nixpkgs": { "locked": { "lastModified": 1777954456, "narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=", "owner": "nixos", "repo": "nixpkgs", "rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1", "type": "github" }, "original": { "owner": "nixos", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-lib": { "locked": { "lastModified": 1777168982, "narHash": "sha256-GOkGPcboWE9BmGCRMLX3worL4EMnsnG8MyKmXNeYuhQ=", "owner": "nix-community", "repo": "nixpkgs.lib", "rev": "f5901329dade4a6ea039af1433fb087bd9c1fe14", "type": "github" }, "original": { "owner": "nix-community", "repo": "nixpkgs.lib", "type": "github" } }, "root": { "inputs": { "flake-parts": "flake-parts", "nixpkgs": "nixpkgs" } } }, "root": "root", "version": 7 } DCsunset-pandoc-include-5c44c8e/flake.nix000066400000000000000000000024231520044676000203550ustar00rootroot00000000000000{ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; }; outputs = inputs: let inherit (inputs.nixpkgs) lib; systems = [ "x86_64-linux" "aarch64-linux" ]; forAllSystems = f: lib.genAttrs systems (system: f ( import inputs.nixpkgs ({ inherit system; }) )); in { devShells = forAllSystems (pkgs: let deps = with pkgs; [ (pandoc-include.overrideAttrs (_: { src = ./.; name = "pandoc-include-master"; })) (python3.withPackages (ps: with ps; [ panflute natsort lxml build ])) ]; in { default = pkgs.mkShell { packages = deps; }; }); apps = forAllSystems (pkgs: { release = { type = "app"; program = lib.getExe (pkgs.writeShellScriptBin "release" '' set -e ver=$(git cliff --bumped-version) ver=''${ver:1} sed -i "s/^version = \".*\"/version = \"$ver\"/" pyproject.toml git cliff --bump -o CHANGELOG.md git add -A git commit -m "chore(release): v$ver" git tag "v$ver" ''); }; }); }; } DCsunset-pandoc-include-5c44c8e/pandoc_include/000077500000000000000000000000001520044676000215215ustar00rootroot00000000000000DCsunset-pandoc-include-5c44c8e/pandoc_include/__init__.py000066400000000000000000000000001520044676000236200ustar00rootroot00000000000000DCsunset-pandoc-include-5c44c8e/pandoc_include/config.py000066400000000000000000000130211520044676000233350ustar00rootroot00000000000000import re import ast import os import json import tempfile import uuid import panflute as pf CONFIG_KEYS = { "startLine": int, "endLine": int, "snippetStart": str, "snippetEnd": str, "xslt": str, "includeSnippetDelimiters": bool, "incrementSection": int, "dedent": int, "format": str, "raw": str } def parseBoolValue(val): # use 1 or 0 (otherwise default to true if not empty) return val and val != "0" # Keys for env config in a singleton pattern to ensure consistent access # across parent and child processes without re-reading environment variables # multiple times. This also allows for future expansion of config options # without changing the interface. class Env: _instance = None def __new__(cls, *args, **kwargs): if cls._instance is None: cls._instance = super().__new__(cls) return cls._instance def __init__(self): # guard against reinitialisation if hasattr(self, "_initialized"): return # Throw error when included file not found self.NotFoundError = parseBoolValue(os.environ.get("PANDOC_INCLUDE_NOT_FOUND_ERROR", "0")) # Pandoc binary for parsing included files self.PandocBin = os.environ.get("PANDOC_BIN") or None # The identifier for this run (unique per execution, used for temp file naming) # Generate a unique run ID if not already set (e.g. by a parent process) to allow # multiple concurrent runs without conflict. Use the environment to ensure sub-process # can access the same run ID. This also allows the run ID to be set externally if needed. if os.environ.get("PANDOC_INCLUDE_RUN_ID") is None: os.environ["PANDOC_INCLUDE_RUN_ID"] = str(uuid.uuid4()) self.RunId = os.environ["PANDOC_INCLUDE_RUN_ID"] # Temp file for storing options and state between parent and child processes. # Use environment variable to allow override and ensure sub-processes can access # the same path. Default to a unique file in the system temp directory to avoid # conflicts between concurrent runs and ensure cleanup after execution. if os.environ.get("PANDOC_INCLUDE_TEMP_FILE") is None: os.environ["PANDOC_INCLUDE_TEMP_FILE"] = os.path.join(tempfile.gettempdir(), '.temp.pandoc-include.' + self.RunId) self.TempFile = os.environ.get("PANDOC_INCLUDE_TEMP_FILE") self._initialized = True def GetEnv(): return Env._instance or Env() def parseConfig(text): regex = re.compile( r''' (?P\w+)= # Key consists of only alphanumerics (?P["'`]?) # Optional quote character. (?P.*?) # Value is a non greedy match (?P=quote) # Closing quote equals the first. ($|,) # Entry ends with comma or end of string ''', re.VERBOSE ) config = {} for match in regex.finditer(text): key = match.group('key') if key in CONFIG_KEYS: # Include the original quotes raw_value = f"{match.group('quote')}{match.group('value')}{match.group('quote')}" try: value = ast.literal_eval(raw_value) except: raise ValueError(f"Invalid config: {key}={raw_value}") if not isinstance(value, CONFIG_KEYS[key]): raise ValueError(f"Invalid value type: {key}={raw_value}") config[key] = value else: pf.debug("[Warn] Invalid config key: " + key) return config defaultOptions = { "include-entry": { "path": ".", "entered": False }, "current-path": ".", "include-resources": ".", "process-path": None, "include-order": "natural", "rewrite-path": True, "pandoc-options": ["--filter=pandoc-include"] } def parseOptions(doc): if os.path.isfile(Env.GetEnv().TempFile): with open(Env.GetEnv().TempFile, 'r') as f: # merge with default options to prevent missing keys options = { **defaultOptions, **json.load(f) } else: # entry file (default values) options = defaultOptions.copy() # include entry include_entry = doc.get_metadata('include-entry') if include_entry is not None: if not options["include-entry"]["entered"]: options['include-entry'] = dict(path=include_entry, entered=False) else: pf.debug("[WARN] include-entry specified multiple times") # pandoc options pandoc_options = doc.get_metadata('pandoc-options') if pandoc_options is not None: # Replace em-dash to double dashes in smart typography for i in range(len(pandoc_options)): pandoc_options[i] = pandoc_options[i].replace('\u2013', '--') options['pandoc-options'] = pandoc_options # order of included files (natural, alphabetical, shell_default) include_order = doc.get_metadata("include-order") if include_order is not None: options["include-order"] = include_order # rewrite path rewrite_path = doc.get_metadata("rewrite-path") if rewrite_path is not None: options["rewrite-path"] = rewrite_path # resource path resource_path = doc.get_metadata("include-resources") if resource_path is not None: options["include-resources"] = resource_path # process path process_path = os.getcwd() if options["process-path"] is None: options["process-path"] = process_path return options DCsunset-pandoc-include-5c44c8e/pandoc_include/format_heuristics.py000066400000000000000000000031121520044676000256220ustar00rootroot00000000000000import os extensionFormats = { ".adoc" : "asciidoc", ".asciidoc" : "asciidoc", ".context" : "context", ".ctx" : "context", ".db" : "docbook", ".doc" : "doc", ".docx" : "docx", ".dokuwiki" : "dokuwiki", ".epub" : "epub", ".fb2" : "fb2", ".htm" : "html", ".html" : "html", ".icml" : "icml", ".json" : "json", ".latex" : "latex", ".lhs" : "markdown+lhs", ".ltx" : "latex", ".markdown" : "markdown", ".mkdn" : "markdown", ".mkd" : "markdown", ".mdwn" : "markdown", ".mdown" : "markdown", ".Rmd" : "markdown", ".md" : "markdown", ".ms" : "ms", ".muse" : "muse", ".native" : "native", ".odt" : "odt", ".opml" : "opml", ".org" : "org", ".pdf" : "pdf", ".pptx" : "pptx", ".roff" : "ms", ".rst" : "rst", ".rtf" : "rtf", ".s5" : "s5", ".t2t" : "t2t", ".tei" : "tei", ".tei.xml" : "tei", ".tex" : "latex", ".texi" : "texinfo", ".texinfo" : "texinfo", ".text" : "markdown", ".textile" : "textile", ".txt" : "markdown", ".wiki" : "mediawiki", ".xhtml" : "html", ".ipynb" : "ipynb", ".csv" : "csv", ".bib" : "biblatex", ".xml" : "xml", ".xslt" : "xslt", } def formatFromPath(path: str): ext = os.path.splitext(path)[1] if ext in extensionFormats: return extensionFormats[ext] return None DCsunset-pandoc-include-5c44c8e/pandoc_include/main.py000066400000000000000000000315561520044676000230310ustar00rootroot00000000000000""" Panflute filter to allow file includes """ import os import json import glob import re import itertools from pathlib import Path import panflute as pf import lxml.etree as xml from natsort import natsorted from urllib.parse import urlparse from .format_heuristics import formatFromPath from .config import parseConfig, parseOptions, Env # Global variables INCLUDE_INVALID = 0 INCLUDE_FILE = 1 INCLUDE_HEADER = 2 # Regex patterns RE_IS_INCLUDE_HEADER = r"(\\?(!|\$))include-header" RE_IS_INCLUDE_LINE = r"^(\\?(!|\$))include(-header)?" RE_INCLUDE_PATTERN = r"^(\\?(!|\$))include(-header)?(\`(?P[^\`]+(, ?[^\`]+)*)\`)?\s+((?P[^\`\'\"]+)|([\`\'\"])(?P.+)\9)$" # Inherited options options = None # parse env config Env.GetEnv() def extract_info(rawString): global options includeType = INCLUDE_INVALID config = {} filename = None # wildcards '*' are escaped which needs to be undone because of path globing # convert_text has a tendency to produce multiline text which can not be matched correctly # Also here we should unescape underscores from markdown_strict. rawString = rawString.replace('\\*', '*').replace('\n', ' ').replace('\\_', '_') if re.match(RE_IS_INCLUDE_HEADER, rawString): includeType = INCLUDE_HEADER else: includeType = INCLUDE_FILE matches = re.match(RE_INCLUDE_PATTERN, rawString) if not matches: # Pattern was not able to extract args and file glob... Hence, abort raise ValueError(f"Unable to extract info from include line {rawString}") groups = matches.groupdict() # Get filename from Regex capture group filename = groups.get('fname', None) if not filename: filename = groups.get('fnamealt', None) # Get args from RegEx capture group if 'args' in groups and groups['args']: config = parseConfig(groups['args']) if not filename: raise ValueError(f"Unable to extract info from include line {rawString}") return includeType, filename, config def is_include_line(elem, raw=False): # Revert to Markdown for regex matching if not raw: rawString = pf.convert_text( elem, input_format='panflute', output_format='markdown_strict', standalone=True, pandoc_path=Env.GetEnv().PandocBin ) else: rawString = elem includeType = INCLUDE_INVALID config = {} name = None if re.match(RE_IS_INCLUDE_LINE, rawString): includeType, name, config = extract_info(rawString) return includeType, name, config def is_code_include(elem): includeType, name, config = is_include_line(elem.text.strip(), raw=True) if includeType == INCLUDE_HEADER: pf.debug("[WARN] Invalid !include-header in code blocks") includeType = INCLUDE_INVALID return includeType, name, config # Skip whitespaces until newline def skipWhitespaces(content): whiteSpaceReg = re.compile(r"[^\s]|\n") m = whiteSpaceReg.search(content) if m == None: return None pos = m.span()[0] if content[pos] == "\n": pos += 1 return pos def removeLeadingWhitespaces(s, num): regex = re.compile(r"[^\s]") m = regex.search(s) if m == None: return pos = m.span()[0] if num < 0: return s[pos:] else: return s[min(pos, num):] def dedent(content: str, num): lines = content.split("\n") return list(map(lambda s: removeLeadingWhitespaces(s, num), lines)) def findFile(filename: str): resource_paths = options['include-resources'].split(':') files = glob.glob(filename, recursive=True) if len(files) == 0 and resource_paths: for resource_path in resource_paths: if os.path.isabs(resource_path): files += glob.glob(os.path.normpath(os.path.join(resource_path, filename)), recursive=True) else: files += glob.glob(os.path.normpath(os.path.join(options['process-path'], resource_path, filename)), recursive=True) return files def read_file(filename, config: dict): with open(filename, encoding="utf-8") as f: content = f.read() if "xslt" in config: xsltParam = config.get("xslt", None) if not xsltParam: raise ValueError(f"Invalid value for xsl file: '{xsltParam}'") xslTransformerFile = findFile(xsltParam) if len(xslTransformerFile) == 0: raise ValueError(f"xsl transformer file not found: '{xsltParam}'") elif len(xslTransformerFile) > 1: raise ValueError(f"Ambiguous xsl transformer file: '{xsltParam}'") else: xslTransformerFile = xslTransformerFile[0] pf.debug(f"[INFO] xslt transform {filename} with {xslTransformerFile}") dom = xml.parse(filename, xml.XMLParser(recover=True)) xslt = xml.parse(xslTransformerFile) if not xslt: raise IOError("Unable to read XSLT file '{xslt}'") transform = xml.XSLT(xslt) transformedDom = transform(dom) content = str(transformedDom) if "startLine" in config or "endLine" in config: lines = content.split("\n") startLine = config.get("startLine", 1) - 1 endLine = config.get("endLine", len(lines)) # count from the end of file if startLine < 0: startLine += len(lines) if endLine < 0: endLine += len(lines) + 1 result = lines[startLine:endLine] content = "\n".join(result) if "snippetStart" in config or "snippetEnd" in config: start = 0 length = len(content) snippets = [] includeSnippetDelimiters = config.get("includeSnippetDelimiters", False) while start < length: if "snippetStart" in config: pos = content.find(config["snippetStart"], start) else: pos = -1 if pos != -1: start = pos else: # If not found for the first time, start from the beginning if start != 0: break if not includeSnippetDelimiters: start += len(config.get("snippetStart", "")) # Skip whitespaces until newline pos = skipWhitespaces(content[start:]) if pos == None: break start += pos if "snippetEnd" in config: end = content.find(config["snippetEnd"], start) else: end = -1 # no snippetEnd means the end of file if end == -1: snippets.append(content[start:]) break if includeSnippetDelimiters: end += len(config.get("snippetEnd", "")) subEnd = end else: # Skip whitespaces until newline pos = skipWhitespaces(content[start:end][::-1]) if pos == None: subEnd = end else: subEnd = end - pos snippets.append(content[start:subEnd]) start = end content = "\n".join(snippets) if "dedent" in config: content = "\n".join(dedent(content, config["dedent"])) return content def action(elem, doc): global options # Try to read inherited options from temp file if options is None: options = parseOptions(doc) # Change dir to entry file entry = options["include-entry"] if not entry["entered"]: os.chdir(entry["path"]) entry["entered"] = True # --- Include statement --- if isinstance(elem, pf.Para): includeType, name, config = is_include_line(elem) if includeType == INCLUDE_INVALID: return files = findFile(name) if len(files) == 0: msg = f"Included file not found: {name}" if Env.GetEnv().NotFoundError: raise IOError(msg) else: pf.debug(f"[WARNING] {msg}") return # order include_order = options['include-order'] if include_order == 'natural': files = natsorted(files) elif include_order == 'alphabetical': files = sorted(files) elif include_order == 'default': pass else: raise ValueError('Invalid file order: ' + include_order) elements = [] for fn in files: pf.debug(f"[INFO] including file '{fn}'", end="", flush=True) if not os.path.isfile(fn): raise IOError(f"Included file not found: {fn}") pf.debug(f"... ok") raw = read_file(fn, config) # Save current path cur_path = os.getcwd() # Change to included file's path so that sub-include's path is correct target = os.path.dirname(fn) # Empty means relative to current dir if not target: target = '.' currentPath = options["current-path"] options["current-path"] = os.path.normpath(os.path.join(currentPath, target)) os.chdir(target) # pass options by temp files with open(Env.GetEnv().TempFile, 'w+') as f: json.dump(options, f) # Add recursive include support new_elems = None new_metadata = None if includeType == 1: # Set file format if "format" in config: fmt = config["format"] else: fmt = formatFromPath(fn) # default use markdown if fmt is None: fmt = "markdown" # copy since pf will modify this argument pandoc_options = list(options["pandoc-options"]) if "raw" in config: rawFmt = config.get("raw") # raw block new_elems = [pf.RawBlock(raw, format=rawFmt)] else: new_doc = pf.convert_text( raw, input_format=fmt, standalone=True, extra_args=pandoc_options, pandoc_path=Env.GetEnv().PandocBin ) new_metadata = new_doc.get_metadata(builtin=False) new_elems = new_doc.content.list else: # Read header from yaml # Use pf to preserve all info new_metadata = pf.convert_text( f"---\n{raw}\n---", standalone=True, pandoc_path=Env.GetEnv().PandocBin ).get_metadata(builtin=False) # Merge metadata if new_metadata is not None: for key in new_metadata.content: if not key in doc.metadata.content: doc.metadata[key] = new_metadata[key] # delete temp file (the file might have been deleted in subsequent executions) if os.path.exists(Env.GetEnv().TempFile): os.remove(Env.GetEnv().TempFile) # Restore to current path os.chdir(cur_path) options["current-path"] = currentPath # incremement headings increment = config.get('incrementSection', 0) if increment: for new_elem in new_elems: if isinstance(new_elem, pf.Header): new_elem.level += increment if new_elems != None: elements += new_elems return elements # --- Code Blocks --- elif isinstance(elem, pf.CodeBlock): includeType, name, config = is_code_include(elem) if includeType == 0: return # Enable shell-style wildcards files = findFile(name) if len(files) == 0: msg = f"Included file not found: {name}" if Env.GetEnv().NotFoundError: raise IOError(msg) else: pf.debug(f"[WARNING] {msg}") return codes = [] for fn in files: codes.append(read_file(fn, config)) elem.text = "\n".join(codes) # --- Images --- elif isinstance(elem, pf.Image): rewritePath = options.get("rewrite-path", True) if not rewritePath: return url = elem.url # try to parse the url first result = urlparse(url) # url if result.scheme != "": return # absolute path if os.path.isabs(url): return # rewrite relative path elem.url = str( Path(options["include-entry"]["path"]) .joinpath(options["current-path"]) .joinpath(url) ) def main(doc=None): return pf.run_filter(action, doc=doc) if __name__ == '__main__': main() DCsunset-pandoc-include-5c44c8e/pyproject.toml000066400000000000000000000016261520044676000214730ustar00rootroot00000000000000[build-system] requires = ["setuptools"] build-backend = "setuptools.build_meta" [tool.setuptools] packages = ["pandoc_include"] [project] name = "pandoc-include" version = "1.4.4" description = "Pandoc filter to allow file and header includes" readme = "README.md" authors = [{name = "DCsunset", email = "DCsunset@protonmail.com"}] license = {text = "MIT"} requires-python = ">=3.7" keywords = ["pandoc", "pandocfilters", "markdown", "latex"] classifiers = [ 'Environment :: Console', 'Intended Audience :: End Users/Desktop', 'Programming Language :: Python', 'License :: OSI Approved :: MIT License' ] dependencies = [ "panflute>=2.0.5", "natsort>=7", "lxml>=4.9.2" ] [project.optional-dependencies] pypi = [ "build", "twine", "wheel" ] [project.urls] homepage = 'https://github.com/DCsunset/pandoc-include' [project.scripts] pandoc-include = "pandoc_include.main:main" DCsunset-pandoc-include-5c44c8e/requirements.txt000066400000000000000000000000261520044676000220340ustar00rootroot00000000000000panflute natsort lxml DCsunset-pandoc-include-5c44c8e/test/000077500000000000000000000000001520044676000175315ustar00rootroot00000000000000DCsunset-pandoc-include-5c44c8e/test/1.cpp000066400000000000000000000001231520044676000203710ustar00rootroot00000000000000int main() { // Start int a = 1; int b = 2; // End return 0; } DCsunset-pandoc-include-5c44c8e/test/Makefile000066400000000000000000000014761520044676000212010ustar00rootroot00000000000000BIN ?= pandoc-include test.pdf: test.md ../pandoc_include/main.py pandoc $< --filter $(BIN) -o test.pdf # pandoc $< -t json | python3 run.py | pandoc -f json -o test.pdf #pandoc $< --filter pandoc-include -o test-out.pdf #pandoc test.md --filter pandoc-include -o test-out.md #pandoc entryTest/test.md --filter pandoc-include -o entryTest/test-out.md entryTest.pdf: entryTest/test.md ../pandoc_include/main.py pandoc $< --filter pandoc-include -o entry-test.pdf .PHONY: debug debug: # pandoc debug.md -t json | python3 run.py | pandoc -f json -o debug.pdf pandoc debug.md --filter pandoc-include -o debug.pdf .PHONY: clean clean: rm -f test-out.md test-out.pdf test.pdf included/test.out debug.pdf .PHONY: nixpkgs nixpkgs: pandoc test.md -t json | ${NIXPKGS}/result/bin/pandoc-include | pandoc -f json -o test.pdf DCsunset-pandoc-include-5c44c8e/test/__test__.py000066400000000000000000000000131520044676000216500ustar00rootroot00000000000000test = TrueDCsunset-pandoc-include-5c44c8e/test/debug.md000066400000000000000000000001711520044676000211400ustar00rootroot00000000000000--- header-includes: | \usepackage{ltablex} \usepackage{tabularx} --- Debug !include`raw="latex"` ./included/1.tex DCsunset-pandoc-include-5c44c8e/test/entryTest/000077500000000000000000000000001520044676000215325ustar00rootroot00000000000000DCsunset-pandoc-include-5c44c8e/test/entryTest/subincluded/000077500000000000000000000000001520044676000240335ustar00rootroot00000000000000DCsunset-pandoc-include-5c44c8e/test/entryTest/subincluded/img.md000066400000000000000000000000431520044676000251260ustar00rootroot00000000000000# Include image ![img](./img.png) DCsunset-pandoc-include-5c44c8e/test/entryTest/subincluded/img.png000066400000000000000000000005651520044676000253230ustar00rootroot00000000000000‰PNG  IHDR––ฮ/lัPLTEฬฬฬ–––ชชชทททลลลพพพฑฑฑฃฃฃœœœ‹*pฦ pHYsฤฤ•+IDAThํา1oƒ0„แ‹1&ฃ ดs“!3:ยะช‰„PฦD‘˜QRฉู i;›ต๗Œ‡๔DDDDDDDDDDด‚Iำว฿dงษ|กญ-ิะืัใกY”&ื็)—"‘฿OZียไ:ขิNำ€}`๋ล!y—/-ฃธช ฿์4ๅxlกย๊ผAUฦาrฎ–E[?้อ‚Vืด•/ ูเ๊šฮสฃเ–ั8ฟ—ษ๎-™>ฝ๙ผึŸฟญุ.:/s’๑ 8พsหOvแญ๕ๅPศชก35ฮ-?น!ผŸๅฮ๛{ฏFฟ|หO ๎=?฿Yฅ%QŠ๐ฎIENDฎB`‚DCsunset-pandoc-include-5c44c8e/test/entryTest/subincluded/included 2.tex000066400000000000000000000002401520044676000264620ustar00rootroot00000000000000% A simple table \begin{table}[h] \begin{tabular}{lll} No. & Score & Rank \\\hline 1 & 94 & 2 \\ 2 & 99 & 1 \\ 3 & 89 & 3 \end{tabular} \end{table} DCsunset-pandoc-include-5c44c8e/test/entryTest/subincluded/included-1.md000066400000000000000000000001111520044676000262730ustar00rootroot00000000000000### Code ```python print('Hello World') ``` !include ./included-r1.md DCsunset-pandoc-include-5c44c8e/test/entryTest/subincluded/included-r1.md000066400000000000000000000001411520044676000264600ustar00rootroot00000000000000 **This is a level 1 recursive include** !include ./included-r2.md !include ./included-r2.tex DCsunset-pandoc-include-5c44c8e/test/entryTest/subincluded/included-r2.md000066400000000000000000000000521520044676000264620ustar00rootroot00000000000000 **This is a level 2 recursive include** DCsunset-pandoc-include-5c44c8e/test/entryTest/subincluded/included-r2.tex000066400000000000000000000002401520044676000266610ustar00rootroot00000000000000% A simple table \begin{table}[h] \begin{tabular}{lll} No. & Score & Rank \\\hline 4 & 94 & - \\ 5 & 99 & - \\ 6 & 89 & - \end{tabular} \end{table} DCsunset-pandoc-include-5c44c8e/test/entryTest/test-out.md000066400000000000000000000012341520044676000236400ustar00rootroot00000000000000Test ==== Included file list ------------------ - included-1.md - included-r1.md - included-r2.md - included 2.tex Included file ------------- ### Code ``` {.python} print('Hello World') ``` **This is a level 1 recursive include** **This is a level 2 recursive include** \begin{table}[h] \begin{tabular}{lll} No. & Score & Rank \\\hline 4 & 94 & - \\ 5 & 99 & - \\ 6 & 89 & - \end{tabular} \end{table} ### A simple latex table \begin{table}[h] \begin{tabular}{lll} No. & Score & Rank \\\hline 1 & 94 & 2 \\ 2 & 99 & 1 \\ 3 & 89 & 3 \end{tabular} \end{table} DCsunset-pandoc-include-5c44c8e/test/entryTest/test-out.pdf000066400000000000000000002755151520044676000240300ustar00rootroot00000000000000%PDF-1.5 %ะิลุ 5 0 obj << /Length 595 /Filter /FlateDecode >> stream xฺญTKำ0พ็W๘F‚”มž๑#>โy@b7‡ํJ "m—ด |&ฑ[%tYV\bวf>ฯ7)พ )$๒d}Q&ฯ^ฃJi‹ข"8[k QVโ*-3ฏำzทฯฎห๗ม@7f0"Gฮซ}ทYตทU]e99“.$้ถ๛ถ Ž์์ษข˜”s์cm๐ถ@%Ol”ฺ8โ‹D๊\มบ:ešX)@Yˆ|ˆโภ$ัห$มฉ;Lี8จฌu‘)Š๙๔>š~w7 B“tล”่QโqฎˆR„}{.}vผไˆธLŠC–fsŒว|2ๆึซ—[ฦcZ ๎<๔ฆk6๛…41เุ%hอซใเฆ'ƒ>ลศ) โ๋“Fรี~ธ[ท-?ฮ I?mปถŠ๐ฑC๎Czโpœ›sž95ฃL๎=P_๛ส'ŒM๗ญูฑBฅaี้2ถ๕ฯŒ…ซ๐ซยeWฏnป]“ฉ4†ำ˜ึžณu๐Oๆ่\™๐}eขBจ?l!หJ™^ฎถ]๗หอ๗มัซ2๙‘๔อฦฅwHš ย’ซuru-Eล—/ฤฏบfคญธL>†้6ญxโIฅญะส‚Œตฅณ‹ิ๗C6อbฦƒ9 ,*vœจb‚:7†๒จŒV )พๆyะ|ืฌoฺ(qป์{q8/?ทาšวŽ7ืšTจีัšค๋bอฉSฑqNF<[อก่Tlš(sX…ฒฤอ฿7—ทC๑%c0ซ๐ฆŸ_ endstream endobj 48 0 obj << /Length1 1971 /Length2 22802 /Length3 0 /Length 24000 /Filter /FlateDecode >> stream xฺดบePœkึ6ŠปืBpw ๎๎๎ะ84๎5A‚ป;'ธปืเ๎‡์ฮฬžฉ๏๏ฉ.บน–^๗’ปซžj REz!S1Pd็Lฯฬภฤ•Sูู13ั ƒlL, LLl"Ž@#gKจ‘3ภ้lP0q~wtฐ01q#P$€v@วwฅ)ภุ t6R๕ฐ2จŒŠ 'gzc#งw5ะฮาH๎"ฒ๗pด4ทpƒ•žOค?ย i#k›“ต%ภศฮ อ วนฝ -T ;€1ะยศฦ 2จ5j*bส* e5Ej†๗ภ*.๖๖ วใ"ขขช&A’Wี้j*ชUv๏อ้๒ช๏๚?y ธห‰ฉ ฉj)Š139€เ ttฒ“๖ธ}zg๘ตwW3Gํ_ Tฮฮ๖<ŒŒnnn ๆ.Nฮ Gs{›ฟ๘ฉZX:@Žึ€๗OG  ๐ฏยธุ™พ—ำู๘w€?-ศZšํœ€œฤA+m฿K๙๎๔.w7ฑ๗B8‰i๓ท9ภ ฏ4FN๙ส**สl,ํœvFv&๏†ฮFฮ.Nรฟd๏@Sสฟ ".ŽŽrศKๅ๘๏4ข. z?™ฎ—‘vฬศฮลษ๓ต๙๏c›€์œ,œŽ˜Yฺฐw๚ำ3KปฟdrB๒Rโb*ช๔ฒ๏ƒgG/zฏŽƒณป๓_ึโ ‰ส๒ธ˜8ฬlฆ๗!ณ3ฺูพณvB๘S>Qห๗:9ƒ=gชญํ@nv^+5ณด35๛SuS{F5;K ”ู่พ‹#3:˜@ะฤ‚๑Oชฟ&ๅ˜๙๘ฝ>^๖ {€™‘ะวา ๘เๅdไ 8;บ}ผฉ๘o„ภฬ 0ต4q~๒๗EA๘+บ”ภท๘ษฟTื~ชฟ–”๚}CMAv6S ฃ<ศ๙}จูฑษ%๎bc#od ค๚๏‚ฏ•‘ญฅว‰๐Uช‡ณฅ“ธฅ;ะTัาูฤโ๏ช-—r6zz!;sเ{Gฉู#›๗}ฟt,Yzf6Žัฝฯข‰ตะษ ภ๑ท๐ฝร๗ฝ๐ุฅD”%ฅ4ig\2ณ3™Zฺ™Xุ9FŽŽFL๏3ภยฮ๐b~eS ๛_C`dฐ9ฟป์]œ}f G„?ไ`0 8Œ"F\lFี#๎wั€ั๘?ˆภh๒oฤฬฤ`4d0ู฿ต๏‡5rฒ๘‡ษ{ชยwV–€๏ษl฿ณู2ฟวณ๛|ฯ๚7d{ทู#;3 €ั๐=ฑใ?เ{bง@ฃ๓ฟแโฮn จ฿Kโ๒๘Nำ๕?ๅ/๘฿mUsŸตฎL้๓]๔agG5Pรา๔K๎&rFฮŽ–๎:L๏ปฦ.๋?ฝJ@๑Ÿkโยย w/z6.= 7;€™ƒ‰๓1+ซฯ๙š}็ต็๏=๚sแ€@w  ยโ<ศ„7ศ*น!คฤW,oฒš‚›แธ›_S:j1uฒW4{‹ (๏฿ไ—๖)$+ษฃ็›่oWจI„e๓บึœP1qmช$ธmไ+็K€"&4’ฅฮ &ทเWฺNF} •ซUฤ6ึ฿B P9แn๋xˆfCฟL"ำ-mYษv+˜enฤtดมp_@รIฐ0๙๙ํ36สจ[h‘fฦ07{DฦพซM›69WีเGๅพ)LTU!ญ •’šปี-Vฺd…1Wว^ad2็พ๐Iม1–เโ4ู{=›ๅบ< _‘้\u๏|๓ฃYขภ^˜H ‚U•//*Jพ#ฎvc’œฝI5H๙๒Q๎ๅkฤ—ฌ<วุ๊d๘|์+™HGถนำ ๘ฌ|}คRป;กอ"@ Mะhx(๊ึ,ณำำ;ฒ@คฯLXธ#Ÿเณkุgด๏2ฅ๋vถฑ!Y”rNซ-?G$ึ%G#(๚žJ ่ษๅฯ๗s~I…:3เŠŸ‚oxึ9ูX๘?๑=pQำฌ…ศ รใuW1SZทžจณ}้ฃฮํp`โ-t‰&† •๕HHฮอbpŽ๖ŽU็\๚uฎั†เ9฿โ%็M•ำY—๑ยE#’ =ฏ6œC&u!๚ุŠึใ^จU,%ืตx†เ…p๕๖ผปk8žŸน์๎”›‰`฿฿ู>๘๘`ใ[ภ)ํด6 แฏ –๓ฉ“มณu?๎สS~ฉ๖u;ๅเ=ฝ”<|ุB_ODฎ œ €๙U=u{ณตง฿’.m/[ฎ0ด- ๔*‰บฺUqฟฮ5ฒYƒFนกฅq(ิ{y+%ด› #ย๋>ๅฃbฅ;F๖ะl๋˜๘ิX๘ปH๖m†+K87Kมจxถ( GR‹}r~™ถRS[u, œส9y๛ฅ‚@ Jทฑ‘! pห–ฑ๛“๚๏5Erพฮถ™,s—`“O๖฿fั‘ 6่3!}แ ‚๙/–๗๛vธฅž๙˜Y™ศD‹๋โ๋ ๑วƒ้ฐkžไpx‘ O,ซม+oH2๕ึ”$๗ไŽY฿<ณง6บx่FAAX7ใข6U5h*’ผๅCzgฏ๋c’MHc| ช:C4-ู6žžศ่ปฅ๐ฬ•8๕f5r8+šๆจๆ 8ฐนdMeื8I˜OŒP™–"v์>5L‚}~JŠ~WฆRO˜t๑ Ž“Oฯšv๓vยC๚dผ๙re˜Jdฯพ‘ญ#วn๊)๓.€ีญa uะญ์ T5H๔ ขiซœ—};@Xr่7ฆฎFQ#*sYy‰/ฒํดLฐูuณY b$ึ๏j5sฎvุะทšไAŠj ๎/—๎พภ…รฟ์`Jป—t๐ศ= –'qๆฐ ฿2E‚•U&ผ๒Pe?นŒล%ภq ฑUjK9บZํhCจ>อŒคh2xgู๗ืF๙ต‡>0pqW]j5๘MŸจสน๏พยƒ™Šรใ#mYยม‚I% ช,5๓5X6GกV๛j3.œ๔“1ิกฑ%…{’gžหรบ,‘ฝํ๘ƒ๛xโฝ]๕FFXค๙ธ$hXฤŒ\ฤฯ๑x&jeฉ‚ห}j็ษŸ0bดฟ˜8ฦฮเปฌ่Pป๘BYๆฤพ่ง•$?ฃ7|ย8=ฬ„k+แ‘ะฉ%๛2{i–zห ๋๗๋ฐ๖ฐcy&f๐‹7๎<ƒh6;กฟนZจXพmฐLq‰A˜ฎmฑภwณฅ_’:ู,ฺ.็๘ ฎป`วT=ศdpลวศ`a™ฟับ๑ๅ้๛[ฃ๒‡ฌ๑i็u4 yGทze่„tฝ๔ห…Fแ้ฑถ†็ืธจธ+ฃSMธ๏flซ6M$“Vยz๙, 2Cq‰]N‡2ถิ-ฃ^H‰|ฉ 6L$ๅ{=์ผCใ0•#ฟp9ฯฆฟกษแ๎kซ4๒”ุI~ณt=.mนศND E”‘ถd]=)bE3/)–บ–ฌ๋ืklkšต”`œQ;ži‰๒่”K”>ฑลnฒžซ๐๛˜ykG๏6Hqร=๖–އ’๊ ๕ปฅ/‹7ุ๗O๚ซัํl่*:ฏี›ฺ@Iœไ$ZXŽืฅ๓F ๕ๆ?~์1แbูฃŒhอวคOบฬ%ไ@ฃQœH!(jฝ๕yJำ~ไทฬsเ๎U}๐9‚ ๐-P9@ .ฒI|ฃOJ๗jg:Hฟ†์ฤฯIฬมiNฒF]Z๛’†ๆuF˜ชค๏้kQย๔1YKฒฬฒช-Y-้•Œ]ฒgcงr ˆ‹\7Z5vU็NิNๅmQุXŒศh†uภอ>R>rฃดsXถฝŒปoิำŒห๐ี?๘#lคั2ูVะา,˜BจพŸไช%๗šตฏ ัฟผBaŽด 22P—“4ป9˜~vท~{qญB›ฐ[|s๐rph”f‚M(<๖์ัฟ=โเhร ธ‰ฒฒ๒“R€(’Uกวgeโ%cš[‘ไ๓yฝWจŽxย o.ิ๙ ฦ‰ฤ “gว‘๒(ค‚฿ืžฃ๕z5๗xๆ"?6DSํ].†k? ๐|ฅ้eื_eฺฅ!นฮ‘—โf๊ฯŽ๑„ดV4+ฮF/QืLี…ิ„ค|=-ฺ’ณ]๐BฝKภ%Fะ|oˆเฺ#ืฮเ๘9แฅvซฑ๕‘ุ,ŠFC}?tuZ9Š’ฦแmั"=aุˆถjฌ(ัƒˆว ถ›๋Rฉณ}ฝT˜mmซ[ำKม˜๋PนฃlW ›ž5'u๎RK่ŽaลWซfAA7๛\Š˜ฅ‡ั˜+Bฃ)*_ึ=฿ฌgQ/$lL6ž้ O$ๆI—๏ƒ—šb+ฟ;+๘!<้DTJ™ฺ|ึศฯlˆ"zNSŽ;bl มyนฎำ ไDู,>ฦš๙ฉษฦฅDึฅ%ฤ^Si•๖ผถฌอJM\Œ่wวlŸ[Žำ-ฃ ๙hM์_ก(ต~wD•้…™hผ๖๗ส7ศไ$›…ฦk.ŽO่,<“@พ‡Hฐฌื๒ิ&มƒ ๙…(๕cZeT๘วZ~ฆmnฃWญ@าŒาPซถ)nf1<ูฅdณุfVผ๚†hฎ๑ฬs˜•ฉ 2Twฌ์ฌ๗'ย4+Œเ9ฯีตฺˆ‹]zธฐั9 ฐ?+ข$๚ธฤ[~W-ชฑ๋=แrฬbฬ5%๐ก_๋—๑ฒQŠD์TปSๅีžอG“วพROส”‹Y6คZ-ฤ,ิา9ไ)้‘ๆ˜ปื‚)+ัdุ6„๖ฉ,๖\'2M9 @ฟ์6ŸยW๕'ัu1บ_ฮt฿[oธ'>ฬ> กฤซFƒษ๗z๚ญ!N5?Sฺ๑ ้พ@ื\ภ็7…ฌ๚+ส Zoุ“๕Q NŸ.•ฝ6บิ๗๕๎‘"๒พI!แ5j_แœฏJ‚)Zฑ-ปุนืชฦ:ฟkฆœห[…D ต=วชt๑tไ1+ัca{t Ž๒๏ฌๆึ— i8"M>ฑ7C•ำ}ิ๕˜oi‡&เf้๗ค+๏ฺฏcร_ะ™$,r/ržฤvบฮ?W#zูI”“7๎ู๊๑>7RNAจจxGก•ŒญhP[†HB-Q^!ถม?`คกj๎5ไŽ’ฌGิwDหqŒ†>ิเv^LeษFdEื้ใ๏„ภiV๑dŸ"Juศ%>RqŠX ื[ืs•5ร‹@e,ฆj˜อ\ธ๊–โ!ขูฆ ŽฑกS*iผ}ญfFf›™)ษ@#Š8ŸUCJ5ZEเIWLขๆฉj[ฑ$;ิcC’\ฺ์ฒ๖E%ƒจะฑnƒ3ZŸ˜a์ fคษ็‚[ฅ‘โ~ h’gT๚โด^ŽO•›ฒfไท>V‚฿@ช"`…วตัยฝแb‡ฅพJA็ๅาฎZŒ๖ธมฬYๅoฒใีฯ๑ะVBีฐUp่s๐’๊$7{eฤC=ลผ0.ŽVSข—!๒’่we|เ9ฑŒ8:wะณwpi ฏ"ดฌ^ฎ~เ)N)ิซ๙Nูรฅญt0Gj8Tฃdภ๖ำฟ›Bม•>X‚ฦ๒ฉ7eืขb๏๖ำๅCl`ญ๔„$•gถq่;Ÿtมœ-Xฆcฎ<ๆ^gVญฅ,{@ฐ๔CDNแJMy้Ÿ˜zy” 1 kงฮ—m๛พาฅมต…Y^mฅ"n๙หแนO`ท฿&ำ฿ฎฉส)ฮ™ฃแdIญ*ฅ4๗6sรฏ๐i3.‘'y;ƒฯส๛Ecฑภญวำ–๖ศŠgๆฬf|<ฮŒj2‡๐">zอย๐, qt๒r˜Yฯggม8hฦชY\ HๅqzTศฤฮญใฦ,ซ๘๓ใ Mภ™XŽ;๕`๑๊ชค#!‘‰๎q“(ฉ›xคดๅ–ฅ$‰เ$”o _,™ซิ(”บ๗vkD=คปyเB,&‡ํึQ€q๓}0sศฎ%ยำ ช ฦ›่Zdส<ภเx๋ณcษ-6F๚ืฌ5ž–สŒ ๛=#6˜๔fš3ถ‡ŒW mฦˆ>ฺ+DไบฺL|พกา!ฉซb;ใ0ปkbถื้ธ™ว๎*’Z— ฟ๔2‚!‚๎ึ฿ฏ €อ7ฤผuGำi $!๖ ่f•g™MŸแJJwฒj‰ๆว„๐ะ< ๓†/)3›\ฦ!พซKQ๒:NrŸฤl…k[ZUž™ว1|ฮŒœ ี‹aFH ร†ฅUกัO:I@ไ5Q$€.ัF๖ ทAUBาถcบrŸฦQpัOzM@น g.ฏj pฮซ`\›9๒og˜๔š๙ศ๋เ้[#ปญ๋"&ณให'^ žˆจ&ฝW^ม๐bƒฅG€Dท|'บโ3ป9*E”7)ื^๏™˜’‹ย ะ๖ใฦางqื,เL๚ดๅลง~ถ}ณ^,ฯาื3Y.,๓ถ^h˜Tƒฎปวฉึ…ูล‡ฏ๘น&๙tCฟไŽงlEณ‘Ž…๋UPh‘+ํศโ–€ใ๖ 8BผP้๓ฎ/'ม•!G*ึ).ธQA •ถ‰DP}Oไ๙8ผษฐ7C๚Yw*Žใษ๐ศ8ซ—:ฏธยฯ๑.1}d5๚B1๚ใyއจชฯbใร!ั|œv๘9˜?™lฐ๒T๒|ืผ%ฎฒฐฏ‰u์™ฑ˜ ้+๙u ส๋‚%N฿๘[๊๚T๊‘ฉดajพ]xŠ๕๕QcmฌๆXฃ2้ษึ8\$ฯฐG๋9€+6ฤ+jืษูน{qฦxณฺ๘fโ@BœัGŒC&ฯgจว]i๊}-็ผ๒RUvปฺ[&†๛x>๋8vพ๐V๖-ลฐ‚ใฤgiW2ว9ษ9ƒLร˜๕อ Y7f4 ๐Y๐L6YษsH็n5ทO…]M•7[ฆ4%ํ•๋มบรถNฎO๕›žrYธฏะฯบโHl`ผ74ฏบฏ?q่๘-fƒœถ๓Žฺัaซ-_ถฝ›๗วฺ%eษ˜จdะ@ฎซฏfรoฺ๋U๑7ศฉ6\ๅั"cuyฏธ ๛ฉRQ๔&ฺ ใ2ˆ2ŠTD‡giซtํนฃฤ‚๊ชi‚6x fE๚เ…๐o… q&oิฅ‰hfแะผ|ต8ฬสคŸฏ=ฑ3“ํ>†-0V็)๖'n—uมคfRซy{Eฐbuฒ)ศ.*R$™๖29$ษจM7m2เ†นs ฟ จฤLl]ฮie‚|Š}e~C“‚ไ฿N}yิื˜ัH)Pุ(†ธ /ลšBู_nึY--xตฉ%n„’ลย๗๋ฒdLCฦ๐y…ี=Dทํ†ฏŠh :ญpŠI›7ฟŽ€zฅ์ิ•ถณฐ‘”`ฌ๙wไฺ…ๅะ$Hkฃ@๒ž6Mฏฬ่ฃ’;ฅI๋9“ั07ร]‰เน๗ฑF\ยชˆ,โ‰ว'•ปฯฉ‡Už•ณลบ฿’ฤ๖งvJ~ฮิอWN-ัาe ž8พ๕ไป•-k^฿`ดF๊|ลjฏr<บ๐Q๛‘ๆ5E™9‘ฆ9Lg;ณโมxvžธ$I#Ÿ>Ÿ ฉภษฐS‡•›ฮ”ูบึ*d^Y˜RY$ฉ€cแรศ ึฌ,ฃ9AWุฝSใjจžกw:ช[Š\2ฒˆซึ2เlล`C–|ขพ“ฐะดฐุs2!,ี H€ภ|ตผไrPn,jƒ‘$ศˆยGwJ฿…*~šƒท่'๎๔Uก้ƒ_น4๊ถ–ฎž/ใี ๗๔งเงS5mด๘^ืมขC?ัฒฦม|^Zขไ-Lผjฆๆก–YT[ถ้j ฏลฬะงผ>ถŽ8‰่‹:ช4œใฎ$cๅ‡Œฑน† ฮญป*…/=ฦ]nฒ}๗—zv#๒C’%p}๎จ!;ฺT4ˆ A\ทณ๗๙ภ๑ด0.ะgขญ3 ฦx]dk‰_‘ี`๘+ห๑มนู๊ผ0Aสค์[J.w‘<dใิฐ์ถลศดจŽหƒ9&Œะ3Lิ†sฒแ2lyพ.ษ‘_bv ๚ฎvกศrฃ฿iฐL+= lฦ,™ีav๏Jำ:๖จน๕ญๆใศ 4cนฏ†J๋j+จฌฬ*า/ไmส#ท#ญpD๗jใˆiขF4๓™og๏ฝn‘ฐ๛8‰๋ตช.๚น‘HŠก—ัR+ร๑NธIS9โZxAช‰ใM[ฯภ-1Zใ๏กYฑใRTแํyZ<——™อD๋‡bข๘y{žFI/=!> Gš/ๅส-ๆKด˜+0q 09ดwผ q;ขKอจผรžž ก`ซฝณร›ฺ5t“x?ช\ดœฟ๏ด•๛ อ4Xd|“YŽ2’C zล์D#H๒W/j]Saนผิ`W“ฬศ–b–๚`˜ิ๙็v7๖ถLf•ู€J1๒*หพค๙ห๎5bฬC;๎Hxท4๐gขป)ฐ`uJ#qภฟšIำƒXbฐมƒื™fNชO—F๏k?-ปxฮฒm@0"cŸŸ.4Eฯ’vฅ@sหรGŽๆj/…Ž)ะืผI็”๋ฏ.ฎกธว #น๕”ฝั ห าˆb๕% I 9jฅ7ซŸjF:’1)iบd|ถง f&t•ดŠB<๏Ÿ}ตกา๛U]‹Nฌzะูๅฤfผbณ89mฟ!g…ฉ8 jRŽ* 3ชš [฿พBh}jVเ฿กr?t /นค ›c6n! j— ‰๏ฏ/ำmonq ๛๖ZfАZ‚%ฉ ใฑy…า1๓ะ–็%—๚|ธŽดXฟ+BตQG$ฒคFช]&AImำ#†นจ๋ กKำฌฅnๅlv•(T'6 ณ|{ฐCปฮwฺ…{๊‡ำรbBท2 ๘j่_6y+ื•ถษแ7 J'ธEฅeยf—4Wญฺน์6พIไ”gaฮ4ุ<ฑฌgภŽอh€้tRIBpภu}rร&!G๊]ลP็H ๊m‰~ษฌูgˆ•vทวี็ีHฤ˜นI&6QMPฅFeณ๑cะAุffคyJภW๗ =ฮยญด1Bณoใ๙vืSPv๘Yปg”รQ฿•ฅOอ%๐(๚ห๘O„ŸŽP˜ญ~ม๏nW'œ๏(ำต ฐ๊pนษUธ•Gถ*ภลQ>=:๎รลยC#ึ ฝ5ฝ04๗็mิ—ำด›ถอี\„fไเ$Q๑ s@ ŒถKt๋ึน›$X3`%{ห19 Kšฆ˜แบพ&่ฟาOZ"O_้ๆจฏจ\ํ™ีnวo˜A๕ษ์:œ3์กan์'C0 žื้*บะถทฐK`r๚aน>ค๘X–Vxา ็n;‹๑TUKท"jš"‡–โDั'eŒ›ฑมCศ‚y{ ?,ฝฝฝj„ศ”=ึRำzJ…@ซšฬ‘๐ๆฅิo“Tำ1ฯ์`๋}Pฮƒ๙P9ช2จF,Z3ทI&oky”ง[l‘Œ฿%qฆ`kJeนโู™“ฏ;5kณธ'ลr-Vีaฒzx‰x!Q๒‚Dฒิuฏ|ึฝHWEG‹5ฝ8†{ต?๑๋ถ‘=\oฒ๗๑ซ๏*๒ดu๒ŽOตญUoญ†Ÿ๗ืfฆJˆูั^ถe5ฝ๖ฌคฌ4?2*ํฑ|ศฃื~hแน$Ž๊Cubร#žภถ๎F{‰‹์ึ ๔ๅ4 2ca๔ปิ@าฅ;ฎ๒uˆFญI[,eล=y๛Rะฺ๋€๗ะšY‹ฒ…7ฦ oGD*ฃ˜zฉˆWคณ&์)ยท}ูŽzเฯ[Fญ$๖สŒ|sื›ุ4จเอฐH๘_%Px~]Œ%ศวW$~SำรJ๋ylข฿น•ๅูภ-๑~้ดฅ]หJ}์U9วNฑfฒฃ}$บFtMYฑ๚.‹’ >เ"\hๆ7ฤš…^SŒX๙” ŠQ0๓<{๕i„ŽD์Y์E•๖g6%!+†โบSอŠ๔3C{iธ47็h„D‚;W)ํ’ฮ<|ฌบjสาฏัฃ]ฏ:™ใ“็ ๒›็^๖_สค&ตกDหฎR.๖CpFWว—ฦ_ฬŸฝ~#R`!Oก้/ๆ5๒ฑี+ผดfc7[Q3'œขJ/ร„vQ3ญฎ'ํ%rsŸ‚i‚zขตปฒ ‹า๓œฮฯ๖cr5ƒชื}›ศ"†ู-“ 7ฑ(œS;ึL]ฦ(™‡H๒h {WyXปS*ƒVพฑๅ> "z.Iฮ%™ยX8ม"้eจ๏พ๕น‹กeœKh„€‹/il|œTตV•W|Hb“u9ุ{฿ฟ๐7ะ‡4ธใd๎Qฆ]"=?sF7๕46X‚ž”2\” Kด`ีŒช8I0กํK Z™{Kั;RCฬV™่ใ‰าfex้{E(vภ(ณ๐4›$ตศ“*mฎiดg)=พ„•ึzรณฑœฑสธ&KญคิNB˜Ž/่หีrม-๏|ไเ‘Q1Uุn+•f(Iklc”2Iุฉจฬํุk๗ม&p =๓bOฐึd1ทโƒ๋9^*ญุRใiFƒ‚œ8ฦhbึิ ฌ[๔ึ-ตๆ›`'+M~Kุุ )ฺw0 รWสNiีˆ } อOD*€•jR้žš’†ฟฒ™8จ์XภตMืj4้<โ— ีŽ฿]ฏ๊˜›žHFดZJeแ@ท์fg4ฌ๒ AŠ๕˜•์&‡™“Mกสธฦพฃฤ‹r‹ใื?แ˜บ_ ฎn“QM`jษ>ไมu๖ตฉปข์็โ•ะซ•;Ku“ฺl+ถษ Aฅ3|ฐ๔์7b๕d‡ฮ„ไ}ธทmŠํ๏#†N!Xชํ"G\,่F๑&Ž3ฝไฆ˜‚-––4ฤๅฆท๔โZ ฟฮถMซN๘ไ๕ู5ิjฉcัฮ€U‰์^็ื^.๑ษdด]rใ„Wีwึq๏Rูบ'B% Š‘- ูvuš‘ฆ”Vlƒ v4ว๏฿brฝXฏsE๑~N 9g๎ฯS—์W4ฦ—Bสะ!๖ฌภ฿OxMก^ญท˜^฿e๐xูjˆI@๔,น๖X้"?ยฯe&ุฉ๛A‘_ง๗โฟน‘ rํ ่ะ๋ฺˆM็Z‚๋ล๑XW2 3 จธ2yx } ‡เผ์)•๗&(f\ /้*gN8Zถ ~ˆ€อ฿l‚๔^์ฯ,]๒W!ฬj ๒นณ๕พS<ฐ ํ?&#ฐ ˜I~๑mรืYฌy3฿8eฟHเ+š"ึธก/-ำ-ใ”ŸญEไ4`š๖•ฑ$ํHฝลถjฺ้ํพๅะ—FFเ"๛้๏z‡-mะˆWิJด!่ˆr“‰ไ5ช๎šs๖Ž(ฝ)ฝxฃj/มศcฌ0cธฦฉฦว‰O๙ไฃc Kป'Iqำ_5Nพvฦโyช์f†ญ–๒๎6ฅโฬปœGแ0kš/‹„c{:๋้” ]็7ž!๓xฏฏ3กOอT<ย…j”ไฃ๑ฌหYdฅ๏$…i€%ั›:ฬธืส„Š์Pฌ\ฬไง๎†;ง๋ฐK‰ ์€†a?ฅ]จ…œ๐๖ฒล›๚ดะ3๖{๚G–๗E›Lูฮ’”ร™WOฯะฑสโ7g™Ayศ๙ห‚ZซC•qสhธ„กิ™บ2คcแฤ๛ทะ ฏr(™๎ฯIฤอ‚Ÿr๘้”yฮR|ุ้-9T‘™j€ชรW“ฉ?v{ขc—1ฝ'เ๗ฬLาCE&|Vฌ†# น%zอSv!ซtหŸX*2ZU-จุ^%†ๆ /JูkฌฦcHจ‡>ˆHZmmœBSสฮ๖พฏ˜๐5u!โcœOใŠ_r็b๕๋ง„Ÿc๚dzิณ*ดP 0gธฤถนg2mล'uฃ฿-oฺ฿FB\ฃ‘€rm‚ถCm๑ฆ#฿:t•X{T;ข\Xธ3ว์[.m วG^JพaทึŒฉ&ถอ ฐยn„ ๑#๙สล๋a|q•็่’ฃบY ผ[`กษ•oฃBb†™ฟ๏?) ิTYHŸ*a~-๚ Q/ฌ bB!ฯ(iย}C6ฮธทA๓+I๎ึทMถปf?eแklา5ŸาOอย๑8ิ9ถ…ฟPุ›ฬsLซฟVBXด>EUJ็ญ’๋qดฮ ๎qn CฺI็มVม‰ฃ•[dqPญLฦ๗ ็็ˆ J๐จUฃฐ9ฎŒฺ๊&ง-)ถ":,€=u}J‚ิ:ย -pศปงดสฅ^\ŽXๅกยสi๗ฃ+d?ŠJชแ&‹ฮ N™r‰ธVgธฒซ’ฯซืS!Ÿ m{ำoZฟ“ตcฉ•`2อ0‚๔Mtยภ?#qฏHล2งd$3ธ0NบชN๙^๐^Œัเ๗ญ9ภ`ฝิ^ๆํกเ1;8n•eํหฐ„ใ}sฉ]ๆ#ๆFŠ—ถEž€8ฃ“@G|d=}้ดศb@H๛u‘ธ๚ฑ๗ฌวSฎ,q”Up ํ“ๆw’e ๓&>›ธ.เwำน–๕ฒ"ฅ4แไบ#น™ฐาx†@L๗Љ ž!Vใ&ญAฌ0:๐qถำ9lš3_ขฆ๗•\74ขจฌ•AJฬ‚1•7ฐˆอ(7ูัVม’=„DฯูX-Jp๗ฟฬกw„ญ๓#RลMCํ่~ถปอ๊Gfu๔ฉTL‹ศ้•ฆS7Ÿจบฯว™ฟŒ:S}ZhM่*žษ^›O*:ิ=๘ต“ๆCฌฒŒ„€ฒŠใฯ-๊‹6J7%1!๛†ๅ>‚ว่*สnžˆผ;ๆทLแM—Btืd?“pท๘พ,๊.Cฌ˜แ#g,!๒S].œรบš'ฟP/ช|,IN9ม๗ฎ๔ศ๊q=UญWคิ0D5๘a<ฎƒ ฅgคพ[๖Tค=+MO *ลททfำuh คธ‰๏า—ฏ2t#้+k=ๆโฟ HธxwฒqพมฆG)MBŽ>}ส/ ฃ‹บป„^ศ•l์ึGฒษฐ~vำะBƒ…š7•ฬ7ขšqึ ๎9‰ž4๘ร€ภzํ6|บfหธ 3cq>Ž,ลy•ๅiนชใ“2ปขZ‰ีj@p!u„ผ‹iฅs9=ข$ยyO*FC,+’yBp๚อธ›Wฐ{=นEืf„ิ…ฌKœ—‰หศฦ-ถ3^?๔Ÿƒ-ƒ๔y$89๖žฒ< ท๕ฤใ3ชƒฏDฝŠV…เl่๋ ปสบUฅไ/ฯ7'ฑฆgeU~๚ภ4๖ลรฑ)ฯn†Bืd๖ง๙วž—ิ)+๙ aษMธ!‘|ทCcต๚า฿ชโฦบัyถ™ฯแ›*ั:FEž—น=Šmคrhl t:{}*ลH‹"งฯ๓๊6!A]r˜xซX8หย5†”L๔=#^ั›i"๖YZีศฑŸฦSysgw%‰„™,CฒVCEฟIž ๆ/บ๚“L!ญ*)ฬรT|9ฦ‡๒ฟšY'Y๊ล“4ง5)น๘ดอsี[่๔ฦ)ˆญ\‹๔v}นศŽฅyแฬ†ืๆ+‰YŽ&_?2!ฦ่ฦ บ เฮ๒Dไฌฟhใยทp“sœ8B^’๙รVซKwะึขๆe˜)Ž B๓A฿TK#`ศFฐภeY4w›ฮoก-Mnบfงๅ†•.K_LG ๛ๆM“็/ฯ็ฑN˜ษีบผ0}/eฎoิพ^i๑๗>ฑ3๑C๛0€5าcศ mbJ,ีแw)žกยห'๏บ58โSSฐf๒ะ@ย๙ZŽtY• ๊ท(p๚UfแฬแŸ๒=D7าึ๗ทb›FOgPrm๔ณ;ฃ=฿หwz\†บ“! ธDg‚๏ฃฬชจค hฤณ_8๒ฬc]ฤๅžvJ}b์‰้Œ๚@” 9*๘ษ…uH๕ลฬ™uทฒูVZ˜ธื]d1œ‘˜"ปfTWค๚าฎแ iTp*่ว5†oพฮ,ฏ1ท–ืy> ซ`ป:Iฦก‰‘Db'฿6_‰KฅษรG๛iฤ๏a—ิ3ฦUQBพ”l:๕›0 ๅเNg@^ฟ@FZ‰ฏ|๘U0วฉU†rาด•่ิb-๐Uยki?H†ezuข”PlนŒืmฑต^%ะ=“่ซ%NฯP#โ™ย/04,Dg% 14ย$ธฎุดqŠฏŠ้ฅ=฿#๒h‘ฮ่R^ีู_{KทˆฒสฆPยัฎ?$| ๕ซยอ๛๕ึ๎M?YพไKณต๏ฟง6O{mะx—ัcฃIG)1;๋ผแส=Xht็า๖ใษิค<.๏jIฦ๑J~ฏDะฐ[:R3t}Hซ ๏IC;Mณฆไ๛ฦFัy้ชย๑1…ฃ—}ฬ๓7แZLร๊e๗ว๒ภ๓ษฌ ํ–I8๋6•yซP #tก้aา๖%$ธaฝอ'oZWX๘‡NทšOT๗\พ La&Ÿ[ณ™ญฝr๛ฝ๊z‹ซฃ ฌšญ`>iฬณจม๓1r่ Vœs๖t›ญˆ„:i๎(ว๒ฃ ;cมนญำ่"XศKYDๆฟ#ตd๊–'E‡ึ1ฒG7๐๛=_แเFME„กงS๓ุ†lฅ๘U฿[,ไ:พม>y‡ — KGีภeŸฃFฟbRkg†จฺฏCๅ่I0๎Rๅฏ[ฎrŸ`Z/2ล‰Vuห!tฦ'5ดkถTRป +*๑4kค1ว~ 6u3IQ@ ‰ศƒhคyAž€ู'ๅ‡r๑ม{ิ/จAZugŠTูฐ‡๙ูฉE฿คH๋‰ป'ฟeŸ‚ŸE3l๋๕ˆlํ็bฮB>‹‚“D*}ฏ2\Pฅ๛ืoฤ‡๏๗ตฐwตE^(าgฃƒo-แc ๘.ฤaHฃ.9(všOƒ^ฎ18*๘ˆBGŠลRDญ\:bn้)>`[OžฒฌHJอา6Yฮ๋๎ฏ๘‚ฦ€N&nง๓ฝ‡“'Nส]FบBฮื}pี&แ๎Iำอผษ„ฏvM%n`z8N.“ฬ๛yYฌRZ{ีUัๆ฿”-:คูžง‹อๅำฐี๖๙*˜zHฑะt:ฝ _Mฟ—Tทฤ#ฮ?}bษ9ฝ-ฯ6•ฃฺyŠว N3~o5ฯพไœ$ )้ŸM1A‡7๕kTมฮ๘พถั—จ=šTฃ”›Oไญ€ฝwฏ๖LŒฮ0หjฃŸeดet๗฿Q..๋cศจoษำิoL3คซแ3๔_…yrฌฏ†กv๔ไŠlBG‘ฉ:Qใ๛ะ“Sฒอษ-M”jิรsY*aศV๓jถeั˜ั๎&ฉัM„4‹<]บฒ๐๊˜kX๚Oƒ@ึ’ภาม ^ำ่uหสลœi๛'WY+™X @ษ่ั>น{‰ไ.Nๅ|ๅoงฃ€ŠDfฆฺำcฐปฟ…้VฺYƒากชผZๆ |าว&ŽwฮญtŠvน3œยฺ๛„x9‹H€ื%Œ์“sW‹ฺ“,†ƒฮว$1์หJ]Oฐh=ฺุี5!ฉจ†Y๓l ;ลฉ/ำp ‡"ก5wV#๗ƒอ>็6gผแG๗ำ์ฟ],CrwonLใXC์<์#jนž0m<ŸI๖l๑)›>บV™นึ-;euฦฺF ,5A?‰๐‰ธW‚oEgqใT:\๛้ลซfๅทคฎ YแQนXฐn†ฑ[ร&๙ภษยKL?ˆ‡ยuผ/กCแM|ง[|1›ˆปFˆa€n $๚ –ำ ฒ ว๑นg(ษฅ 7ปšืำ‰p/๏bตพฬ>GK]้!์ีฎญ#3tฮ๎ฉฏฐมEฆBำน๕วผ.๘aุEˆ0งคŒก๋SV2xYZOS08C์๚ eอ นV—WP{:ฐนอW๑๑ฒ–๘b ุิบŸฏwˆ%‰ธ™ฟ M^#๎({๎ตเF๎ฆพส จbXงใ[, ฆžกชกฅส๐ ภ$E7˜ืศคœ]ษฃbกีฅD๚ษฆเG&งvโW–‹วนMฎะ4x๗ฦน๚Y“>ด)v‰ ขJVฺงŠŠึ๘g‹๔=ƒหก๚‹ ๏RฤŒGŽญ๒ๅ<ฑส#ฃ3‰•Ž&ลฆ๕‘ฮRDใปE™ฒ๎ฌัz๋ZทงโT-ปขฮืฎRี“'๋‡P฿~yaฌQ[nเNEตaํุžฏk™ีํพ$™ฟ์ถลภ๓หo$3Zฯ\‚บ๚3๔sk„จโ}ึ๚ะณW;ื๔‡็WoNแ~šyฆไขห์/ž#จ|"๕,;’ยŸะP๗วุไ3CJญ#๔‡ใด๗ฒ|ฤฺทV<{ธUHฆๆ‰”Zัี๋#ไ๓"ฟุ+เุ+ ขัฯJพ€“u‚kCn`4[ล์ฟเ™Œe„!‡ฉฒภFิ ัฒ:จZ22eณ`} ‚ธž-ะˆ\ฉVRžค{‘3zˆJEป„ฆฐ˜ศาtš›+ถ9๔e} ‰ž่ยอVfumลนฯ‡ปœย,๐8w˜ญ๎ชศNฃ^๎’WฌฟV๏ู€˜‹\]ค˜ก8อZํGlmธตบ%„bฒ๚๊&ณA ฃ34€ศJฒˆฒฑ+=ู3ฝ 5ฒ0Bc๏๒๕แ{{ฉ ณ๋j๐ฏผXปญ๊†T% jี฿Dณๆ๗‰‹ภ7?=ภs*>ำว๊;ฦอ–๎ข]˜hวๆ>}ฑbมั–แต-สึฝwพ)ขI๋OsK ๖?|ฎTQ-ฮ‚ฤฦACธ!%วgณxpหfb(tMถ/2XŒZฆยƒย:VโXBs#…๑ิ>raฯ6|ว3’๛V,&ย‘ เ5มP๒v)ซ<—6J"?mš…๘˜*qJ}ชilqล=(}dTrไ™1๕ฤฯ2=ฝgh,จฟGMำŠœM)RะZ„ ัา>}GCไ8ž๛1ฒŒ-ฉ+๎Ÿ'rๅ๔ฯ zเม9™! ิืiOs๒mg*{โ0J,< …˜ท1 =ี{ำวŽตŒ๗๘=ณ๖]ฅม1Dทz๋ฅgN๕งprŸ๏ศE‚pแภใ6PโO5>B:’TNo]^แอ๏ท:้ฟy,ดผอว๏‘Jux7ฯซ้@ิMฑq1(C%๙ฌวุู๊Rฟ๚-™q ื’ฉr สผ'žฆถ%๛0žสwยmR!&}‘oO`=hิฝ€-ญ3Ž"@*0ศ#e]ฌG#YŠ…Ÿ+F฿—ฎ‘^y่ILSฤD{NถRp๖๓ โy&๗ผ6ื„™žต๒๕=&:j]aหยฤ๙ึก‡!Ao๔„Pถ7šr๑‡„ฏฉฌ˜์ŒG๘Ÿf ำŠปš่ๆว>=ฮ3&ม%#ำrพฆ–ˆขnฏ`ิ ฿ธ›๗6Dั V=ฑC—เ_ฅF๓i9y)/Y(Pฑ f/‡D;Š๑›7ั๔eภSgญc>ส๏็,๎ซไO๖ุ:QJีษ+ฎ๏wo๚œj’+lq<*เFฌ๐cp fj„฿๋ลฅฟฑิ›๕พถ๘ุm)E๒พ?}ดF’Is"n iะ/Jส‰ๆT%๗ 3Q0ฉฌƒ&๚)I^แไถแ๊|…?Gะ๙.Z*ภM* ฦ&‰a{%ืqo ,d8™ ้ฃโงŒ‰'๒LWrƒจ[๏_7ึœษวY ะ๓0"Œฎึฑอโโณ\X„6ธ‡๎ัึ)ดwV^]"ข~ฟฉ$ฃ‚VV๖”XิYH3วw่ชEˆีŸ3Dห„Lฯ๐ถY™๕ฟ฿Œ64N„ถs‹'vัม ‹ยPศ(#จ™?…ๆ‚ํ†€%ผm‘AฃŽ๐:OwBA'l๏6Œ@ภอaveๆฬส|้~/†€ZWฒ„จจ:พโฎมั‘i=kไ‡ๅBQงอ๔|แ$‰้ว จีจYŒU ี‡พฬสšuเ‹ก ช=ยlk•ภสsชnlฏฅถ'ใG‹ิรว๏๔บ๎ฺี”๙ำ๑๛ํ+™œดm3"1›ภs#&รZ;_ลŸX•2aึ:Aขึฮ0 ฏnk`< Azนแš‹…๘<์xŒชูeq'*;”}‡XW—๛ุS@…Iฏ่}žถ;Š;^้Q/‡ฎเA–'า^คปŒญmช ้ภๆน„&7็;œ๛ะSษnป&Ÿ;จฝ์( uœ‹‘4s€อฉฒ๖๘QBฏ‘>OฃYPsD๓;กย~ร„h'ฅ˜น.7ฦhW้ษm'ฝˆบ"Œ๙%Zd๎ไ#ด@๗ซoผ„˜*‘+ห๑~‡ ฎจ๏G{แ? ุศฐ<~•aภŒxธ($vซ๓-gSuCฦใž‚&*e*วสเจ|vh&ฏ˜–ึม € ›บK๘@]/๓ ‰ฐœสธอฉŠฌD{ภF Šœ˜„ธ%้–xilิิส"฿ํ.แ1ญขถgนกฆI„ฏแฉ๘Qฟฎ„‹wี]๋”Xถœ฿k๖}๚๒ฐ๛ฎ›•C'1~รX‚ท/s‘J*๘xnฆฦ7“;จ้ดliฑPยp9บž D์ม~รษƒธ_XZยมหฒุ{v`n"˜P ๆ‘ZZ?)nว{๛(GมCหงyฬc†f้E‹*คgŒฉ@ฺ70๐Šฐฐ1‡rŠ๑[๏nผํน๗%ป–๕V•)†ฎษ‚> ฉ.ปมN<: มฯฯJ๙พ๚Žฒcภ‰ฮtหตย฿ศpกงใ@ีพ๊ฟ$ตผ‡žvตญ\Lus•pN๘ฎยณ *c@U>๘>ํ+์:+k4R?๑s*aัQ าธํ็JพpU๕แc–ณ๖Dสฝด‘AHK็[ู๋ึดjปบa‹บ ธ•…ฺฒไฐAƒ€กj๏+ Pสด{อ]Zี<ุq อณxj‘ŸณVฬ&•ห%–C‚ไ0-ณํๆฉd๛นŸŠ๑pฅ}ว(3=ก5g8Ÿ๘œfkฏ–ไฝมณ!น)$ถส็š~ฤ˜บ๔. Lgฺว๐ฏ^_›ห.K๙0ไ0Toิzkจฝz0ฅษฏU'9ฑADูw˜VG‡ฎj”ลEไฆ฿^ Aรe}p]”Œxจ&ุาฑ2c ็{ 7ถ-=๘S|ไ ก‚ƒIN€ œ.่˜C:JŸŸrbwํแDt0VฒMn๗iยถ;฿‰Q#ขX่๏๓]}ทำฮk=„}ค๕ธญจ3+b.ฐวธqiถๅ_.ป#ˆฟ้ˆ/8Gญo–&๛Tำไ ึ#=ฅš@ Pม}P o8"P™พ|#Yม9ถŸ๎š๚)qผฺ ผึk ๏ &uฆCแ็๊Iชบuฎ๎xŒŸTqo@lฮ{`cd]บr ๖{&ๆnoQฎแ‚ฆ ,—ไ‡ฤญฟ~1คูษ–ใ#2ต{ŠญำหฑฮYj M 1cๅ1ณี!$พถ€ผ ˜“)|ธc()ฎsฤแRฯ ฅสWเ[จดุ)฿F„หtxU7ฎ>๔ิ“ํฯt ๆุ_ovˆ…j“.:ฃWขl‚‚4ก]๊Yนkนทภฑ…eภmซัGO#l–yฯ_}fิP๕>7gฟ„‡$]–lx Q"CPตRpใM-yŒ/~ฤ™,PDมR{๋9”7๓]"*'เณ,$šEfOr[„eฝฦ&6‚1Xฅล๊‹ญะ5T^”“ิไ’iภง6{e~q’3Ta™ู๎ษg๋J4k`*—ำดด7 _J–,๑ย-ƒ1jQp๑?ฺ๋J+7ภS3HณฅO๓xฺXใ๖c’`#ถ๎้ื^กฺ`b‹€m‰็s•าzŸ]๎ฺo ต•oty„\=!`Gฅ‰€tโฒn9ป› ›๙™Mั๑ŒQพ ฐc&nมF็ีqฤ™๑u งŠeฎZ•์Žห™ฉmoใy:็.ณี๚ึข๖๛lขสWพฮcํ„ๆ4Žู|TTfฎ˜๎m4อ Nผ ํ’ฬeฺwCีa ึ๙่๒Ÿบน=uQไIช‚‰ร€c†’ุคA้8ไิฉx๋ผlVจไH8•ฃ J‚ฏYFS5‚"ki—_bvณJtSู2ฎบซ] ั)u๛วu_}ิ๕โ™`F…Ngไ]ส‘อ็&ฑ๊ าำ ฤZ F12วลB๎ณฎLlื็ฑ”)bh0ื:”ร๋y6G๎ซSv฿’ฉฏQฯ &ฆฉSG๒ำ9ฝ๏เY์KOฌ>PIMQWจŒyต]dLซ)UO.1hC๙Eไ”พƒ๋†ฺ๔|ฉ@pmK0@ช.q›”aถว›H‡ต7s€เv,X์ฤโCฯ|(ีๅQLฆ‹ถ{m ญŒย™จห"ฌ๖ vvญv_าก…‚ำ K$WXฌเn-?"‘๊”น0)โ{ถ‘เทMv<๐Q@ฅ3ั&อc๎Hbsไไ›M+*ฃj|dEดล‡žฟนบ๑ Sชฎa’ฮท8Ÿ;๐ฦd}* OŒ5YrŽสไˆใ Bิปณ๘‰ฑiษfUPy_ืั‡_ƒ{i L๖ฆWb๏žŽ่‰xตษQ0ƒ7แต 6—s[๖ฤ™๋๙rj!ซ….‡ฏฤ,Xt0๖[ฉ฿‚#ทpมD4|ฺ .:ซดะฎb…V=†๐Ÿ‰T=sV„บ;ฺy2w"njฺส9‚%ŠฏนSœ›ˆทตกŸbๅุEK|uŠฮ้๑อ/Tญ‰_‚†U C.NJ~I‚]Qœ^ตW๘ฺโ’sswท๖5m-$™)บL-ํ+ชvJAทะf1†ถ๏8ศบ๔ˆ>ไ5zBu!Lพฺjษ`ฃษษ ส%ษฝV็า็ฅ๕๒*% Zฐ#‹@[Im ๒โใม้?ˆeๅ&Kษc–บ4Tแธ&Ÿ&฿Yฒ™[Zโฮ2ถ—m>ีu#(๑xิZ๖ก๚‚‚ู=๒_+5ะ2 Vา๘ี?ๆใYT|ฃ hคfJ‚!qๆTื~V[/xผV,”™a^0xZ•ฑlฦว švZ8;•ขoจNc?yM?ผL?ข›ƒ}7‹ฯ5Cb‰8;ฏJลฬqฺ`\ร{HMๅ[ย[ปต?๑ฃœUฒซ€lU69|๛Rำ™fล7}๏€qน๑พค„Tถ*j˜ฯDBŒZศฎ๓}˜rฒ,ัšฟhฒิHจ@๖ ฺuูq*ัA9Ÿ6+†ๅ๕Vตท่๎œถฃ‡ผ>6ป๙ภ•Vผฐ ˆ05ฤฟCฒmี=ะƒ€@้ฃญ9ธX\`ษาya?๚ฃึ_ชณธŸ5UขwูKึใ๕ขYฐฬ›4๗ตไษ๚่i๖ภ&uYT+ฉRงิTAlนJu ณโJ•ฅวเไM@‡Wชะ|v'‰บ&Qฟ'๐=ฮ๕‹~ญh7J oฐฒ=tฃ 5ฦ“นญ&<๖ธvQ ]l๓œ“…ญŠณดŒO=B€6เtb3ึ,ƒุžฦP%}ฅN> ฑห*#@sKใฟํณ€o‰๙Š่sืK„xesณv฿D„gถ%+ฃฎ๎ฦP„OSื๛fZ๒Sฆ…ฃ)†}eฮ‚ท kD;พt•๒ย)‘{—…@Hex;็„uQ”Plคน ŽŽ{ิ ๓wŸฤcpท๏หดh…ํ1PฃCcผ5ะRฺ=ถ็ojุษ$U”k๗Nำว[ู=อ๑ๅŒ)กJภฐ๔กญิg๐vQก1D-ฒ_‰ฌต>แ/ซ+d์0|ˆศ่OT;ฏ\%๛บ[ุD‰7’ภไธฎ ๛์ฐฐ€&ใ\ทไํูG•๋ผ8๎‡‡๏ว๚๘คั ๘ŒsŽฝ๐APต(:)ิž~šฉณ~%จ ๒ AO๔ฆ#ฦ:‰_ๆndYe_#[ะVำ:ฤตงs๐~?ืกtฤ#fจ™wf)ญh6#‰c.พืฌ็’–กv_”KŽhž พ์๐“7ฌ&ปฐไ\ฎศพG’y6OธEฦ๚'ฉŠ&ทค,๘ฌๆJ=ศƒw็ ูŠ7ŸฤถI‘ดัw•ญาตq๑i`•8Tษ๊†ฺ"ซ@ฃณˆjlBภฌd็j่ศe[K๕?cคŒNฏ๓naง?|ศl€ฃ‹"ฺb<Ÿ๛‘mหพ๛สHนีจD:ด„t0ม8ๅ€k<ฃP!า๖พ๕Pฮl1rW๕ั็4๖ษH;kฤf%แ+„˜šีญ„&ศU5.ชลฆw s๓\๏ีG้< ๎์EN=&„3๋R แฤŽa๏57~&วAŒ‘ ืำ๏พ‰ซํ;"ก$uฺ ํL=/^BŒwึฒ“f›ž–ƒ๋LEgงพo vAhฤิ—ˆ}dเ฿pT‘a[ฟ;R~ฆFq๑แUgmจฃYUบf}ฑŠฬฮไbืฒ–*{˜ิฦMˆไ#X.ท๑Œ1zฦ๎ชๆ4eว3๚ฬ\|%ษŽ’—“Aจ…|`2Bm:gk•Šoท7q๓P๛žฅZ/›ๅQ@ฅวe]rAJ%8ํจ‰nิCช„ึœ่ฦ :qหBLrฏuมj๒์wษ„๏หEVฎ%˜ยC6{&ฤธzhฎ)Tย…ูTพนYแ`ถใญร๗jr•‡RอyVฌศห“)gฮ?=ฦท‹uกuพY!ฒฐx๔โ“W|v•ฺภuธsาา0*ส๚ผ1}๗ พย5ํr ฺยัน:7Ctfgqโ ๒ ฐ˜ๆ™ๆMฯ$๎W mbนำ‡Eฆ๋ไ#ด@๗ซoผ„˜*‘+ห๑~‡ าบpฅิf9fŒlึข8sj•ยGK๙[ 3B๛qทฺœkFึุอถๅBช`ข๘Œy๚o๖ยŽ‘ŠRอIษึ6–Yิ˜'N…$iธฑ–B4บeํ ่คN๑์Z™VFš๑แัsๅ’่I๘๑‘จH๙์ฦ`ฮT^ี‰๏ิfดO“œgท|ีs%ตฃLรFกํ5ร„R™=!œภ ข/—)*ฌ฿ ิ.ฝ/ด€oอง<ฒห‰Tฝfƒึ ) ๔lHบ๑ิ๛์ฟ์ฑS(. ,น‹ภR…RืK๚*<ฬฆz[พูl ๐yป>-ะf2\๏ญŽ<’$ฆฌ “”5ธK‡ƒ\ด๓๖๘30A๕gงฯH๛ Š&ถQ*๊Œ˜6ิฯกัj{ฤ‹'ภ™ zยŸภย’บT้๕๓Œ—ฤQ5ลถะZฆ†:พ๑ู.\ฮเล%Z฿‚—\wLSํZ™%๒? ฝห๖' n5.=€&{TอŽT'a็๑%˜—eศถGŸาyยƒX\E3_้0’ศุ่ลeพ06ƒfRZ<นtนศื|ิ’zQj_cเ/ซํ6ธ‘ฝ+5Z˜l2ถซ๏M‘ืฎroบๅบๆโ9ฉ้ญKษ}Š™^ตวืฑKVPฐ๊ํSmาœr›}ญsVๆ2ƒษถc}7็“ะอbY`จถโภeDกบ๖นyใ๒‘๒;!S&Vสฤใ!ข+8byะ/Z9้†5ณŸร,N?บุXฃ‰œ9O„ เใงM=ก ฤW€๋ลc>ึrฯb$?ƒศN+t8ชAไˆ.ลN†Dขoุ๋ผผ๗๋P$ลวฏ—วพง•ฑ'–G ขylช„3^๙ทย<๓๗ิšŠT<แ&[่โฺN‡dง‘EC2ฝฑสยๅ)๙`G๏็ฟRซ๎ กฤป=R‡ห๏T๗9^NOxD"ฝˆ MะR`gวา‚๑ภ ep ŽKฅชs๋ั•™4"Nฬฆ้zŠ8Pตล๗ศ๘'๗ˆcณ‰ฑิ•ญ ๚KP(๊๏ ็4ูฃ๋๎fe ˆ„iw;X{dผœ^แ6ะด~ษ˜๑JdThJษW์cฟgํ ฟฆส/เŠ"NWฒๅ{ณ้๕Oำวส่า@๕็ห/ุ_ดดyxEPฺKสFm/ิเ1ล…Sฯฯอ ใญตx Q๐2ชHนž&ีPฟ \‹๗กุ‡kŸฮฌRฆ˜x {ํb๓zฮœQ 5D[๖ฅรm…ป5ลืทผฆVGยŽ6‹ุ2,JŒ๖Eริ๘0Nb ŒŸ(4x์Ž๚P—mณ–sj่วฤ3yณŒNzว ม€ึข๘&ี๘ ™ช—Vqฝ24ฯeํต…หแฟ}ฃ^*ีใ“0?ูŸ.์ž้ q์/p๖žฒ|๔tšฅตมm…รหบกภฃชU=Fฒ0Œ๒Eส5/„ๅอฎLˆ|ฏ|‘็.5ๅrฬj5 |cุ‘ํ]ๆz฿4”เo =w™ะ„๙PFํี9ีฟO6ฌ: ๋๔ํkU&Bซc(ตˆญqfฏ=9Fั`o3‹ย฿^5ฆ{qhN(๒ทu๏X”ซ a22B5f*yงpg7G.8nเ์4ƒช\๎cn๋—ฟ๓=ฯ$คเu฿Vณซ ฒ ํ–Ž๊งwcไM, €บŒฏG/&‚o"Rาž'w„% F‚ำ €ช์’$*๊NŒชLA.>ฎm”!ษตญธน เ+Q‰&๓ใ“8๚ฺ฿ัC฿vฮ‹๙‘ว#†9#฿ˆ๙ษ‚ej๐ฎีืaฉL›Rี”H 3’๔ผ&๘ธรeฺํU=5oŠ๚&œ๑Œ๎{^)(U฿}ๅผJ{=ะ+ะv m“ำนภฟ ™[วŒๆNไ๛Vแฉˆh+•4๙๔+Gl^<ฃm๎ 2๐โMC„็Q็ว-๔`*]ฐsๆใFŽ ˜D"- mZG‘็ฎa(ว(QOี{ใA !Š™้ภ:ไP—,๊๔•JR’๖ endstream endobj 50 0 obj << /Length1 1788 /Length2 20273 /Length3 0 /Length 21433 /Filter /FlateDecode >> stream xฺดทctdฺ51:ถปbถmถmNวvาฑัฑำฑm_๚>ฮsฦ๛๗5ชv]ž{ฎนVี&ฦ—Sคๆ7ฒ50ฑตqขฆงกใHI+ุZ๋ะ3P ุZh่่˜ ‰‰Œ๕ฬmm„๔Œ9ฌNfYCงฏB;41@ิุฦุแ+h0pH;้+นำศ๔1ไlจ ๔ฟยฦ6ฆๆ6ฦไ_%‚ถv๎ๆฆfN{0RSํ๔ทZ€ กohi๋๊hiะท1HะHำdl]ฟœๆ2[€ฑ™พ• ภึ dฌPVVPˆ*ศ*ห)’ำ|5Vtถณณu๘/,‚ŠJสขT!~%a€ฑ @TYQ้๏ง’ฑอ~S*€ŒาW๏œฏฤฟๅายJJ๊rย๔ด๏@p1vp4;๖?ฐ‘|!/ดฏR[๋ศฬœœ์8hi]]]iLhlLi์ฌมงdf๎pตuฐ|]ŒญŒ!ฦูฦ่‹N'3ใ5๘ป$)sCcGใฟE"ถ ZQ๙U๔ๅw๚`_D8ํi๕ฏt€ฃฑ๑cฆ๏๘Oญ”œœภZ฿ฦษุF฿ฦ๐+ัI฿ษู ๗๏๋mlD๚/€ฦAg‡ฟ3ค;ไ๐?cบ€ํืiYyz๋ป็Š้8;z7๗ถ mmอีั`bneฝใ฿53ท๙ว'อ/#."ฌจD-๕%<ji/vlhœœษ_HŠภFว ggะ}‰TุฦHะึฺ๚ ต#๔_๚„ฬฟxrฒupงU[ฺุบฺxงืฤฦศไ/๋Fฮvดส6ๆ๖ฮฦโB•๛ๅ‚_Ÿฉฑ€`l0v34ฃ;๊ฅuำuQเํigk0ัทr4๖671บ@{:๊ปœœฝ==๐-hzV€‘นกำ—ศฟ6 ๔?ลmLl์r!๙๏ะ-?ู?›”k‡ฺูXนŒŒM ielพฤ@๖ฯ๛Y"ฮVV2๚ึฦd—ะฬาท6ทrฟy‘ขj*ูฃุQฤอุHฮษะ์_ฌห/๎ค%z~S+ใฏ๙วฅwY} ๖๋ะ1{fจ้Y™#๖ฅECKcGG ห?!ใ/๏๑ัh…dDฤd4(C.$ ฺ™˜˜Y๚๚๎ะt_``fxาIูศุํ‘hillพJvฮN[่ฟ ษส ๋๚วbcะ*ลฮ 5‹žŽ@k๔o&=€ึ๘M†ฏd๓ 3hdะZฏIีหๆ฿ฬฏdว3YดNfฒh1/?r†tO๗ฟ„ื‰๙ญ่ไ`kiฌjn๔๕k๑o)า๚Nๆnšt_ขฅ๒ฝ๛›๖@ฟ๛ํ฿ชl<ฉ™XYิ l์zfVึ/ˆŒฌงึ๐_‡ื?ๆke{rŒŒ ก—m 9ƒ,R›Cส|„ ฆหมˆูiฮ*ัxิ$โA—3ฆ;ฐ1„๒vŒy [2I mฅฤ8ด}’mŠีˆƒPญ>6Z“ชฆ๎Œไ๙v๕}ค}ฐแ„๙วrUh”2ฅ—สปศ%r๓ีK˜f3โ๐สc'‚์ฯั “Ÿˆ7)Zๅmk?ม\‹ๆ้ก8X!น-!`ub/Mw9}>ฃฤF้๗๑/Sฬ้ๅ‡ I€๕v#จใฦXฎบJ๐พj๑๊šฤ๖'๒ฉF5๊ํ-ฅฝlฦัEญช—#R…žJVส]^๊Ps๖ๅ|Ym ัศ•ฒ”aญ†f;ฬ”เpEี4ฆT฿๛Fภ8ฟA ฦก0ดโrนฌบฐR{ชU‡ˆX|ฎฒดE&l‡๖๋X้SkjศX๗๊ƒ่še2ไ P“Hโuค๏ฬ&xท[ษ%fmq —=ก"ฌn!f…j๕ผ ž.gRRํI0ˆyถ+ึอL>ขC7HE๔v/duฎoTๅว<—้J2ฦ2ึอด1โ:OฎtN|วxา6๔ผุ$sย~ษa‚ทืBmญ-๔[นY`cฏส’จิœฬ{74ม7ไ*!-…่Su7@ %Ž“อ'ฃีอkฅ๐”V”รฐ ไi„พ่Wำ€ืๆธŸรฅ,ณ2,จบtLง520};$งT•‹ช๛pฅ„แži$PษๅScop้aม?ถบJ]ีu„ƒ&œ0ฤIฬฒ์s ์พณ{ฐ:๚Š๊w็ฅ้ฅถไฬฏ=งัฆ(ซย‰T๑lq1iเNFh)ฤื lž7!=แ'\f&Uw’(ž.s7)1ฉ ฟkrืPB9f‰&˜d[oV,ๆ[ฎ์4 n”แ Sฏฬ๚ŸˆจQ1H#งH@Š็๋เ#@ษ8ะ~๊›~Ÿ#o‰ะT{ฅbwศg/PEสณฝ.z๘mydฟKx0“bฦKต“Ž7Y8ฑœZช\‹RMRj2vMp‚,„y—–Wz ๎หy“๐>๙(bNข‡Œฌk[Lม{๎Oˆิฆ๕WtIผ๋vW$lต๔‘' ต๓h๕žษ ฟร{฿่ ,n๊]ฑอ4ฅ}ำฆD•cฎ๖MV`/ผrาึŽs๎Y=ฬืญไW๏ำœสB<„vhRi0”w ล๑ปคz๚ณเ ’ฝดaŽ=› ฿aฎ๏.ฟx„ึ’…ๆ.ฑˆ‹ ›•)Wพ]ง…uธ0Œ }ทj็ถฝš ด†ฏจ9ดNฤพ=Ya6ƒฺฌทOŒโ๛ฤ็ฒ>Gฯ€-7˜oำ๕๚s“ ๚Gแ;˜\บีw^‹j๎~#pุ&]˜ƒUz3ม<ล'ชฅƒ?'K’Rf‡ฒฃ‚=y0 ‘ T‚d‘ˆโ็€ิoลโ-๐[ฬูซ–kณ  €บๆƒ5Fฆภ~x<[jธำ@ัˆ]ูฒ๔ฃs Dz wลh‚ฝ` R)'O๓๐ฝeeทฦมฒ6„0)zE%ฑ>่%j๙ฯ+๙pFฌ‚อำ ?Ay’UN š|V…บ๘!m—๒†ฺFWจ|-๘๛ซ%>ฺไน\b/๗๋]จ|^ึุัlPุM%๐zแr ฦ้dˆฮ[aฒKอŽฬา‘๒๏3hY$Xศซ๋x๙:ฮฎศFบเนoฌฑ•wพ้^aๅ8Q+:\ถแU’ P~1P}>M๕SใV1tjePr฿ZฆV€—า-น”}iž1Hˆu=า&3‹…$€| ภ๐ำ iฌEโฤ!3-ํT‹ƒีฃƒ g0A‰v%LD่ท`ะ— J๊์ฤจ:˜Z?<€ ัlำ`ฆU์฿ๆx'ฏd}ศ›.๛รัYhซๅE<สฺพซสฒ”ำ mWa๑แฮ,`*R†ฦeฌ\ฝ74ูส/††••๒G:OะRซ„ำผ$฿_๑w7งป™๗ๆ,๒‡o‚LžNfs‹ๆ| d4‘ธฬY)๚*OเกQทcภิf“•”-—ผbR้น๘๊๎n๕จุใย„๋์ Uฐ{fฎtฦ\#๗B} าณ^ดš็g๋ๆฉ;ฆงžต”"›^ฝ™งoซ@w[3 G<:ฝf&k฿ธT๊ี%ƒ{o@›ๅฒ€ล•N๎แศถฏ้ทๅํฬ6ค lซํ6„š๔โลิดะ™ค<†Ch‚sผI๑ทจkผ.E—€V‡ผ“฿lฒYJiPิ\œฟT‚่al_…Wุ“6u]jIˆำโFฏภ†nขPN6ฯCข๊€ศ๗ ฑส‚ิb้ปฤปมMณ#‡dํbถTื….ฮ A‘z,;ำ๏ย๐4็9อสfB๔พœIrิ๊ ก†~'ฒwชร๋‡ฑขe2ลEIส๚pฤLึi๑สฮึฃลU–uรd{€6}ูbฟศ9—บgฦ9Xซงs๊$8j /cญ๏*ฤปO˜fกะ ,]ห0žTงห3ฎ~0ฎ –สฌ=„5[ีqš+K™?ด ๏—Tํ๐:ฦ ใํ4หŒ K@E+‘ดไpํ ฺ {A™3เHฅ9Dh๑ข์ีฎฎ}๔นbูิ ˆฝu3์Gy“=~ฒ5kš?ฺ%uณ ฏฦQฏ๙‚ioZุTไŒ-@w…฿ฏ๒บ`ๅๆ0<še‚๛– 0ถE1y๋สะ†๘3“ฺหy’R฿–OUP<0‘ํiฑซฟ™K'=ฝว’ฉ$'๔ฎ{ไœ.”ึ:JŒ˜P†ซณ ห\>โ6ฺ†๖hฅ๒ซเNฮ;ษูhCŸ -ƒ๛าžาb+„Œ(Y฿ุ f!๎‰>‡•(ธhOQwu ฒ{ฆyฦ๕JฬE4คฉQL๐C8‡ F ำ60ˆG„™ณ๙'ฟL‚r“Fแy‘(ๅZuwงธaป_+ จ(ฒ1\ฑž jมญ๐m๒-•ตขbฆ(๛ใ@G-๎nIฌํuwฒO™cฒูข?›‡~ฅาR?ฺสไ4.!Š๕Œฝ ศR"๊ญ‰Yวย€ˆณฝoโiแฐ>๕Nญำ๗:๙†็!้๏ฬใ^ฺฟC_ต6พ# X๘๒ปS์ฎ‘HeชƒyyัŸMบ๓๗,ซตฌ_›0ตA€xฃ็ฌsŽ‚tŸG$โค~๊ZO"I ™j“ฦปsgV๗i9เ[งŒŒษ“Hd฿ซ๚’บ%R5ฆ๎c ‰\ํไO=งp้kT™R__Yท@KDˆ“)'่๚Dฉd—C”Xภ&STฤฐ(ฆ„Ÿ—ฒ~‹ํ } $H๕@}ถฺ•อJด็พฤกGซsภ;Ÿx&หŒ฿1@\™T]ฺ0ฎ>๗zP*๛#ฟyK๚; |MOžmดUCw“/J๗ฑt–ฺxฒMIX/{*dSH[ธภ‘|>โฤ”`ห3๙68Nวp แ^;พค2_]FˆPฆ C?te]P}—2๒ะ๊ ์[3žฎpฃ9ตr— Doใžแฑ‘…Vฆ,\C}ฎศ2ิ?Jด๗yOทตRแ‘_็_โ๐œ๖๗ข‹เ๊ธz{ำ=i~’๔i^๐ฺHOœญ’Mถm๓%vฯimฬ=๋"~ผ˜c๔jC‰WฎbK•*ˆ —)p7ร'š Ÿ B์Y.ฆŠดZœv !g6&ค[+Kูoิ0H‹<=+฿ฯ‚›pๅก~(๐ฎTfoฎฟ ญฃแิKโ.†ั๐ฤe๛mนPฉ ์ŽeUAhแ๕บfGOSGฐยฺl‰์dฤๅlถi๐SsะMPz๔่ฝŠQ.`]€—mUูXLซกŽ›ฦ}ฝPชK-ฏา‚ชx‡œฃwA7ึูPdฉ €๙F:ด’Œ๎ข@gษจฤ๎›ณZTจฌฒป*UpV๙Mญ@งxWE…ึŸํ๊›qค"๓6ฯข,` ‡Œใหœ•|วก,‰ศทlส4ืhหžwYKSbํง.า?Kฬแ†4—๚1ๆกJ›vCฐwอฅžก9& GDš™ca‰ต๙๓๋K{OšๆqมŠค้ก@นะ-เ_Tฅ™ˆื‘6๖U็ป#่่j p๙าH฿‘9FืฑO$่XROnŒfd™ƒเพซฤoฦม"/ภ๓–ชห๊ณ"/*ช‹ ๋p๒๎“‡ P_/ไฆ๋็I‘–ิาpำI!ผš„ยตM๎ธŠq ๙0"็ิํ†f ฮฆๅ'ฝู8Rƒ๗…eืAMโ†Žปiฅt?ผึVO™๎ึ1 Bษ ~๙†Y^$%pีไ๏Fห์พ%7๒Qบ})ห ๐ฮ‹ฦu๕ปเ–G4O”-ํ(๑!vถ๋๚โ{˜wฃl4ๆ็oS๑ๅะิบ—gT{๑Žา๓๎†๑4๓๛ฎฯฑ—hci๛แŸXญ”๐ฺู#ำeุ‰็ฦ฿8ง๕"๔ดฎืษ1X[ฃ ๋๐กกœ}hสm๕ผาฉฐ˜จ๚ฌ…d•F?z#‹mณกธx”ธตaˆดผ$1ๆ ํD๒=๒ d)ฐI๊ื฿ๆoโทฺฑฒศท›ฅq่,ƒa^จาฆSผž\%ฝB๔aCt ใ(๗แลํใWจY:ฬํ`ษC›‚‘โ‚Š ใขเ #iส/๏ษ'๔Z‘;w'.ƒdˆ๛ิ็,-๑”ฬ&ๅ๕qBs‡iMD ›ทE› “Z๛ๅ8~ดใŒก(’˜/‘จ0— Qข1U7๛ั\uฃ„Lsฦฃณž9๕ภ0q1๑Gุe BณเซN๏ฺ }\0ŽF(t‹าู‰=ยyท‡3[tผ g๎ดLƒedA9^#@๎BPข”kญ$ฮaลWก‡zz-”A—ด>า๘^ $S60๚P“ใ}อ‹‰4จ‹ไ†1แN8FธŸ+D2ฐQH›gC.็๛+ภHp๒“๖˜๒_]ซคญ๖๑7ิƒk ๊ี๕-ทh-$๎ณ๔ืUƒฺe’ํฦ๘‰iVฺวฆ๘i@ะ์x›™›ŠBW0ไ,่w้€‡ }Žผขยy1ฃ฿รใฉ๒แ–`ัฦๅ#)๐ท~๋UฅZ)ฆค1 คsO๓WŸ€^Tิ.จค |ชญฬ*ุ๛h@‡+&๎‰ฎ|>ฑ<>BˆเำWฤ๏cdŒ€wJัร,5{< t\็R~o7%™'แนจ฿€ถๆpTฅv/Nyเ}Gฑซntี?พVyEN5ซSn/ง R-Mžg๑€ n dา&œ-ŒV•๙ญ$Eฬคcฤtจ๕ yˆๅajซนส•WŽย5-์žญU๚ิฉฺ_ฏ้๐พ์ua๑๔‰Yำ็r!†jหฺำJอ‡A2aฉจึ%ผใฒกค–fI Sc>1E"Ncุrrฦโ ๔(h๎ผฮภลš ฐ–gK]6ึ[๒e{ๆi‰ฐๅA1บ\…3+9N;?t( G๙๚ป็m3ๆฒrวษฅtฒ-ํlm๛เ#ฮSเMH็aํนOค4>๗Oแฒ#๑\๗ž•ตpฐ7o…สu!ธ˜ŸJR๚ฯ0eˆ็เ๎ญ7$˜)5uŽะล2็‹\ฎืOษฬถีฅเแSยพ™_6)Zm(ฮ.ฒดโY^sดh#”ถVฉ'mป!Eภiืฯ๒cy่Š8ฤ[}™ั":ฬปV8ฝoVๆ(kGUๆ.ฮLoˆไl$๎ฤี+ๆๅ@Tyฺ$ Rw5™ฦ^ศˆURโ2ถๆ๛ตo‡]wยG>sฺ็ Vง"ญn_kiษtiŒะไีˆ_JoใIœจ…ญฺ}ศ,มู-m˜}c๐C๛!qŸ5Fญ“๑Nฺ ๑ษSเFLฟ8d๔4๎๒‹Nสฤฺ_ๅฅเž>&้ ำา—็wสสM๙จ๐Ž๏า๚นŒVดTIkูkM+ิLผ%แฬkmมฆy.Ÿ>ŒปGk b‘IทไOwฅ>p๖J‰(Fชฐ@ข๖ูyPEj)BๆBŒqแฅ‡‹ษจY‰t๕-kบ‘’7Qไ~(™ํ\k›Gb–' ˆj๙mD#[Ÿึธป7๗ไd# $CฦzƒหฐQ( dไ+ิŠ9V~Vค @ื%p๓A WCAwy"Y*ัf›8ฃF[ๆ3ฐ๛ฎ{ผp’ภญg—'จษฒ@ซ˜ำ๕๘คบศน่<คเwใล๎อUซ๙2ฦhฑ\›/›"•ฎAž๛†g๎i๎็‰,  )Aแ)ตฟ$ฦmYŽAxŒภโคฅ7ˆง‡ืT๓nเ‚S3๗๋3๛OŽwดF๙ษ's6๒cผ๐6z„–hฑQYA!ีNyU(ภ๔H(=๏~ื_ฏืณ€vๆ2:—œภ|›ฦฦศัy๛ๆ OUsนึ๙ํ๖S63…ฅอŒn๘ฦŸต’6๎ะ0ธLžพณ›ระ>;ะง™ฬภUฐ๗ร๊อซว+”ก*ูk‡›ฝ๙ูw–๘๗<›ยjหฦ0&ล~=”Kp#ฬi–Ÿ&†G.l ซ 6ฟว3?wฝ9<๙G'7INซษ8๋E'ฒฺ๙X์~ขจ๎หีํŸ๊ศ€๛ญฒxSdด—คํ?zFVtb#O=”ฉยmŸขUื6”–ฆวปฌโ @aO_7Z9<,"„`แบ‘ฤcฮชจู—œcคฯขื๏kฎใ„ท๚Lๅฆ#ผฯ‚ัส+ท vˆ๏Xษ4ปช5(‰y3๑ฮฃำๆ+ะบ]™ื็ฏ>D| yวvˆ๎“Žข"ฎตุŠ_M]P~*ๆฅลุฃ„8“qทWEฃศใ์] พฮŠ๖ eD>ัๅศํ‘'๎’็€Xฦดดฎ5jษTขฉ€ท5Pฏฑ๙D=O'ูใ๛žXŸบ๗b๔็ŸไDšๆZ/w–ด`6ข“๎Iช1แไภxตLAผธyUD๐j‡r๛ลg๒ใlฌ(/ +ใ\žƒล…๛๓`ศท|I ๅVKฉoโ‡๘ดIQ+ฤ่‹'’ผพcถ,สศ–`๗YrQย๕2ฃฺ่วฆ0๖˜โ‘%šมXๅ์4๕ร-‘๘€ซซ™ว0MKœ๓š~๓•–Dๅผฦ่_ มfUคฆt9้‰œ๏๗ew2ใš„"”„H-Žkิnซˆ—กาใ๒vๅŠœ๔าŒั';ึT\‡3vQžPฯe”ฦAสฏ ด๚ นy$ฌ^ฬเ^ฆมg[Cๆ=l&พกD`ฟ0ธ ƒหฅ๖œPมฒ}"บKบัysก8[๔ฅPบM+บฌT๓Lฉ—ณีœ EJๅvฐX s์ำ”ฏU=งRฯเฤ&บก็eLkL`Cฬ’อ`w†jษฒ?n๑WฦC^ญSžป~>…ุณท%<œชํข]กE ฒฮ.‹ฮ8ธคxด€lŸ)d๚Iำฎๅฮh LBณญผT8฿ฺgวฮ๗จฬ†5e‚3cq)5๊&|†ษำpผ|๗ บ#ี฿ฦhบN‹…™ปย[อ ืz˜_-ษีž*ฤX+ำ2]ษŒXฌ๗้ฉ!ํ0“Wค๓ 6,,๐?Qj๖[ฏQ}V7 HaC^‰KGG({?ฮถpQข]ฝEI‘(ฐฅ๒ C6ฬ์แอโ็nZhฑฺฝZห*šlC๚9>28–R"ซ$ฃ๊e\hH”จEg ”Gžขh†ค=ชลaียฮๆL(รAนAbืลฉJ+)ไโ๒QT•๊–m๋ nถ|ูNฆแR0 1X]0๛๋ฤ“‚w๊แวiิปV“ๅ~ฎ[ˆ‘฿S+ฯณ›ฏQ-uwฃ๑ํ็า[๒Iืภใศึ•N™ศšyM๖๙้ง™L>ศ‰wV“ไcบZม๒8{&ซdIฏbํล+ธcR๑ ฉyŽ&ภ/*"5CuชชUMลžั`‰s๔F_1V/*ฑ๊Jจ?sถH๏—B๗pฆฅ็b๑7‚๖9iศS฿yำ`ม4็หศ“น7Rxปx‘,;๛kLจส๎S&สg}{ึ›lP% ั9eณพvฌคDEึฆร†ีเปoVอ‹>ฅ|EZba‰'"ƒ#์๎@œJฐณ๑ฌTุภิŸ4`ร฿๖XฃแJV1Ž "eษ w>U๋จ๋l™E๎wฃวƒฬE.ธ๑`Aฬา๚?;๖|zมMฅa*œื@Rถ(ฦ/ฑฺ2p–}ภŒw—xใ1Uœˆ๊mป๐ศ|@"๚u[ษ{ฎ8Vdฆ?ขdj9ธ ๆm]‘ข”œ’ูฃ๓ ๒ูภๆBJฺัฉฦฯzYศซ)8!>`ฒHฉ'่นฆ#:ัxฃ …๙Sณ์Ž/ขบdท๖สศท…Tส ิ7ใ-_>๙ง Wวp–|๎คดฝิ๑ร*บฎฺ”D%ึŒ๛);฿Wก‹ˆTyลO฿-ๅุZษฺจœฏ๑=s2นxjตIโ์๛%Mิc[ฅ๊ฝ1ภ3P5ืฏภกฆเแฐมŸํž“ึฟ—ๆผ@ๅMซ•pเฒ0์ @ฐ๕:i‡*ะฑ,+๙j-‹zxW๚ีxล{3_ผม›๔š$n> C ๆศœlœ“ๆ9”?ZjzZ’‘f„ฌ!%ป๖ ฉc-ŸHผY฿ีkzฒF0!ปUเe”‡!xx‹็%ฉaะI%หห…๙อฎตXˆ:z่†ไŸฬ่Ž๓ฎค.ฌยฐณำ0hLfšดาฺcrค๗‘เใqIb…DJˆ%œ๕พี€ป "eDุึiu๛6mฃwuBจ,`ๅ.c K#๗‹฿a-หPฒ๘^ห8 eL‚ลm7#—ทไ2๓๕ aT ูกะ ~]Wsีuฌ๓ถฅ6Nขค็qเOุๅOฉขั๛2หDBK˜ฬฌo^๒๔•N๖ณ [ตลu/ถ™.Sม๐๓žิวห†fศ๊฿vƒ\ืs ฬ๋ๅน5/W ๑O2Oรkปˆิ็ัœj๋ฑถ#wำ„า๙#>ทœัJุ ๘'a,Dศ‹hอ.—โeNทEQ๗จณฑ>หวบt8qd3ธ฿ว๘‹฿fv`*๕ฺb๖ิว^ษฬ›ฎ‚QWฏs:'7ƒ1๐๛xคทืI๑๚๘๊gi฿–๕Zฅ”E •ฝ›/ˆแ๓ฬŽ๋\7ณั‡Œ9 —|PุˆซNฃฉ ใญ.ณ๑re—zพ๑ุRฆ‡‹”ๆ6QœuvOHด-ำถP•„ฟภˆeศกZัฃ–C%\\ฯG ฿#Pฒดฦžปฝ4Uค>ยžnŒซ‡ŠVaVฅสฅฺH]„๏"l๘ใ-CๆB0คB}งก|๒“กผHRฃ๗—๐(Oโห‡…EŽ*,‰๖ๅทืฺแ/ฎ›นต?xฤe:ฉแmkๆฆฯ6สP ›™ฉฆเH–ืฆ†P๖@kF่&kฤา9Bรšฟpvฐxฒpฑ๊ฟ/uซฝฅ‹™ฝTโชค๑~‘!„;ีัชุHa๋ษn9icn[›ฃB;~คa ›ฑง,มไmฅฦo=w‹Rหj๑ืฌ“ฃ;vค–$ฌ‚<š>‘‹nIิwcœลถ/M’ฅๅ—6}ฦ๐ษ–`ซ/ี?๓Nฉ&2+ฉr~๏“ €ุ/Uํ9’+Sคฟ˜Zœcˆn๔0N)ญณTŒ!/›ฝ8/ก๛ ’ว๘6ซ\ฅnD'ดCด9๖yพŠญ}ขTFr)Œw~$฿czƒี]cRถ๚`,ืๅฆv๏ฅT๖==๘.`d๘๖คยŒC O›r™oม ยgยีฅp–yฆถ%Gž’šcS็š็YAกaeœๅ,๔ฎ๑๚พ‹H ย/็ม็X้wBศ‰R๗Qk P<สB>ฉถ—็8พ)ะI้ฆาatย†ิŸ˜:6œฝ/„n™โฑไ~Q@aฯษxหฃ๔d’%+ๆz"ฮึin Vภ‹oƒS8า#` ‚ํฦNDp๔รPฤ•˜hจๆ[‹ึ๎ตqณ์ํdตฒr๕ฐฅุr$ร—ฒ๋ŸG”hcป๓@ๅO†ษฬ,๕{:w๙Hs/?ธ•ีzห๚†DŽัฒร4ฎ$ v้e›ม 2dไKPู3;ฑฌYA;ฺท?Ÿ2'็ชYะšํก’|๘ยนจ๎i[Lf1๛x‚nR`xภธ,(xบุpถbฯ Xo๗|ฟ๏7~F๖ƒสP„kเะI๋Nซiสอ)ฉMqนฉํJF}ฎy EžA 3“`ƒz AYG0ผาtภฎ่iร<ป-้SL guฟึ‘$อx>MŽmœแธ๓ ๙•O7ฯwใŠซฮ3;Aุ1่ฤa}ภด๐ำงŽ08ตณ๕บ๓ๅ"TiZษ‚ฝๅๆˆ‹๑๗qอlGฃŽฅฌ๖$Lืึ%ŽJbฯ๎ม~Iบต„ ‹œด&ฎใ๙]ท;"ฎf_ูY๘ฮu*š?v๎‰ฦƒ"ฮอGz•วสt๖I๙rkJ๐[ขuญh คxO‰็y‘Y5๏„๏v ตƒๅฦl“รษ o่Lใ.๗DŠ7šOๆฃ =ศ$ภ^Rp=ง˜ฒ c@ญภ๒…-ฐ]Hp 9\๙œฦ๊zีvิ๏ฌ‰๘•ฎฉF๋ึภ๓ภ๘ะyแQB‰๙๘๒j( ฿ีLฮโvฎ๕ ™ูอ™ žx๏.%ฝqb…)’‹จศบžm[ฎฒFT‡๏FๆK žกำว^w/r™ฌบpอซ์ํฝw3โt:ึB4‘jภะ )ฎฑ, j[S่ฌ้bJ'mO}ณ๘—FjิN‚,ฑ‹๎Z43i}8‘ท D1‰ฅทLด ข-gภ~ๅw แฒbF=‡๎ฆใีWrgฬC6ซb=А ‹ธพ{จ^ฎ[VดSขฒปฤ]๗'ตถฏฑ‹บI›49PZฅ‹€ธ”ฆ:Ž”ุ?dสสL)>a6ฆืๅ ‹‚€ ัY๘’Dz~M~lู;^ึฅง™+‹cMฌ#๖์Q‚ชฑข๏ ฃ5ob๘•B๕6๙cŠ+ฬฑร7Ž>“ƒ˜ร ฌ•ใ ๐)vฌไ5ฉ๊˜ษาCลพ’=ชุหฆ U(†maหPv˜ห2ฉ฿๋Lลiั็k<š?‡ชฯ;n?ˆŽ3<อมfฟ‡่{ค>฿’็ฌDชส.X•ีlRbw๖ลeฒ/ัPื…•HlVi”‡ดŸUŒXฎ=ฅˆ^:์mGKa&3าซ๒ผมg๖,์5.ซ๘E‰<๓Yก^Iข> อ๖์:Cกๅนรี|พmEผต| A˜ั฿FรB๗†›๙ใ•๓ณะร†ต)ถ]‡–a‹‹ีV๎kN‘2m&*๖q)3#Sฉhๆ่))๕zB*อาก[ฮsxฺ8 Ÿ๐H>xมแ7ณ๙ห๏จ๊ิฮ.ˆ9ANfCฏซŠ์7๕+8ๅ€ิŽล ฦ™Yษz๎๙SA๏าžํ^#ซš-‡eเงฬv1้C๛อ‚งXศแง ˜คอ –ห›ฑ าˆ™่ต26฿ัz˜ฃสWUX—i$จZi` Vกnอ=-_ BB๖ท?๖๑โŒฃ๚ผ๐น; -q๖ื”2,„แ~ห˜3ฝฆaI04)ล' ฌfzึฌ๎m/9๎šŸฬN,vOFl6st^ๆงQ(๕…Vฮต(l-๗š tw๖Iตธa’ฉYีŸ&ะacตน E็~Rฯ%†,žgมหณV›ะ'ณ3>ฆ๑ศ~H^หzp>๑ ๋่mผฐ+๏lบ๖ี๘ke ูy”ˆ”ค‹p๎๒อN‰G๑ƒ–&ณ๎‡ิšหฏจgณŒ:HB๖'…NCE‰หK๒ZฃExว๊ ฏะ 2Ÿ‹๗ธญ„ษGะฎ็็๙wm๕wีึ˜1m$t*Mี็๏Gl฿Q(\„๎-๑๋.WŠ:eํิ•ษม—๒C`T`ศ+"๙}จ๕žฺํ๒ืตฯ็ป๐7˜#M™>mˆ žฬว34‡9ฤะˆ๋Lืaโ„’z%>ใf‡GQ๏#ชฤž,bป\^กข|๋}x}๐ฮ่ข9P[–า‹้)2=v!ถŠŒ่ฑ0สฤ7`อ๛ S{โ>ษลCh|™ฯ฿ญ,ลKG$ห3?ฏ.์๐0†8ฎaฐ?ูตณวVศซสe๛ภณฌตา๗g ๐ wxl]ปz่ŽdฮH›e6T0,dHIW&˜ฃฆป฿ ํื0r~ลฏa(hง่๕ฅ฿4ป.ว+&"Fฦ(tARX~oฺ6S|ึDx]yOฬŽ]ํ9ํrฬlํ’}U07b๙…๋ใ๒ุ็YฺD?‚โp’Bข๎~ไึ,šOฮ%ๆฬฤนYXDฆๆkv1อฝห๒๒สพึšv๚ฤ0ฆMซขบ4‹n\WU=gLSฝ.5ฬˆ:Sซ|aฐูใjํง**ˆYKธถ"ู6fžอวๅošแยุrkูษ'\?ชธKซั>u–•9ี1่'บพืฅญ ํวห๒Xูm9๘Ž!2ภD)7yฬตฺBึ0๛ปนh๔Oฃj.nkฯ”_$ 9 ,+๐คBY& &UดบEฒขO๕`ข๙?)Jฟม.ฌ|๎*&ไ์2๑ำ…ๆฤฎ)X{e๎>๘mcZ1”:Uส_5UวŒ“(—’™้ ๘FCŒญŸ†อยAm๙Y]&X †๖pฒุKม>อHj๘uฦ˜‘Œœ†๓27ูŒFC˜F“ื฿ขจ๛ง<ญ~ย๙ฉ{Y‹,;ห กL๑‹บA)๏+3ฒ’ํ๐-ำ‘๕H,ศฐwŽ‚;ฺƒ–mo๚#ชึุฬ฿aๆRŒs˜G๓nตT—๔ H๙z˜ัYzนฮนF {ฑŽ8X฿'นๆ]ป€gž…hˆำอฒใušWŸื ŒŸvMภwqˆญฤฅ๖<ƒ\]้ภปž่ภDมHP/ศฉ๙ฝP)’๗ ๖f‰งซ…]g yiG„NeGไAvะ๛บmg„Œิาง๔>๏บS_๏ฝ‡[X>๗bตุ๖mwฮ›.˜“ษท๘มxXนEฤx™;jD&ฬ\#šึ;ย”ฃP„wภต‰pE+ล๖6ถoAฃ๋เ๒่ท๊‚s&าœง‡คš(zอ7Jญuโx฿H!ม>ึJฬF 9aผษZลต˜—ใwH๔ิฒ{ฏว๎ฬ'๎‡ปr|บ—8‡mป๖ด_aฉTฑฌคพƒ,!ƒ๚=ฝ‘ ›พษ0uสbฃK๎ฮ๘iwr%5ฌฉ}ขUฬํEด,plลซ‹5มG๗์ ฬ๐I๑ ~W7Pํฦๅ{.j12T๒฿๑ณ๙ิั็ฝ•Žภุ(+๚ขว;/Œฤgหยน๚จpฑฤ`8wc™L#™"“ห ๗ชbGไXง]hบฝaฃU˜฿vƒ9฿งU 69`œbYLš1ƒ/เ;u๎VฐฃํJๆิh_+ึEๅวBย„1™9Eซไh`ฎiYญ>BkaฑถkM”G๐ณ๘"gู~œYo">&0•๚•eฺv ขคto'tซเ‡ำŸ ฌBvbv‚อึG†็ด9E$G๚—.:่ว *E&g‹๋‡DบE›ญะ‚xJƒ^^กทŽ๐[วvม=h|xถluญkT•dร8•?ฑzzฏc-ไ1cซ:๊ ฑฆ[ตฟๅะฺs…ฒภdโวซอ#8ิโ]Fฆฮวe/๋ยeƒRำM๎R>Šฦ Bwฐต e0๏oBAวห:l5c‡EL™=&ฤพ‹ๅต™ฟ้…ซๅุ!ำธ…ฝ฿NฆLhญใ๛ฌ๏+5ุh๑?›เด‡!p๗อPืบkAœbอdณ๓mธๅยๅ๏!ะ.•uy(49ม&QYฬิฌปืา ิ ‘ิญac›-Cq˜qไ~X%ช?&ฺจใหxิZ9BรX^vl^แ๖|@5ส๕: ฝีณdฑษ7G๕๊`v‹ัw S*็#ผ’ล๖†a>k$BK'€j^)๎|1ไฉ‚0โช๏‡9†0`ฉZ#็ —*Vร„f–ฎ„e!ภ…f๛Cn~ๅ$#ด๚->'ทก๖เ;๖ฌTˆV3ูุ›ิ์็œณQK๚ผ/„wมซซร า†๙ๅ%ฌ{=ฃโxZ๖๗หฒชฮFซฝƒา5๕“ ๅR ฺ2Lฯธ‹$mฮxถf;ฟ˜๗|ถฤaๆ~%วๅC๖ฬ๕ฐสt›EตนฎํqOาyoHญ๐~bมVฐกวh๚อ๎ุHภ่X ˆ๛„(Pi ŸX฿˜ก‚วภชลuFคyฦฺ”—"ฌญ\‹+=JฟwธJXOGเ0X~ ศQH‰ตEuQึgIถ>โo1ษ3Qัดยฌถok{,}7:ฤหัŽ%/4฿b v‰‘๛ช‡Ÿmzณฤwม\x!Wศทƒบ1AอฑYงฒRkK+็ํ๐/ผMƒh*ดŒ |ถศ‘ …มฦ฿มฐŽ’๚ฉƒs Ÿ‹ƒ(4้หaZ ž-ฝจฝ๑šv9อM™5ฮไ-J6)<ค๎ ๎=๙ปำJ!$`/๋mฯำ๏ฦQa๐~>ฤฌFะๆq{ง0ภ๑๗ญู๊๊ฉ‘๓9ก0‰๕ฮ—s%REAฒผฟ่|pปQวs ฦ Id|4,V%T๔ฏโ‰ฮ•?st2Oฝ7แ ้ฑืilƒ}!aคแง๖F_ดcญ๋pเฒฅ`G๓ฮƒต>†ฐ›ˆg๑๖iI`ษY {c›ึHฦ" ยrj Œง-DิถS^>๙~ห9ฒช{?†<=š฿คป[n'U—๋”ƒฤ0ัธ็jวนynฒ๐ฦโ+‡ลUญุaG์[ฬ,[Lฤโ…ๆa๛ึ$‹ไl–e]•c W'v•6น๓SีRฅฏu$ษ7ฐจจqEVจh2˜[l,/ํsรX˜ ™b,Eฦ7จ<ตล&่กRtŒŽ`ฮฯาž๐ีž•_‰eื lห@–*_rฅฤN_;Œ็๊HกนI{ฺ๚๗’ขท‰ำฬhคI่!฿”Žแ#L๙ฅ๑ฬฤฎ‹(ุ\›2ฑีYu|P๏n๐IสฒR “m.E`^~ณ๓า)ุ7Ž.]๘-ผถ‡yฮD5*}  ชVฉฯ‘๓ุไ่›Bจ๎๖€บ๎ำP=U่\r|,๔ณŽsGาูฉงผOุ’e๛ื$ หƒะโSลฅrรๆwไขlศๅฉŸ๗ 6Hืก+^ ณ™#ลy3šแษ”FC F‘ฟ˜™—Vœpoฎน้ฎ๘ฝไาโŸปa€ใcAg์Uฬ.ฑDูฎ2hThฐื 9ซ…#๚๊๋bˆฌฎสZ‡ Œฦ1˜ยฆอA๙>*กoตSห2ั^Lฬ‰gลŸ็Yž~๏F๘J}@{คV‹3Y๘R#Fiฤ่ษงๅ)ฑณพดDแc†อฐ€”๗.’๙mูไบdฤœ“$X}(l™z๐ั‰0๖L3$š“hcสCัฒ,ฉยท&Žบ๗Qา๏>อ"%๐๒พ=๊ฆษ @`'นT&rฐหๆhB#f>P6S‰}฿‹)`ฉ9็#Rิถา`•๖&!ฎ”b๏ ก“>ั๋Eฅ’ื‰I ๖ซฌฯิFฌก €า์๒แ้ฦ&•ฏ๔]าˆI%^š+ฏ๎ีฒ๐=rŠcถ?Yqท/“ถr-}B่„ใ!,แฬวPNส๋ฉ!˜;~g7ฤvยWPษไชทd/wฺชๅqGZ8]kศ:ๅ/5ี,ฤBร๘ญฮ}lW;๐ู‘เ\หŒุนPูŽBFฅ ‹ค6ภH‘Mแ;ฤSท<’4™ ่เ^…็ุ7:q๓\”T [ูึฌPงุ™๏๘ขŽ๓–MpuฺT|iญ^Aา2rMCz–ตท„ฐ /X„๘ฤ*ฆœ็ำ*€ฦJŸ๙โoˆ-{z%Q่6Œ9Z ๎ฟข$Ÿ# t"_Z)Cย,RN_BŠอด˜ซ€ฌu–_šF/ีัต`๐97 ถ#œ…2ค;๔้ำl๖X๙?‰เ{Vg‹5 Q##‚๑ฐ๑a8*4ไ…q๓ฝฌ๘=ื ืrA†{<Ÿ:dCv่.DD“‚หT(ขฏ,4๒B#ท†REๅAg@๛RคํnEํ“ณzมฬL๗"แ—ถ aQ8@๎6xfํ^Oก-หทูQทฟัถe๘8/ฅ๏?ฝ"ภTืฺ๒๙ซpb›ดี{™%bมHมn’Sก—ลอK๋Wb…๐›เุ๕‡แ.`nซ'@ัวRณ&‹บ3hะ.ๆ ZยแัH=ัฅ ษgin๗VึวI]๛a>ˆฮ* <&ก๎m.—=กOVFo:ภ9ชBoๅเ›œs‚‹W๗;ู๋้ณฑฬ่R ˆ™/wๅษBFง;N &Dึ||ใฑ6@†ๆู+nาฒ"D)ฝ?pU2›ฒ9า9ๅนiฅ>•„gAฎ6๙ˆ๊-๊f—ˆ:žcyค‚SL‡!'_ มไป\iž5I๘ด7L3ุm*?๗ณํ†๒d;ด)ไฯพ#จ_ถ^\a#ๆhฉ!fำฬ„ซฎYfฟ่f 5_€๙ุ๐@กีสฺฤ›Oนƒ`้l[า=)Xd,’‰kส‚ฆ2E †Wx3’u็฿k efธื–ภฆ๖Bb F`ภ9FJxO/;"5‡ฤ'–!g๓@๘•๔ิRt(Cgรู†žปำห‘NAa&2นsณธืศๆ่bหiน—๙ำŸš๏ฅ‘ๅK]ณชrไX ค›O#กๆ‚*‰>น‚น็T๐:บ]P97๋ฒ‹4y ™,m ^ฤk9aŸ^_็,‘~๖>k$ ะฑ&>ดO&šฒ'Iฟ{k๐„ฉŽถ/ฅ‰‹@‡7`2ฮBฉE…Ÿๅ„+สฺT%y†ํ L๒h>฿ฒ@ึƒoท\^กพN)อ๐…he๚๛็ สณZยs vชํ–ฏฺทึ#2™ลๅก†ไผ์Sจ>Jท๎RbŒBu‚ U \ฒ‘D ลฌ1Q[อ?‹N—2ม๘ศตฦG๕c5'Fูj[!Œง๚ฬ0ฃฤI+Dฝ๘๏Cศ_Šฟถฬฅษมฒญึkฏ”๕หk:‘†ใMภ\่†คะใƒธv๐็†#๙ึDg๑N2›xิ%7บจ~ พxบ[\ ฎ/54ใh๐ˆ๑ โŽ๚ †ฅvVw>zxร‰(ิP]ัuจ6ภต™A\c„qใ๐ดผ2•ซทNณXC} ๋นเ1 ล“บภœฉ–'‘ผู<ุ›„๑MขฦS๏R฿ีฝ_จ&ซ4O‹ํฃ฿Rš™^,โ‡.“ฎโ–Ÿ๘ไๆ~๛Œ‚ˆ]t์5นื”อ๏๎RXพ*€JI—ญๆเ„๘"ฟ‚ŒB๚J'g %ุ…ฃอฐ๙V!ฃv๐ะ4S!eต๎\Oทอฏ;ลภOี‘S#็%ิ+^เร๐:`:!j๙/gฎืฒO RŽษdŠ9Ž๙xัlƒDg-๕Hฤ9จƒo๔‚1/6x|.Rpw,<‘QศtฅฝU ”=gช >!^ฝ—ถ.›P=ฆ‰๒{หฦญ๑จซ๒ศแศƒํฮ‹จ 6 (ฯ}DF/๏p้_9š้VP๓๘งw?CLFฝ?sKKiไ‘ัW6บจ8R2ถ”มmโI+ภ| ั˜๖P๗gฅ:‚๙ุ7ฬ˜ษP’ˆ,mb๏สbาฆ]f฿ ˜ˆ{ศEๆ8ดํั RžT&„๗๎ใ #W ัzjvtR†๚่x๑sxพž€n‘Pk]ส,ระ‚็MELอkGอzดmข™5Iมcํ€s๐ฌ‚yhVๆ๕ูb๖(ฯ1’ฦPืั๘mฐ<@n๋ะิ ย๚ —JญZผ่๚“ฃ@ึ๚3ˆ\›˜วปฯUšŸ/๑รa_ุฏ”๐t|QฏF†qฆuฒ:โžบš๘ฬี5,งศ์1`แ^|ศะyฆร๎ฅ`#x๙๙uUiญrสIE€sS\pก+ ข!Rg‰ูkิtป๕ฤ์_k,ิ‚\5ณฤZ๙๙7ุ*๑i‚fQE‚…W่;๎ถNSqชๅ Zอห!ceถ—ใSๆ8L๕‚$n’ู น+9๔ฤ ‰ไ™”\โ“ข<น€ธ)ๆgำ{]๎ท Nฮ€˜.cแ2 CŽส๑,†qํz@ x ฅ€๑‡+ dŒIฐD^M‘rแzg‘ฦะwเ฿€ฎป๙ฺัธ)– ภAO‚1cดWx่ำฅต~ DƒjGฟ๘น๒๛Z’ฺ-“ฐDฬ’@้ฦ’@r^~"kXั…Œ๔ฎ›ศีŠ.ึJรV|XใพkRI{~iึRึXฆ„๊&็ตŸีฅํ€L๙งc6{์…ูาl฿ ๊ะ}n\็พค6ฏŽ฿ษ+ค้J3g#ŽbztBแีE)wyฦ๏N˜ฟXˆฺฤ™Bฏม(–›Z:ขC๋˜นฒ2~๖ผ์‰ีช’”n&ช&๏อtY๗ ใ*๙ซa?{m5H•r:;|+ื‡H็)fฬ)+บีกZไ!jนํ(RggโวRy<"ชCGพrP.CCึœwnJ:N”]F้5ฆย jŽฤ๊ ณIHŽ๛‡@yป„ะบ/*!{ฦ)ำy๒฿38m_ชLฎจšFอ˜โ,๛@ฉŸเh0\t ั>pคทพŒิฐฑ9ฉ9๚ั‡ษฃ‰์Qข2oY่ltชษ!H%T ณDrฅlZด›ง•ยเKฯนช{ŸNlFkภ๕4=y๐^’>g>P"Œ๓Ÿ•ฬะO@ณำv4 ๊œ‡์oD-ฌƒ™๖q๖De+กงS*ม๑5ฒfฅSำ]„fO. /H‹  vซ๎ๅ)แ๑Qt฿J้~ฤๆw%g-eNZบ=u๑๏๛/ MŸลถง—๏iมyซ ;m฿Lไ90Ÿr8ใฉ&•ฑSพ&‡ฐ%œl{หป—$šš|2yƒ2j๎C คธ)iบรŽธ,๖ŠPงT34*ัไปw>&šีีœ“kิำฟ\ซ‹๎[\rฬsด†Žหฟ|‘ืKก:ไ%ิโซไฆMG&g˜mkพy_dSO@ฯว๗๒5 bก’3>AV๎๊ช฿"ูC?ฦะk๑I;ก„ฉN~ภืฯฮˆสs‡ฟh๘u#~ำ[ž#•ษ็8Ze_[ำู\=มЁนณ}กbS๔…ฝŠฟ*ำ‰FXbq‹a†ป,๔ฒฏYภใฎํษึŒ๊~”f?0N Lฺฤอ/fด|xœy^—ฅ7๐ผ+ว†ฝฃ-หม ฤJ—Š7์xืžYiหฃภETx๙ qBื16EŠhhXz6N]ๆ%ysืฏ/฿r‹~ฑB(ฯ๕ <ม.gมทBยฎภZฯฌCE{5w9ฟ—&›๔Y>0ฯ~๒ŒkSถ3€ซ:lS๑ูrฏซ๐DxQlBฏFป๋ว'8ฯัภฟ‚_œvœึ๓Cว“๛ +U>Œ$!/‹G`ฆยๆ.แปVย>์>ณืภ ูฆ ๋บ?ญคŽ'E5šใใA๚ฮnAๆฤฎ๒ฮr๙๛ˆะŸไัภฑ‹—q#Eพ๒'7‰ัMณf๓พฮณBลพ{ิ$ดฏž}พtวฺต.๒ใZส+รJ Tฺ/bdฐo‚บPศฮŽสฟXoZ1\ธ ’pว๚๊ม#Nลญeผ!“IฏŠšD๛'g73—‡ถ8ลฑ‘๋–ฝคm6่ืWฺฑคเ‰Hำ˜8d5ถ‰wHTd+ฒpฤMดWš^N๎็PƒหฃgkVฑŠQย)ำ .!๕ŒSส“Bร*5ถŒ๖ใ rฮ'r}[:v] ฎเ๐Ž Lขทภ์/bd˜ ๐รU๙N’e’EQOด€ขาิงฅ`nลE*iแฯ8ฯๅ๕ ๗žzu€ด^็o, {=‘#โaZoaร,โšฎDใ้๐EH}ภ=พ|ฌ,นvv๙I‘สŒ ”ษฏอ‰…ีƒ‘,ฤX~า๘FFCขือ†hฏi3ผ!55rฦฬฦทClดD\’p.N.~ปี8xฏ >็UฝYX62ๆp5TtcฏŠฑ}ั :ชŽนG0o‹TŽ๔ู\ฦPy่ฉ$rc €Lาำuข;&\๚‰ญˆ๓็ธbง\J!g•๒ฟขgCtช6v›ƒ'V8)d๓ใ฿Gj‰akUk{‚ิ๗ำ4A๑CฤBผ๑\(ย็[บ้$TP{บด`ฟ ป•นs๛ะุ์'‚พร๚pฃno.,#uค~ผ็xษคnd fo{ฺุ๊J"žm.๙^vJ*ลึfWฺ๒ิƒ๊)Nฅิ,†๊๑0‚_:v`†•ฯ้zณฦฏศ๓พฮฺ”r`’/"า๒5Gฦปอqdูh„๑๑Šiขท@X‚"!ฐฬดl .ึi‰^F\บฝLˆ1H"[฿'D#’V!ฌNๅ€ค–ฑ/5MaฃMฮ_@t-›\TGฃพr?#t‚+š’ƒ5ZยTPbบจ’€4c˜3โ˜ุ^mฉฎˆ€• u(ศ42’แx˜>ญ€ผ]ูaฌล.P๔NTษ&ไ <gฟˆQ.|Qล'Aฟ,ศžฎ”๑‰(๚a)ข‹dดใซ˜๛บ›dเขอ`ูwgi594๓ ื*กึs_#ํ+๖: ฿๕๋๖ }ตซ๏JX~VšHหA“J›ไ0(บšMdS’—ใqฃท๕กฮ๙‡™I]ป:ภKึI?า“†ž4LmฆTชA$ีwืtขิ‰z&!€Uๆnิ๛-ด…8"ฦ ไQภพิ฿{Ÿo–SD]™V:ึ ™Wd๕้#y๑ี,3ฑล์ใ{>ฝftนพVเฯภไเEว—Vv]ซ[Œ"V9J/eก*ƒ€็OMOฏโF๖lekชcœ่่็ตVปMัฐ๏ฺ๖gฉiุfš๐ฆkป›ฃๆด$ณ7?7KOป%ฎ|3,z”ฟ’Mเไ $ฐแท— M,eCผ„qา้“๕)W๓น๋e(xาื์7ำžะm%raIึฬ‡Q|๗/’สีเOกะฑ๐ปL!ใƒeพโsbฒนR2ra7ฐดx+ฆิŠQ~ิymVidg5œC}kXuยŠ๎@็ิ kˆa๏ฺŒฝu•๕d๋zงX๛ฃ†ˆ)‘Wฯpซ€ตF13AŒvรq๙๚ฺ"๔#รM๐cA‰(ษCตpงฃŒY^p|9๋ฑ็ \๒,เจ@๔พ–ƒJฉเ›ณ\ชOLfภ#M๛›ๆ.รJ3Gmฯซ่฿cฟ9ิธ‚ๅืใ b๊Pšไๆๅ '์ฌ\๑t4•>V i|B‡NถบฯL—+”ฬฏLจง๔0ลกุฏแ"ยสh&ฐ–-ขฺAG^|\ป:OGj l“™I’ล& qOุม8Rาe๛ฮL์B >z\ร๋Eี‘?CBะฐRƒๆ็ฑ.r๑Jฆ;u/ nNโcˆตฒ’หาฝŠ~ํj๚H๎Yหธf๓Šโ*Dค฿w‹…[G๙ฏ\“8ธฝ12—)๋๘!uทk๔sgฃาย๊ลผž6Pท8ส9(ซ;.CXฝข๏ูf0ั H,/‰,๓ศpo+E@}๛Y…u5<:ลำ4y ๑ช*ีjรชFชP`ญีG\ฯต)บ^๐ษhmM:๛Aj0qีŒ1ZŽฃ’ ฿ฟšฌ9‡ พ3Aพสd…™ธ_4{:๔6H`_“xฟ’ณซk ฺ7œฒrเ๑GŽ›ใ2bfฒีŸดBg็ดŠn๚š_)บˆ$ร$Y์ณวใIl/[ฅlcŽxqฐRศดr‡ ‹ฃ˜วฌธ^ผˆ ล_มBxsHดศ1พฏF|‘c~NnฏแปEณืณ~m[ฯŽตR่j+์‘‡๕Mฉะป ฮวดJ฿O„€_ >ก‰$ฎ๋•ญยึเว๛ว3V?๎\UZ๖;วW‡ตแ/g1รพฒ?Gอ๏คฯ{Naอ*F๕ฉbจb™PŒUŒ 0t๊ฒMก9๒|ช_po€ปอM7f ‘์"ƒ ท`Sฎ ไsfsช๐ห?ศyqๆ-่}ุ&ฑ๊}าm”6~ิšขาซjูR%\ก๚6ฐ)OK ๔Vส>ษโoฝ"ํ{พ่0ศ@š?ฮh"†สjใูบe> stream xฺดธuX[ถ>ŒปSR)nล]‚“เ๎.-Pคhqw(ฎลญธป{‹~tŸ{ฯ็฿ฟ฿“'Yฮ1฿9ึJจ+ซ1‰šƒMR` 3+?@^AlobceRZบฺ™8ุ™YY9‘จจฤ€&.ึ`„‰ ภใbP2sy‹}๓`eๅCขHA@ง7ฃ9ภิ t1Q๗tฒhM”มฮ.Lฆ&ฮof ศาค{ ;x:Y[Zนษมมฤ๔'ำŸh1f€ฌ‰™-ุูึ`2ศ2+0ม๎oJk-0Z™ุYภu 6@CMRU ญชคกฌFว–Xอีม์๔?Xฤีิ5คขŠ๊’ &#@ZCMฯง:๔†฿’ จfS็อ๑Oธ‚คบจบŽฒ$หŸ5ุn@'g๋?e ๕2ภ฿ะB-œภ๖ะZนธ8๐ณฐธปป3[บ:ป0ƒ,™์ยงneํ p;ูฎN@;เ_q™ฟตำล ๘ฏv om9Ieดkๅ[ะ›ๅ฿ภแ๒'งฟฮ@เ”ฑ2q+V^YY`ob r‚L@foŽ.&.ฎฮใฟtoo 9อฟโฎNNj(ฏษ้฿eบ๘me๚vพ&๎ฝc& Wgฏ๔ๆ?—m9[;ป8+#`amƒ๙ฯžYƒา)ˆ*สHIชฉ3ษฟฤค~๋ˆูลรๅ/๏?๙D%ไ๙ผฌ6>N๋I%Aๆโ`{๛7ิฮHฺ'aึ'ฐ“'ห%ถ-์๒,ฌAๆzo๎๊ภขฒvtสH๛› ้o%ะภ :€fV, ล—?jถ?๊ทF๘z;€&vฮ@_k เษูฤ pqr๚zำ๐Ÿภฺฬๅ๊oว้ฏ์2 0€๏_๊7$k๚ะuT้ฮฉ9d็ 0Z ฑ(‚](A๛ฯI๛ฏZRฎvvŠ&๖@ฺำำv4ฑทถ๓OืrัAKซvฒ7ฑ๛/›ตณ”ตะ\ฺูลฬ๊_ญ—^ฦลไข K;เถฅา๘sค์ธ๛6ฌŒ/'๗ูhif :;8|kฤ!~๋ผ1 อ —6๙I‚ฬภๆึ K;7ภฤษษฤ‰๕ ์\\oถ7b›=" €…vy 8ธบ๘,ภNH6”‡ภข๘G๕—ฤห`Q[โฐจ[โใฐ˜[bใไฐ˜พตy๖xS™ํมส `1‡ศ`[|ห๒WรึผUณฐv๛‡ห ฐซำฟœ\+O+ ่Y฿tึ฿@ฺC|[?ฤ7€๖‹loNล๕ z›ุ฿ƒฎ ‡๙mSY€Nึเฌ‘ภ๒7^ฎ7ษฺูใๆท,๘-ฝ‹•๐+~ไโGภ&ืฟE๖7๛ฟา'W”ฬหฟ๋฿ไ๙Ÿษ_ฒš‹ุจemv‡‹‚‰‹“ต‡๋)f{ำฟฝ๗›ม ๚{#ZL ์แอฤษม `b็{ใ็Z66v฿ˆ5๛ืLk‚ผฑๅ?zอ็มf!6ษ a%~’y“ฅฐT|ฬ'ๅธBฺฒ_`ำ&ˆ๐%ฒทศย๙M้ิ๙`๙~I Bmชป—ตๆฤЉs‘m??"4Iั‘,Mf t…Ÿฅไt‡ฒYน:Eœำ้-_ZH#Gโ|mฟ?ณฟb^}%ื/mYษu/˜ek|็d‡ๅ๑ƒฐ่็d;คห๋๏wฑŸLบE้gŒsรpGdแบ:ฑw ??Eำ๎ค๓ย–คํธถคqฏ้ŽL AโOI\j)  IะGยuO๋QภK‚Ž˜@ƒ’๏แ˜+3)N“|DP9๕๓ใฺGGD}9(Y๒dน๛ ู–’?ี^ฺK5=ฬฒUธัCู] ‰^—žs,[๛ ภ;–ฮx๋๚kใน๖@ื^g้e แWข1BT")(ธ“j$/์๙ŒEI’+jภคุwฅ ข{K ChL|พ8h]๎ห๒sฉƒb|V€Xคœทนฝไj้ฅN'ษต{„๚]ˆ}ฒ๒ย[ฎก nศKŒๆfP3)ฑ๖\b5ฝ;YH€xล…W\ ™฿’ื\oซhศฝต[ชA์๛Š ส‡6+†ๅ0XC|์-ู”ธŸชห๔LฎโงŸ9ทา"\c.๊นๅql฿ ŒลG2๒จo ๎žำีFหึ$&+7pง[/ช™๚DืU{D…ฎX/ฟ^ญน๕4ณ$๓’•๑”ˆํร๕๊,3กA„3Wขฦ|UดฌŽงฤsคูะY่.อ&๚้๚RA&๒‘dMณะ๑ฑG…ะs๗\Gˆฺ่งˆดœE๋ฐ.ขค~NUG ๅ+ฐ"H~y ฏ:†_š–q๏2ขล์qะˆดBЁ]ˆ8นๆฆุUrg~ๆฤตS๕ื}Zธ ๎]zซa>ผช๒ัหืN›W๎ลyZn๘;ฉW๏ Wห‘ +&ฯฟฐี‚ฤููษ”ๆ2T๊qิฟปx^e‚wฅ‘ฏa Ÿ๋I:>๙ย วC^ƒHcด„ บƒุ‰dฟ e๔๖@ห็ๅE3E•หT>8BยฦR๊’ HŒ>r|mๅ่ฤ$*ำฆ๓Mบ อฎ(“๓WสhหeT=RฟmŒis0์™ … เปง*อDุe(ฆ~?ฃl฿Xๆ“.ไฃ…ตฮ!›๋๛ ฆงไ!Bq8ฟบสเ‰›K`wŸ~C๘˜ภมคอz=9%ดฑ๓๊dkž2ปเ์VG^แึZฃ”ฃวี-We‚sจัชก†ฉSH[ฺ—ิหˆgฦ๚ŽพU>๛]ัฉ@H๛๙ M~๊Pยนํ ไyPv>nIฒ๏cšแ่ษถ๑ำLMถn˜ˆ:๔šื๔W`ฅฟ#ˆvsjะ>รโฒIƒ“~g=€“ฮนฝ‡“;O'ฉE์h&Ž.P>zœ`Tต!ํVธลkz๘ž‘ B$ 3ค’๋3X_}นdq[ๅ3ฦbบ„q3าOyjฝYญŠธw>บMวCฮcŸ๙คvQีดv}~sEn@žo5ฉน๘NฤกฒSา๙› ไ]ืšfn9ญ'ฑๆ๕ฟSe๏๑œSK~ฯ*˜7ๆXข์P๒"^1ฟ6hpห๊*™ฐ,3฿…‰ฟ˜+ไC`<๕Iกะ"๛๓€€Cช˜ljํqขขฒO™้ื‰ฯ๒€ก‘ำIฆ๖ฃมแนtp,P9Š~•›+|๕†Qฮ ขKฬฬีZท์ >&%>ค๕uนŸมOM-kœ‡vœ|qำtผค Qzc{Žฮฉ˜ฆFz%“?(™i|kิQfศ็'‹\–A‚ุ€๋ิg2iB๖ &d0ด๗/ต็ฺ๓๖` œ๓พขYc„'7หฦ1ตํR aJๆp๙เuƒcˆ%๛’๐8ฎlๆQiฏฅmHkb’Tฺw|FูPรpi๊€`•้XTแญซฃjbาƒ[้žำEu๗0ไ›ฅ,>ภภ0๙๕r[Kณืห&vV‘ŠvN IZ7Ÿxรq๑ททก…ุะ<;†Ÿ0ใ|ษ–ใ:@ ฿|ˆ?+ฬฃอ฿ฝกาง)บิ#,ฐฟt>ผ>ี%ฌ:[B=8/_๐IโJ!๗J%N๛แ_ Yธ…šv๒j)ฏ+aู9qฝw๔สœษผแษCฉ)๗`*~ โ’–ณuณฎ^ ฝ6ไy†wฺlทŠ ถL"ํ‡Q๊+G฿ ื:่ž9 ีึ˜Bี^67†๎ะP{!๐7ฤ฿Mkฯo4h5*šๅฉฤ X๘มทถ฿‚ห฿hEะj๔$d4<ค-ษฺฦjใBๅย={ถU๋O่.fฬ(ผchํ๋<:ž้bศmฒŽ^ทฦ”lCŽฎูe ฐ ~UcšๅBv๓7ำ3BฎมฅฟƒZb2Pโ็ ๅc0โƒ ๘1DVฆR'#อ[ งž ‰๘ๅื‚ซJำ๙รGฃ$ไhytCช%Ar›Wช6lนxหm{็q!ฒlรA ุฟๅรk†~q} แeC๑”ฐ *ื$ืใช๏ฤ9o‹*๊kร‰ฯบE<วท๔}=ฆ^คKตใะL'jศ`แฝ–bœฺเญค,!์wฐV๘^ƒAี7็$ำฯlซ็ท2Ÿ5ฺzฯธ Nา~ใลY’บู‰1จ{g๑ฏมuเฤฏำฃร5+ย/a"yฌŸฒฬูง1I"น๊๎pีนpัธ‚ฃ‰:ภ'{H?V?ลznopIโ๕,ชk๖็~๕๎วฬbฯ~ีšด,แŸ:Avห*!ิ๎Šfฅ†D[ฺ๘ ๋›aŸฤkฅqซ๑•Pฺ๊%ฤEปภฟฑส/ A๖โgฏไ~yš_>Toษ8†ข[a)Klฯ\ี{ส{Jrึ#wตˆฃะนซ0PฮSธธ“%5Œฬ_™Rย™gบพ: LB"ฝฌ2ึEึฆŽzช;ๅ…$ ๗Oๆ๓ฐแฏRŒ]Hฉดคฦ^wvทt?S{NCํญ@ว*Sš€’yfผฝทl“๕๐L%ไ5ต๊ํŠ›ฺf๖mย9ฒ_ไ๒๚ฅ;ทค‰–ุฌใac{์(Fc•†ุr8ง๒-Nรร?๐8ๅจิใ&<Ÿd>EeVlh\จอ๖ุฒมีข*p ศญOํu.lm?฿ณŠx1,†๐ส‡๏–๙q1lAฐ3ดญN›†%šะป'ธ่P ยง™SGLม3ฬ๗โK‘้RNi฿\ฒan—”g๘ข‡ฌj|ฑนrเ8vถฉ จq฿ฝ๛ด‡รศ˜อX้9VฝซMvzšF/*‚า`ฤ‡vN‹Ž3)๊๙๎สุ๐—1ม;ฅ-‘K[ถฮฎป*๕ๆ|;\ำIณRิ†ุ™r_ฤฮ9“แVพป๗Uœ‘"|ไขญ๔F๎[ฏsc"็tCxกจ=ผภฦnmZ[ฒ™ฯQ‡1ดAโYบ4?๎พศผ๗ฝ๛nfY่7(]h๑iส s=5กœKwๆ๗~^๔Oมbโะ€็—ซึซ"ƒ\3`๎บฟำx๓“ˆชีsŒ6ศ–ภ],์‰ฯHli\<…x<ซ\?@ม๊Zuฑ9๓D฿ƒ+gžหพก+:เ๚ญXEจำณ„3„ช)Oภี2-˜vงจ๋’ฮถMH—#8 ฌฅก|6c€ŠU็‰eม๔ ๎ยำทฅžB้ไƒ8"ํ็!ม"ƒณžrฏโZŸWุพ}+L}Œิฃอ็จชTb?nHบHPh”š}\rDณ_๓I1ยั•ท€F‘4-‡WKอ๖ดนธืฤ2} ุฉั‚PA]V‚t6qณถ๙™ู8มs๑\ัำ‡พƒ€…!ฬ๔วH5Ayfเภ˜†้๕๓ry๊ v‹]Ei[rฐท>฿อmฯท.๛๋˜ู-W|lŒ|cfpฯส-๙™x@รkšฆะ๗ „Asึ;ฏฑขฤžฎคฌP๋ฎโ@4้—"+ูcŠูlBญญ8ฺ{๕ขe K-๎ฏู๊๕h#๔gy\๕ํฎ ฒeทฃYิไ”ญ˜๖5‚ใควwPe๊t”7zJœิ›ฬุ|cํ"๖ญS'ถSษำ=H$ฦๆ[I8ฌ›ฝีO1rฎย'j๊iศั๏*เKา|สD›yq3‚ฉ^ึ๕F*bฏ >6ค7( U๊นฏิ2;ๅใ๘ฒล๔๋๗๛\ฬ7AาึืCงpบmU่ ฃขrfYm•ลQิ2ำย}ชร๓^ฦ-ญ~ุฅษยUš‡R ๋ป‚ั_’N`)W=ฯฺdอๆ‚วhN0ธu,ชั๐ชฆ๛7G"_ื^฿ฬ–แHfY2Œ)-@่ฬ 62!}<ก$d`•Rฺsยภ?]ง`ง[˜GzŠV“‰7อ\m(\`ชxฌh1ฒ๎Eำณผี์”ฑด,Mเญ๑q ˜ผŒ*ำ$ทษอDwทภtuEg  !ฮๅI„หฺ4*=g,ํD\(zฎ }ฺี7๏ท/ฌษu0 "y—, VjฮWt‰B~/ํ< พ€ธˆธD‚ม{@ +€tำt๒๒่ํt}xT€ฎๆฐฅ5#Vjก*tูŽข่มง๚สoัz ucW๔)าโGฦ{ๅื,ฑฏ‰N/’1—v?ฤ๙Y›?ฉrLsA˜c”‰+ษ๓^ย6๊…ศา†๐ฃ ='ม;ŠbW †„ไ/๏_t…ดk=๐ด ธ7ก\…บดŒsVf4เบGƒ๙b9wc/x*์XGิก%/ฎ฿ฺ4• (K-Cอ^๚Œ_2ำiณ‚ฝฦ‰Dorถ]{bส6zาk—โ#ภร8cˆQDp˜<ฒ^HP;วฦ๏ูฅsแƒ%ำI3Š๐Vำ?A#ะ[๋\›ŸI้›๊๓)ฉ•ฤ^›ั+q้A*ึๅqต๕+ืฌ ฺ๊aฟr?ป—ภู\pใๆฬYฤ้H.Y[Žvm ฦ–p ž‰Rษ๊˜ุธ฿u‚ฉS นทฑ `เฆ†voX8ฑˆ๔Vะฐิคดˆ[Bโฮ`>ูctG YบJ@่j)ศภ†\w.๛`›ผฐH]‚(k;8[เ์g^›-ๅฟวฒE†~ื๐‘bAu*8›ํI@6•คh‹4Vอคs๚‘lุiฎ|ปr}ู^Zะ+5Dฟ ย ชึ๑'j–6H†นแ๏9ู{aฎ™ๅZ๊0ีฬลทซUŽฝํฐC๔E?๘cปD๘-cฟๆT:ฒO…•แ4hg๘ลณkยถ:MลชYFตภ?มˆXYaŸ๓ตgผ…ัoUงมธง)•ฬC Nฎg*2ง)1 ็ฉB•ึ๋&<๚g6กฃฐหๆคœแฃ–FฅI/EjGVี็๑มn๔|Dฌ–`เฏ$6ๅ หŸnH(NiฦิU-ๆ…ย1– E(เ€๊IŸฑ9‰8šฉjด<)วธ“ ่pE3ิ (Zฝ฿ฺธoๆ  ;ุ†jบuฮฃ[[zข่aๅด^ฆญ์เๅ—ท๖Ržt„!ฬ,ำณ๐^O%nDใU ส ์ฎ6ˆe๏๔ฤ์ๅHฎฬˆfฆแ]๛Z3ฃSŠN\ึwšs>..ซ*^Gึ<+6‰’ฟเžา†๗๙/—™ํAMaJ‘.j?ภฤtโlZ]ชญ˜ฌ;9[{ฐz!ไ–BC[Oqบ–ฆทAวภฒึV๐EฅCฏsษๅO†ปI6ณ:793JXแOB"หูqŠx)f็J7ฒษ๓ฝ^‰ูแภ’ถษjvฝ‡{8ญFV๘ใ่U~1ฆPŠNf†Šœฤpมฦ0xJxป”%สELา็=p/d'ทWR{i'หฉื˜<ฏ>1ฌ ํญฅiฯfชn OI9๔ƒแQ?๏{Kฑ รeจย.†E/พฏd&ุ6๐็ กCืฬ—ฏฝ*–hฯ$(,/^!๗…kรo!$ืZ7ร๐)‘๊Lพ ษ๎šคฐิฬ่ๆR๐vาgfเF แ€„รxAบ[~ว๒-Q&ธ&M_ –=h๓…ื|บ ะ.zu-#๓ผท™ฒ๚3ž กฝึ๗๐ห™jะWl๊า‰9ุ8ล2kา'‰kฯยดPๅL4ดฯI…“ธ]๎บ… ชผl„oกaํำ5 ๓†™=า$ทโN`ๅ+ฬว3C‡ยฮV"Sฬ€๚ู,ฟ๔NDซn๎๗ณจอ*rŽฬ๚ทคนiy9[šคEนตjœถำ‡ิ๕สa†h˜rnATWgT๛ใ•ฮPฯnฏฟ FJ—<ฝ้๙ห]#“ŠธŒ<'ญอแ|\+q4ฯYH –Z7ทŸtุ2C2๖ฐvŠi -:วนณJ๛J๊๛^Q}ขฟ4่Iฟ| C!:ปk Œฃน>.๊วฏlƒผƒ2ีถ]ไเ+ŽๆงhzLเท_'3<^ohหiฺ.ุ>#()Jcเฏค>‡@ุJแฬ๎ฟ[ษ,น๑V„ฮxิ‹Wฎๅ๓=^๒ๅุhp2๑ าN s|mฅzฯž๓๒ กz‡ฃwมrฑ"ๆฃีˆ3}๓"๎ๅ/๔!IW…ฒ<~Ž {ศ]D๓ห์"าฏดpฺ๙ม%$Oู,ลFฌ^z-ฎqฅR™฿อS8Ž^ึœฯยŠ=รSpežฤ|ฬ๙ซ†ิ7 โž)BSKๅSŽัu’1๕*š๋ศฯ\หๅอ†B)ืค1!Yฎ i(~q ฯkˆŸญหT'๏. <\ีwซ"ธd๋™ ยำjซศ่~Іฏ 1™@ม๋uสฑ|DŒŒา5ฒWะeๅmn)#ƒ๘JหD๔ึNฯฃ”gBฟ๋งทจ๊ฉ?๗ปฉe๋ณO=Œ๖%+%ถ€๋๐็๏>’,๏็บ๔ฉ7…๔ดรเ่งฐ•ํ฿ะ^›"Q๊G้‘งอ ‘eฃA๘>พ˜g–ๅ ][๗}wฒqท(ึ^๚ๅ‡NaๅHz๏%ๅM๊ใ†–่เล๐c๗๘z˜ื๑ชN๓ƒs’v]บ๘{‡“~XฒRิBŽ"โลี ฌัvำล&eŸ ๋„้~vวฆฝ—•ฝ1†Tฮ|๏;ภ{Tw1ชA!h›ดx๐k฿๕ูฑqก†,ใูV1็`!'หขgpก๕๋f7ญ?”ฉŒH.›oร๔ๅDฺXd๏ดัX‡๛ฺhฝ๎ญภหํ“ง๎œ0แุฆ…{NใpศูลรฑิE]S`|ซMkดuข|!pC^‹ฃg๗ซ์™”ฝœ?“9ๆ|%g1KEน/ฅ๖Wbw\Kา8”… |_โ๋ญ  }w7ธ ๅuฬœ๋ 2O(˜uIXI ค็ฅgxŸfๅลช–†ฌ๘๘|J3(&o‚ง4บq๒๋ีูฌ›#d‰หบ<๊์ฦงIŠ<}โR์?c2น ๘–6^tฟ7/‚Oไ6ํ๓อjกzi› }s˜ภ ‘ํฏำ0ล ึู**ฮอž+1=Žฑšo๔Kก1๚งB–JsŒนE ฒ6ตj…“h™าข) 9—“แ๘๕Lร<ฦ}H๛๏„กฬ๛.คŸึฮ0ฏ]ฌห4แiW˜’5‡ิผ†iู็ิ3€(ž r6'ถฐฐำL |รrแอ๊๚ฎ๗@ฤIF๐9ญชdžc˜ฏฑސ๏BeJ๎๋บšVถR”หX๏‘Y(‘&ื‡ร•kาaศ *wฎฌถw%3 น4:.Ž5๒ฺTั#B›mfธ-fŸพ}บ…ฐก^m๊ำว\ษaeณ [8ฟ~ด๕๋ฤ—? ๆ8œ›wrฏt pEMฟN฿ฒนชA Nฤaฃษ2Yฏษ-˜๘‚aจฝ.^? ย|$ช=Bุ/อp่ๆ{ข^Ÿญ4EI^๐า(eงœ^฿ๆkqะ๙ะฒฒง )ึ…w9G=บ@~“‚#๑ล„๖”’๛Wฐ/๑Cp’zผRงรW—+WฤฮUบ2œ/y๙ค.AU!Jฺ~๋D1ฎฯj’๓œ็aนศล'ง๙p๚59อ’ธณญww ฑd^eNoญVž]รŠ<พ!†V๕[I}ีๆŸO)7}{ไฅCฦz”'ถ[+žคSŠถnTพ:ร4Aไหc‡๘๏ะZ่๛a]e๖ถ:•‘u*”&’ไQW๗rูบ+TjM#ฦe4!๛Uๅดศใušฃา_nภ•GหถV+ไ˜ฅuฯษ๓ฑดะ_ž}ฝi๙ัŸxJ๙์Š7kฆผ์]<‘˜ศๅ],eปขƒี๚|ฦ†4ะ(1@…ณ0Lc”%$[[คuั.รSrOืจฮฉH‰c*vF๓lIเJ2cA”‘@G๘c#)#Qฑษ็9้#ฟ_Aฺ€๓vvบ7๎‡aXผo˜*9ป›*ิ฿nห๐†U]ฅ.tฒ'ึ 1AJ5ใ}๚‰SNฬ]qK,+g฿ศŒ-v˜7_๔งฐn>฿ ์`Cํ&ื่ณ˜ฃƒ้๐$มแi๙๏ฒŒ๕๒ๆ๖Oๆื๖ถงฤ฿'‰„‘Nฑ^ฦฯ9.ฏ ญฯ„ ฬฅQึ้~[J3…ฦแ๖Nถ:>ฌƒ—๒ฺl[vnRยAฒ*+jย`ร'|`HI’ฐ1 qrI{รdFeๆšยธgดzชซูf4m€(ญลฏzNสtิ!๏Œlaš=ฺ ZาศL*๒ะญํ/๋้๙9ง๋6ไ้w@ศฉ€ผf ชฯ๖ซะ฿ํ&ฒkVTZ๏#sp*„<…ถ๐“~ๆ2 จD^w‚œํ —จํPeทด™uiฝํ=Yรe!P้๙Vมณl #eจ!Uา๑๊O$!ŠูV๖ีฬฆโ+\hVtฤx็RูZา์Nzๆ๒ฐJงšฐ’ล™I{ŒC๎ผ™r9:๗vBษฑ—;ฑ9มฯฃ5{:ด*คq”๖็š ™5๕lGB ’<-˜่ฬo} uhฮL‚๋ฟ€.5›ฯDD—,๕œ>*~๙,}๖้ŽX฿ยืภฮSจ๙ฒ>ำK$‡8Ugูอ Sกd_8เ‰_๏[ฅฏ!qฏYลใ ุEผ2?J฿os›แ฿&ฃYชv/งค]฿๒N `qn-งแถ“’X๑บกวภ?FฦH}็ืƒๆ-๚ป๎สEบbมw„Wž@-ฝงบš๎ež/ๆฺqฒำ!ึWi•&๒ึ Ÿ~ @ž[ลAdVใแฉq:Qีช1~~9๕V!Œ9็๖ฆ*Xีเ9 ตา4i\๕)Eแ[' #๔ ฃYCด‡ลjf์bo8ทฮb„๐๋Y่LI๋ะ๏๘พ„}EDชฬฒLฬKำยHยn\„ะร!ข[ๅtแ”Wฯฑ&Qล/.FฦC&n†ว%ฌpkZ๋EฌคZh–‹ภหปะ?รA,8ุหํช๋ˆK๔Nษ_Ž€ฦ’=ัoญืC๔‡…๕๗ˆ\ฝ_?}-ใ๓`!๗`”๑๘ ~7พฆด๚Zฑคฤˆฺ9†ำ๏เ~ภ@‡| g™&วtnzAฃ{$M j฿—Pจ๗ใ๏ ฏ>\*ใššH๚๘๐!ฬ—๎ผl๛-–ฎงOJp๊าท•<†qe$ํg๚ด๏’q‹›ฺถhฐํ6ฒ@cd”๐วาZH๓ดZ`Fว*๊ถ^ะ–ณRาH_q๒qฒฬๅ—E’vbŠŸบฬ>^Akปค[๋}+ึHsLbห–ƒ}G—ภฉฑำNl1Š0ZซวP๑Œ็…ไ"๐ัํ)*พ!๓‘ึ vขŒื๒o่ำ^ตฃ †zไร—ฅ๐ฝŠ8ฆ^h1Œดl&l ฒŒ ฺำ+id๎†%%<• ฅ&H_2๊›แ1ฉผœ&!5† …dhPมซฤี๒Aั๒TTt=ค๎Z หขxอไ–ภูU%O„๙o ๙ธG“[‚ M๕bAE0Tฦnƒม%Žคค ์%zฯข„6ญะ๗'๛Ymูธ(Š)%‘iต‹๒4ˆŸZsโํgฬs&s!‹ีฅ/EiVeT8๛Bจ|ฉ‘š๗~@ฬ4 ห:J๕]นlํGซ๗@'ทำXH5v๘Bi-7ฏ!ถ.ๆ2#้\TšŽ๙Qแ8ฺbJY‡โ)ืบฏ€ฎ๔๖;<ื8/Rำปำny6‘Cิปข[สxสL&>^โ๒›aฮ…m" 5ปF๖็l่ศ›M1ฟึซว{MฆYo ดฐพsp๔ป7(โ@a—5ฏKวฮฃ’ฆG}{†ํ•—๔กถ๐g3Cžีเ๚ภ†…|P˜[=4ฏ๒ฐ`ดขY๎ณ๙keDฺงƒbไฬXHึ๔ธ„] uิศGSทU๓ฐ”Nซ WทถtK7*๏สf)C ฮนนBพ๛Œ)ul‘ี่ฝšยๆS]‡า๒ˆล๗:žl#ูฏŒ—Lมl6*—๐ยวk]๐—หๅd้S–O฿Mao{ดR ลผNฯิDฒ›5›‡ยM๛:*&^ีบPุ๎”ุ)ฃšฎZุs฿ญhF—ชพh—tuŽA:n!ซฅi$’ฃ ฏ)_|แP8Oฏีใ1ธณข=xBb๙„o-a€[ฃRีธเtMS‰ 4#‚*๑ฤหfwไUf•ozพ่ ณCGผ˜,“Rpผ›„WwA:|W๊oEAVยk๑Avนtย๐ํฎN~)หฏาไ ฿fS aŠจ+๚?901๘)&| “H‹๐rœฤrเิ^lื`:lชฆ>=HอใฑฝŽj”๛yาAเณ๙{ิ[—‰•ต์}/N7cใ๊™1ูซฃ –ใฎ็๛ชZ ำXุ๊;‡Y[!าๆๆLฌสถBwํhƒ|ฅ่‘ ฎw1‡๏4O?สภใoดงศฝ๛‘’ ท-ฦKmขK๐฿๒‹TึำL=ํ๑u†Lƒซtx ตตคฟŠ[B™๔๔•ฟR"-DMSŸFŒDzพฃศ kฤ}—1๐๔nQ‡๗ย3 ”๛ds:Sื‘หส’X‡šอะ.[oegํ=ี4๏๎oS"ั\Ÿฆ—ƒืฎงวำฺ๔ัA<จM&ัีrnZEGูสยIม6ว~e3ณ ป>ไHŠv*ๅF์ทฎ-Š8ฟxAt)ำ8๘ษ‚7แNz~"!S—ฅ7uฏ‘~Bjžนึ฿!t6ธฬ‚พdฏ’ฌjณเ<ชดkฒิคkw๗8ลฦJ+—„ไe.+หนถ]0๔Eฒิฯ›jŒ™q\i+ฤ๔H‰๙ร๖iฮ‰ฮ™๘ƒแณTื๊—ฏ8^ดLัชrZัŒ…;QRLจCpบ๊ษฌู:uPฤ[บฬ๛Gะฺi๏ล๖ื-D๘$|YYEpโมVฮƒTfฉ๒u๖ี„ม&–L๛วd๖bธ’‹ZO J๖U+yG~ฅฑd กๅ>๓7ร9š๕ฮธTwฟ>ผi0ฝ_…4z๔oภU†5[6ศธ‘ืินG9มˆc๚ ฎฮ๊zTพณคN[I๗ณs˜>ข๊๘:Tด‚จ†™˜ทGฮฺะŠTต:>kžhท/งนซœปB๓X๗๒ZGcัM||ญ3~B๑cOQŸ]dผฝŽN –๗M ’๎XJ– ฆcฏq ุ?!G๊รื*ง ื๚มgเV๑œ้WDER๔๎X‰Njอษ‚_’ย’™นš'”•l–๋Mาถ]_ฆศฬฐ?F•วฌnw ษ{‹wกีไ4ม฿}1„:;r0j้ทm“๐]๕Yส฿sคcฦ ‡๚‡๋ชถž~ศLซ-.Jื '&๚ํy5IC`๊œkวฅบษุ &xs*ฃI$๓นHัYXz1™"ผD?ถd†iD('J+๗6!HvaG|D™—ฉ๏น้\ž7.x3๊KูชคhาฉB๘.™†F}ฺฃ]"ุย PIi ิฝรwดž4 %~]ฤR3SUุŠบ}oๅฎฅ้ขห‡qัš3ฆ\ิ”ฌุX48r‰ีาฬW$ุข<œˆบ ptว[†5TพI๏,รyปบ2๗?๛i™zฮถฑšี2FKmฑ€‰`ลdŸatvŒ‰z<=บPวLฉแ9 กํึxnฬฯ˜ะ๖ฦ^ซ-ฏฬ<5Jฒ‰J"‚aฦ_ูท(Gผ๛วžฐubา;’ ตbbpด‚๛ีจD#:ฺ\%o‹GPยB Oฺโj_ฯ5๊ยLž$c'ฟกฆZา KQา๎ษnvฬO!ฉ›–™bšY–Hh(HDอ>@ัRภ\ธ้๖+&ผ{jฃXอุ\6[สภฉญ} ไNw6S†ฅWบฦซ๏ื”@=ะ์#SZ(/yโŽสŽKปฯ.๓ 9ะ!kn[ืt.›fd์^‰e๙kK˜wE”๊ซ.๋ญ๙ื๙ฬ‰ฌ๔tฮ˜Klลฮ{๗๋ฑ˜&Nผ.aX๑ฉyค€เ5]QHถ&‹zˆ—ฒ )๚O!‚…๏Rฮ๑;ิ„ฦำฎŽW$(‹ุฎั\หoL๐p…เทู๏ไงอล(ถฐˆ฿]โๆ`~ไฮqŽYบ"‹Ÿ76นภคš์ผคา‡ฐฃlขiฆdZภ_๒ฐ๙า,‡rะ%C^mผtLฃสŒฯTFk=ฦศ€ฮ j๔€Cgํ`•‘aeŠ‘ฏง`F\d๒๘tO†๋Lศ Bpmxฏ๐ํ—ฅGูyพะ,ืŸฏฎรไ/ิๅัLำฮึ`Yป{8’<‡อ๘O1r…<‰สา๕ˆW0๙—T“#šCห€‰`#ฏ๔z…–P็s5พหใ๔฿ณุนนVฝ๐{X๎T๙๔ขฦw'w€๑DบJ=u:geขj2R_ึ<_GJ-เโkw๑๘ โ†˜ฉy ษUXย+7D‰ฟาLวโๆCถโ™xIFfS9จ๔IใNK 0PS›ฝทsษw4EEuโnqฺ๎ณac>ภนำ๊ฐงxzŽ’+’ณ์Ÿh7ฤ†’~Nฏงีจถ}ช]ู$เ4ว๔ุใˆภ/แ๎\`=ษ‘Z’฿ฯ‹ิ้๕SQฌโt฿<*uAค \'`็x”โxฉ6Ÿกฐ"ำ๚มลu‹ฐŠผ๎QT่หิค›ZฝVvP>k๓8S๗`ƒ"หœSึx`ขิฆ๋๏สIีค#กƒฏŸ =f“‹^oูK€g%fท อ–\ท™Yiึเ)์ฎ็ž:Hฆด๋฿ecดฏผ$›."<0*ถตฉฐ!๘u)L3น€ํฺฬ>t€6ปณไ‚sŽตMฬU๙N@๕YาX7โiฦ๒ฤf“ื’R๕–Ÿzิ„|ืY,ฐผŒ~๛M–ง€? q๎?zเถฌN้Šrค๕ :ณ๋IึใเCVุ8Lฌ|8’่๛†ํ๓yา”ืIูŒ๚<7M†x โ2e|`u0Rโ๎TB(F'‘;วY3Ÿj4`ๅ1ฦ ฆyฎตiศศ$“ศซ‡Zนžฑ|=จT,ผดnู,~eœ…Eมด09_œS-ž$\R–J, ๑ภl้ี,๗EB ึฌ๘-๏ขU^1:๒ต;r_nฎ_–๒ซกwแ@~฿ทŽฟ๖ศGŠ0W๓ๆๅ๗+ร.–ขŽzCจSQ–=e้รว–ร)งr)ฦฆ@@œsธsำถ(Ї  ฮ๏ซฝA๛ธ•ม๘ะืุ6X: 3,H`O:กยะขๅ๒eล”ณพP“–ฤุ‹‹.Bตg#  gL6ดยไห"r1ึซP8” ™^มฏ[ฏ#ฝAŽDaูˆ5&Wœ๚jH•Žง<3Q’M๔G‡UH<)ณฉ’Z->๒ห\=ฮ๗7e)IzหH3ฯงนU๏๔O[/Qo๑งลญญ-ไ=๋/%‹ฌN~Œz –ๆ‘^แc… ,ห[ฺ็Š๖`n๛~\ึœอ๔U*’4ฌ`ไ^e#?05,฿aฆs๑๘P๊~%8{%๗ไ_y•ฤ+Xเ>…ก ็‰P^xต ๕ำ‡V?๘ๆ›ำ/ciV*ฯด– ’)Xใoi็‹`Jjk่ิˆ5ส#ช+aๅgั/๔แ‹vD๓ž๊ฌjNคุ;m๕ฮฑšน ƒธjฏL\ L๓”๖ฮู|๘ฤ\‹g2ฅi^|'Mภ/ำŒช&7๊Oc*‰ปPvกลำ7oตdู็_จ7‚“8˜ซšด#ฌ๒๐MPซlI’!ฃ ย=bป]ๅJพนยœซK_าm ๅ~ส|•VH_ํฤPศไdฮ f7š#ลู| =์๒A'C4ื ฤ#ใฟฤrข†ี•ข!}mrUPyœKŠ2aเู๒d€ฉฝjำอโ ว,UQ…I4-s)/ฺ๚ฆอ4.!ั๋h~ัu๑kiึฮ,u”๐๒ฏห2o›n$ญตiฉฮจฑo•โQ†.œ๚*gใม<๗วทU์ฆฌM(ง_„๖พฃkŠ หŒไ๛'\p=Eqd’)6ร2 qDฉz…+Bฺศ= ๐y™๘แูyV 9%L นำผVdหœ]Oุ’J~9ป“วuฒ&ชฅ๗้Uน๊๙T,cb้ธ7„(่ว้YS ๛‡j$ปSC ”KœOLmขพห ๗œ้…้งคฏ„hฝษ*ฏ^^@์6ฌ ŽœนiดฮPึ}ฌoHqB9ป%พ#๚„Uฉ@'น5ไ…6mjง๒ษ์๚=สฑฆฦwRb,=อ๙U๐ฏ๘6่ๅ฿zm+s&i#‰ฦแzแoE‹ uจ GRO˜ŠWRR๖`™o๑ำ b์ืh.e6ว‰ŸZภธฉซ\โ,A๕ผ+ฅ›™F4๛—ม;ฑฃฦช”แ™|ใำฃด'๘Ÿเ-n๎wำลdŒำ'_ฟ๓ ฬ่-ฉผ6YkšฎๅtE์—๔ิ&edฤุพ!ฤม?์๕าuั๔HMIช1Cฦซ[9™รๆK—็ณH๗ษืLC@อ๘.^เl.šDฆฌธ”ศV#๖ฐฝDึ,ฯอึภbทบศช๗ๆDฑ<วžมr—๔ณZูRงตวหะ><_L•๐žqjํยวฉ…สถ?{‘Rvฑœ t๘Šy~[ึZ3…ลษฏt ี๕ฒ=ู‘ดง๒ถ˜-[eษก[?ปC@Ÿž7ŽXแ ฮฆฑVyะŒ๊k6ย@>าHษeฅ"ฐค/[(ฌRo)ุ๔ฺ—าใศ!ฤ๏ำZ หVรlฝ฿ษvc๑ล๏J{้ขer๐Rเ็๊<พฮ*Yไ^ฅรƒefZต~ฬu2:๒ฆ‡3qx๘ฝfZ^™g`๐YD ี๑๎žhVAฺ่  ฿ฺZŸเ(ารุไkx6?ซsFa ]”SVx”]9๔k๑ไ5R‡็ยG๖ษแ๙ฦz<ธUมธ3M ุaโhๆภ3„ƒ™9เ]๘jŒ+๕–วฤ˜RŽ–{gG ŽFesื๐ฑs”ฏ–…ไ>ื๗,oHพ ^zหข๚ข๒ฮผไ๘ช)oU ม๒zŸฝ”ษsacTx˜>๒ไ„๕9๙Cqซž‹3žเ3j\\พ3Kลu4#Tช๎ฌ็.szฯ™๎sฝิๅำˆี™‡N๖–ซŒJจ›ฬฮ"GฤNฃฑตŠjmšถ ปc)๐G›-Bแฆ ž0อЉ{CฏฌpณSัพL[<‰REฐo6l_}rฬnัธ…F} บ‰ฮcVแaญ‰Aฐ!Kเˆu›ชวฉดฮQวฤ๚iฌ`a]ษว๗Pขr ํnw™%yีo๚Œผาชะ$ชEดSˆpขใOช๖์ygปJขทE>?ณhiHq|ฦ้มล\ ปึW่ฮั‘ผPำธCzU_•žอm์วึUพ y6AๅMšžกA“บƒ†ม”ฉทพˆฯ๖ฎ๒รHมeปeด‘ื š~ฌsท:ขิ“ึยฎ)1๛hyัฐ™ 7gยnkŠCWๅM|6๏๊.sX๙(™ฎšูต™ฦ๗๋อษโด^F9๒ศญŠX]ว[yNfจท๓ฟนฦ:VVzค๊JะฅำŽูซGaWฝDT~ง่สปท#—วต \ %ไ›X’—fฌีqฏVภฦญฌจฉmbs๗˜sเฯ‘ชOds|พผuฒ2}๘‹ร!ูเณ RสดVฐื”นแฐ''˜0{a ‰ผ?ใ๚Q‡/KŽ?jลc!๖ณษB=๛วลซ€กฑ๗พ‘‰S'Z—ีฏา”ลญ›|,ซ`jา=X ัต*+พ/-7.DS{>™M&om ’B;$ยแ–J"‚,ฒž1ฬ D#ฝFŸเkศK&fJฟ๔ไŸŸ–งฅo@t.vจะ CฏHVพaำมค่สFo๏ืเะœ$Qpg–ฅ0I สจ1MAฌฦ๕ผด`Guซ4ิf๋Hฝญดฤธคธ์ฑVิyCr”)น”~ฅ"ดรu๋?zfๆŠศ]ฅA#P3‹9K€่#นMฃ9.๔๗4ถต†hƒฐรžตแใ)บคเOœ าทบรp"_๋ัA \๖Lฏb๊ซrƒฅด๐฿wŒ&ปศjFทๅy๗งˆๆ6w!‘8^PRดdฅ rขๅช ึ6qล%ถVฺฃ2?์š\ฃ[!ด๐ห@ฏงํ-”5ฉ" Tnลฦ๕ 6bเ%ข'ถู%}์yWœ'rŸX$Tม็ฮ\๙๎5ฮๆ™ญ˜Bธ)ๆpค๕เwฃMKุ™๋๙IYม๏ˆ๘q%>W;฿ญ0 งฆ‘ ะถถฆ=.—ฅPงืZ–ห<ว๕žX‚๋3ำEY:เหc]]’lณg\˜†เเ‘?.hƒCI]5วผK!i6$.;1q™•ศMฑลบqฃ๗เ’งdŠล๕ตŽ\ฑ…๙^ฒes2Ci‡bแรRฎ,'ฑ9u~ฑฌณฌ™*|พ…†๖ˆW@ษ7nEI-ท›ี๑‘#‘๏1 Ÿj–ๅย ›ƒ…ฺกNฒะ2'อนQลท>ใCฤาูŠŽ,๕ไ?๎ฦศ"9๒5zๅวžLโ\—ฎ†๊g”อตuนฬ>ฮ“์ฏ6 K๒EA}ณG/Iแ3Y0)ณ—ืา9;1nฯ&0ูแสํห @sG]๛tยW\ญภ6ƒy‘Ÿˆs เ๘+€\7ฎฯA2 @>Oฌƒพคž<ฉ6‡Nช6bJ W#\๏ กศฅBw๕\š* HุWcฺeีmฐsใฒc“š๏ร;ˆณ:ถ|T™าฆ S!งจfซl'จ|้aเซฆIชKก#y๔@T|ฐ๕“†4 Ÿšฯ›((6๎7ชv|"๑)๗–w ้r:Bำw‡น@+Ÿ๐.โไqsณ่”/ไธZvœ 3X“ภทย‚ิฮ๐สสไ…I„I,FQีƒฦHB‹ฎห”ฬ๛S |jปฉXไ7/K K ท‘! ฮ;@<… Œk4gคญ_ cฯ uO%๔F๚S="๒šXคใCซ+ๅNF#$ฅŠืมa8,ิxZ๐QMœvpR๏๕ฦvoœๅปHGZKPY-> -œMญ2ื๐p•s†tาฐ …‰อJตทิฑxษ&ฉ UoIะnaภ;๊๛จ–ตSำ้9AแJ– †แ)0a๚‚ฟำC[๛yŽยƒบƒ5๕3I3ัŸูpิฏ 0xลA ,หIwผนœู่ฅฉฒ'10ื›!‘,๔š๚ำ]ํlEแไ๏ ^%ฆy๖-[๊ำณBนFฦxม&๎OXv็™%e๘Mต8บLN1tq%Xfฺ๐ษฦ\|~h2ำr~ ๘"ต#ื2nฤื8Jš ™B‚น•H\่=ึ๔ฎž๓tมu5>s2ก๏ e•RR๙Šทn Upi`c5œ้ขใ์ทต๚vท1yvnz๕ฐbผMƒ!sD2ภณฃท๑ฝถ่ฯญใ๏ฯ Zก‡๋6ช˜๎m4อ Nผ ํ’ฬeฺv–t‚ฺ“e0ฟgเะ‘™4!ฑC=ึŒ\$ฌ๒bฃj‚ฦŠ ธ’โบRเ|5่ecn\๚uz˜‘ฏใฦ็ษ€ย-Lึญศึ๐ื,(=ฯต‚ฃฤ:™3}บQX_/ย2d5r ศ‰'IฐGSJ/'ใพ1๚พ5ํ—./฿ ‚๗3KฺŸqญb3ศฆรฉๅlแฃฅใ3๐ส๛W’:'r๎g‰ƒ”ฑ~ใ!จ>Sญ๓ม5a"ั4Sป&=uX Ÿใฝซo;ไ%ิโซไฆMG&g˜mkพyฌ้วส อrา&tคซหใ˜๊ฒM0ฆ๗>ถwยY›ช&–๐ 'ูแช-ธ‹ฝF7ฺ4tHา6Lฦ“-๐โ6,อ๒žย๗แ_˜ค ค]่_t—œาdLื_ธำ•ศGฯรฌL6–z”%พซn?[$|2‘ฺ.๗U'*FF2zฆำืJ’‰‡Ea๚ำฌ=ษสŒฑร“6ช€ แœ0z˜TืK8ศbŠ๑…F็Fํ*dkŸiำhš>Z ๅ^Zวr7b'AUใฎ–›zบ˜๋7ห,*Žฅ2axaบ๐[*Qf๚f6•๛<ืV0ใซ‰=๚2ถ|]้ีšD{ถœ่n+งฏ3ิ๊ๅ๒ซ_ภ—๘g#i‚48‰‰ลยขzD‹|NUศ๚%ฐ8„D้?ภU~adŽฃ–8๛BฎYๅขdั4N4ฤ’SDU—„ํสพV0^๑พๆIึ=s„9ผฬณX ƒbiซjNก,œฎ0๋CC8˜๐Ÿสษ๓4BkFจŸต*ํหฝฟอBLกoชH]jWNš!PคwJด“ŽไปEศม+Xฉ3ๆVy“'ชy1ศV)รwดxNห|‘งฺณ>zb`^ePšŽึy Faซ|โ6?๖ถ\นu,แHรศหฤbhEjžHCฝb๋š่/ต๎า‰. I1 6ส๛๘5Eณฝ‘D{๗n|#ึ96dณ™Ži๛ ZไหฃS˜$฿ IO5†…TTะฌฆ^%รzท๑o>*ฃ๛2Œ}Uyฝ’PInบ(ฝ๎ฯ)„Ÿ“Fา^ฉิ ขรKd„ูงงžVooหEA๕กD*๖‘ฉู1ื)—ฬ*1›^|c’Dš Œ ›1m!ฝ๕9#น๋}tฆ +Lั วr5ŽฅFๅpo่ C|่จ†งไv{1F๐unE๗พฐjGพQ!ฯแ~-ฆqง๚ˆ!;Y`tMw~Ž๛t*-•ใ@ 2› ๘‘ำำU๖M ;ธ“ำ*ส: DX^Uฏูh_d’ฉ8ฅhŽT์1vฮmO๙แg$๗น`aย็3ชzjฆ๊๏Dวยlnั/๖uj0–'-PnŽ…Ggฑt8~4Z$CฅM23&_ฝ๓ผ%Lƒ๔ฅj!ฤL‰’ฏ์๘ U๊่}+„]?’๙ใ๖8X4คฺpœZtcLqI ‰—นqฤ; ๔่bฯ๖‰ย^ฌ:’nhO็\ลe0๖๚Bwฬั๑›ˆไ{ŠŠNญ.b}LาYจ8Tfฌ—๕๘๔6ชfhj‰ใฤฦใ๛t+ฎ“=†๏UhƒฮวPฦํหฬ฿;cีห๔Ÿh)ฆต]สMตfu:i.็YทL๖ Šผโีoิ Œ๏ข1s;๑ˆก;~) ฟ2m#ห๕^ขŸว2ท็ฎชEฒ๕m’ะ•k๓!ญƒ=์ญถ?%าๅ—้ํ๐{Žoaจะช๓๐]ฟไ›ๆฬC€6ฎู=š)๕$%ขcAชZยโๆ@’ุค>4p บใั]๘ZสฆํZkฒa*ฺ้<~5ำั{WNศtฑ–้ฐ๎ฤn”ล”ิถ;ฑo ๏4ทปKO่ก4ฃฏโษ;เ ˜ช=v†เ)nฆ&\[ษ๘1Kลภtฮ‹ ๊K0,|‘“ย=คAVจLชFฟ๑‡„\ ubฐ#Gส=ใNbษ6อ5„5‘yDดปœš>ŸCะ็&ทฝ^Mยีลฯ่(›รŠ`ฒfu: ๛_ฑ(%_ฯ๛[@ณ;•žชกฐ9ฝะ‚'ฤJแƒะ =โอ๙ ‹วlก๗@9จFŸ€ž;eกฒ่อๅดSศMซl*š฿ฺWRต".ืมท็!ฎ{ํฮT;ช‚ี‘ภ|อธ d_ ภฅตYกeAผRwํ’zHŽU'กฬ05ฒ‚ฦ๒๗ ๘žณ‹๙ ีzบ/hbุถvsตะGyžลvZปห<ีT’Iฟˆฏ Tปt9“x†>:ฦ1’|พ ฎ`…š”0฿ใI๛3้๊uxTHัณธๅ๏ศวV/ไ๓‡ฦว›โฯมu ‹žš๏Iu๊DฦไHiQอ ม๐๕๔X๕!ฟ]า8M’#๎ิ.๙  Gสไj7L*ญช$Hošƒก›.ฃ`+จ‹้าฯ6ถํ่ซ้L‹ฉฤัpšA_ฌ”ฅ{Ov&[ศ‡S’ต5Kำ๒Y฿8OฯVœง˜~็.เW์๊ล6ัdทพ%๙๘คfฮยฮZwNใ,ม8ZN‘K๕i๊œจื‚๋ฟPŒ๑ `?ฝ0‰:ฃฆ–Qgฬ#s/LBuR,-ห ส ฝ„ท4Q.ึ…os[”๏‡›ฒๅ฿šฮŽ‚Kbb7_„/๒ˆ ],Py 4ลy}่ญ˜‘\,Œ‚'G3m”K๚N# ไห๋Zd&๒‰:˜}ฉะค^hฃ ค(Yฌะ8„๙+oผลAQYลข*…$ัfศ4ซฅb4}ั*rโ๚— IฃฺBัลh๐`j#u lฯ‡๖Vpณ ๗”2๚[A3`็ฐ?ภสแเ Œ๎“อ๕ฝ๏ต๐ˆrว{ pม)Go=A0ข}v€ณ5—Dสล๑ภGฝซฎa"ˆญๅฦใ(๗‡Wtฦ๖bfI<ผ€จA…ู๏๖ี}…฿คีํˆฤ RฬัmฆK๖_5๋RŒw่าฅ&pตำxอ5ฬใจไฅh๛บช@้ฆต5MติฌPIHกฉส{Eช๓uZ แแ9aฌ)H›X4๑Iใ[€๓ร0srsถBŸ=ๅRฝึ๒…แป7๙M„$ ัํ;Pกา›ทญ‚SศF AYœเ๖\„ฒ:”๒Zชw9ฦ๓ะLš‹่"})8‘a็AmJMฎ‰ ฟ$š!เ‹’ ้๚Žๆ›„™:ฎ!”iใ๓#C›๕&งoeฤ=”จ๖าษzAEsH[’ๅ๏9rA–”ษv็’พu„š5EXsโs๏Eฌ๐„ภุ‘.ัœโอlฮCี๐w2œท๐ž"ccZ?บษyงฝ CฮšŒnุด™–โnๅ”ฅ}๙4๐บ‰`cj฿.‘:ฯฬ,ฏA&Pนยฺ@eฃ- Ÿ.ณตIป€SผWตะกtƒu5๔,F ๏ัแŒQฤŒ7Kฉt๖฿N ‹่P๑ฯ™ทหยเะu๊_yZ๑๋ศ ๛ข-จ ธจหnค;‹ตฑ={ค๙^T๊’J*ลึfWฺ๒ิƒ๊)Nฅิ ฺชชนฆๆ๎์“ัŸœ m€ๆa ย9๐ฬU” 4z๐ะํฟ)มๆswฎD-ถTŠ๕œgกภๅป@jว…Fx\ ‚ข๔๘๓J=ฆ˜ฆ›จนซฺm่จH๙์ฦ`N}HŽฯ+iI:ž@ฟฅฮฎž—fG2kcิ7์ZK1%7?๗9%X‘@™อฝรfฎ@n!กเ:ช ผก™E@$D\|q,ร`œKศ๐0„ย"&•๋ย2#๒๒<~ๅหl6๋JFh>Q['•8uฤiยu7dxiU \sุฉฎ??@hอhE๕’ๅ^:ฬ Q‡ฺc-KฬQX&๚ต๊<ฑลLจX่-ฃQ‘„#]หษ€ี[โกž›t ๎ร๛V) ฅ๖N&Y‘ฯ2ท0ธ$'@ุฤXˆิ ฯŠๆ็~็Œ๕โ(y4ณFฟcศฯศ้๗3 Oค๒ะ‡ๆ๘a‰๐๘‚Z!ะิ†Ÿ๚™แง†ฮdทp”ฆ)F9œๅEeถ่ฝxš๐4ดื$0kญ3“€k†๖Š+$™Ž ฎ~ห‚ nw8ฆMฆQž่(ฎ‘ป„e1ี“]œ i„๕ฉ%แ4่ไืn>๚ข๔žฏ๗™฿™๔‘Iมพm‰ธ‘šทJYm5w๐๒Pfแผ?{ฒ4๖™๒จ#จ๋„oƒŸ,/ฒ%)ฃS่0D_fฬสpNฬK yMT~˜ฆO™—ืL——Y/L]>๘@นcœI๐ๅ)มฉ7‘†๊๒DธDIxVีo…-๙“‚uŽe๒Vmม ซืแI๚nๆ†๐ณSPl๑ข‹ ไษC๕โ{ภIฯ็(NศUะhฬ)๐Yญ3ฝ๗ ก !yB‚ ท่ฑŒ{ŒEoฐ]พไ}โเ†ถท*JluตNY}ร ™>vm๗า%2ฯ{I^”โโ@ˆ”b้ฮฆC๘์พLRก HlMฃ!˜ /rm็FRI›kuV„๛il„ˆพฯ„€ลฆœxฌ*>ศ็@-ูoี;iฎ‹๎ฟR.ฺ}sPRพir-/ฯ๘V๚_B9rฌตผ฿Mฎ์Rำ.คน๕Q๓9ฌำ!๋ฟ›w57ๅข๕F$1YžY!:i>JะM [……” ‹9 mำ~EH%`ณ2ๅษ-5 w'—ŽP#Š]๋`ๆ“4v cNDC๙ศ †้บeฺ๋%ง†B~4CSดBยMš`ญ\œ‡–Q˜ฺb€ืf๘7ˆEฑจวย kำ€.Aณrนีr8ม.M'ZพSทธ่฿้ตŽห“9e“L\ข;›[Oตn“H;5(‚!X•งC๊^ญุŒ-8*jฐXRB = ~kokฝ%‚œ4ฮ๊.-…“‹ฃ๐1ถ8>x (fJฎ็ส•‡{JP`x)!หฟฝ๘แ˜{ไฯC–|ซพู_ท™อ4ฏ}ˆลฎืADฦาชM๊‡เธ<ำfนหมใUอล่cdณK†๐h}าพมฬุ(พ"อ&<` ์Ÿจบฒ•Šoท7q๓P๛žฅZ/›ๅQG ๋eœ—=Rฒlฉ-ีพ3๎่-dyvEํŠ'ํm…๕LีN๕๚]uo๐YŸมษ+K•พ†๚Tฅ๖U ถท๖ปฺฉท๑!+่n|\๛lฅศบqI]dtqหัฆูิ4v}{ŠL›’j๑œ ๗ _šา‚f[Jšž! ลhX%„ยฑV'wีฬ„3Zwnม:%๐ธ_ข๛^>ง@` %ล…ัS\txT›W฿แXึมWล‡ฦNึ€“vศ3ไ๕ cง™ เŒv“ๆSูŸำ3™เํฺ%)๎ฬด“ฉไฆ~ฆล์0rุแ[ฬฦเ๖ฏฮ~๋|อ”}l่_$บหจ-“E>–hfะOๅะแ EP ~Q๎ฌwูฎeKึไ?‰Md"งQ ๚d๎ฐ้T;๚ีข๐Aนศ 9ฯงขgŽd9l์็นiโ†ๅ,l)‰8s๘K๏ำ๙ถฮษ๋นม=2ณธ€M๙oู‰ฯš1Oฒบธ๗fพG@YW;=+P›์>n‰ฐฦ[ถว`, Žvๆ*^หหฉอณ”•ก4uต”@‹๊šฬ,๒๎ง ยฬอ์ซใโข)“a•š\ำz2žล;๊ŠDว›๗aฒ\msโจ–@Sแ,ณ‡๋ RMฦจ่ห่H?๑h† jž–๐Šก$’|–ัr1Œ๗Ž ฬฐผ็ษผ2ฅบา~CสภG~^š๛งƒœฎD–L—Oั^๖“ฟอะqXฮสฅื\‹๛D‹ฑdชฎดฐพ\ๅ+ภ์‹>iัๅƒgJfูฉc7gฬ‰ง‡๘-‹ฉฬ๓หHJo!Mข^3ƒหuต๋ษั ำu๋“5ืหbg๏แฯฯ$ตS šl๎ีRTy:Nฐ_์ภ8Xปฒย‹รeฅj8Dšท[วข"_ƒฤf`cึC_ฦงยนg/ข=Ÿ‡\v็ช6la’ะ˜[ซnIฺ–!๗ส—?uธ๕o๕:ึ4๚A5ต‚ม๐(gฬ์ข*L)_ู‡ Uท™qbด=น.พU‹6jญN)รbํ7ชdซฟXiEˆผ.ญฦ ถ"]œถสˆy"ฑ๋vZeิFญ;{X้(ฏ ฒWค ย)ฟ งZwSMFoต๏‚๔คGญพjฌM๒}’H๙ภq97”)@๓ ฎ้k`tธข.a็ฬJฟivชM€ไ๛,dวœN{w๗ฮฐbท:ƒS๔ั_!’‚[๊ƒ’้์_๖–‚๖‡4>๖I;๕Vฆ2ัีGNขRฏ>^›0๐Mpโh๑ิพuฦ๏\ œo๛แถWv3—=Z B@G๏;รญd‡ถy–:Lถ&3ฅ"๓auhEษพฬว0Z๐คy5ฒ#7k`๘ั6 ว)สIใY\]~/ๅ‹ๆษDtnงช่ผซ˜กLU|hwฬ"ถNh~“GC๊๙ธGVฉฺWdป)ืฎ‚ฌ…ดฅ†ฑyฅt_b๐q\†T9{ฮMว`ขh[–a<๏ˆฒ3…U์cฦvf4๙๏ั7;%Zty{.าฮฦjฦถL๏บ'%ฉE#P/_ž6($x9ญV๎ฯL ดVHz๓fซใณf‡็@ุ ^c๗ ช๏eัอใvGgv๚ศ;!33ฺๆXด }($๖้~€๒˜Ji๏T๐‚Aวฝ‘ก๘ ๊ˆI3*?฿‰Ž(ฝปN—]™i}ˆ์QQ็$”r ๘ฝžจ?;…ฯqTห ฟนeศ*miฺ๑hธั๐,๒—ฒ ๚7ม>๎yฃz ะ:๗ฎj“ ะ+lMึะ™Žกƒ/๑<ใvีปษาm…|5VŒK!โƒH๕d|K}ก)7๊Y"˜…/๑๙ช๋V,? ซw boRฬBIp‘ ฒืKUหQ‘ไZฐฬไ๊„œ๊่ฐั๓บ;ำU‚Yป ึgญก '†ญ”ยฝโ”ฬล ์หฅ•–eไใ#ฮดกสมifƒฌ—Xฅ$>ะ(\?E+˜1ถJ๛ผqฟ1ƒฉ)ๆีmŸ z@dพ๔Žน็ฆไoสHc48%*Dx<สฮ\‘^ $,/ฃLส&oYŠŠฃ9CY!จฑd๎”๛๋ปš@q,“ดgHฒXม๒อ=›@˜yฺฏ5Fn vEฑqฝZK‚ฏž8…้๕q”ฦ?%s้'ถแ๐EKฦW"2๋B,ซlคแงœƒrˆfเvoข๋[;ฑ฿ฯิสฺฬ)็ไP_’”‡&™)เ,ะzิ&x[E ๙€K!D-…+š๏iRะLภ™~D ฃhhf ฦญ…ษ๗(€หw7%7็sคฌฝ‹ผภkhผŸbฺู_uc‹]ี ›คpว`,เ~ุMr+oitว’ัu ฒ'›Dุล=Yฏ yฦ>ส„ป๎NSs”’vKยส๕๐YnC*๗dEš™<นฆd$j3pdู๘!zkผถรf^†&ฃ ฺฎtOผL๗iŽฑu‰n1’t์ งK•˜ดhF7บฬ์ก‹พหU๑ElY| ั?pLŸFšมOC9ขCข^*ฉ"^A –Bgd.›conQ&]fืbู<  8ƒgeะRข๒LI—ฯ3`๕๎ฤ์หึ2ขฤัฐฯ7 โชยZฮณภbCู—ฆU“ฉู๋s๛ฏๆgŽ+šH฿x\น9“G •€ื3์๗&u["ญฐ์๒๊ต&Ÿfอ์tฦ—Fิ๊ภŒ MภOใGhFเ#6หdฺผ้แ:Wt%ฅ4˜œปหaหฆ่+ƒ}ป—zปๅ^peธ|…ิRaพืS@Cดั>โฎฉ_า\้Sฃู+Žส<ถi\Kแเ๖e<˜d—ฑŸแve—4ซR€ฏืขฃBˆคœข;จ…}๑Iฺ 9อaz}HะีcLฃตีำฉ"6P๏bC๊d๙แญ๔6>สEรยแ์7ฟจาE Œœโ;ข^ฅ๏ทM+จHฟMแๅาv†‡ฬGพv)ๅ%™ข[/‰X&Y„๐q ’ๅ|Kใดlx ถลฎฐVษ*พหืbnน๊^ าึกณ#Vไy๐™! ไศ%L†ณXส–iŠ9ฦ`‰ุeฌcc%qŠ๗JF*็cาŠ}ฑ้ฦไBผf฿v*:ฝg'ธ&c1า‘ะ๕ๅ+Šบ(he…&ท๙จ0_๒๔Zฮ†bธ” ๘ S~๕๘ฟˆB๓—GxํgEฐด”•ก4uต”@ณำMฟอ@ จ%ฆศgq;Œ ˜ฟ๐ตศr+้9Jp>๛๓2่wณD๏Qa•eฆ`ใnฬ$ะfฯvขˆ๗ตฺ~3ใำ”+p'4†fล–]ํ’น:ERส^ีฬ8๘พัr„ฃฉลท”ถ ‡„ฒh˜๓#ฒ)ˆ!อE‘ภ7๏๖kศŽ3๚O๑umใ ูั@7oวศ ฑ4ฉ†จ=Vฅ@:n"HHNCบัฆ๊gฝี-lบ ๋กลGทfgษ~ฯ&Jํณด>wPด,D ่๒€๔jแ‹๚๔๘แฬป\ห<9ฒ—วZ็YŒ—H6‚๒วทฬผงK|๋.๎™ํึSnIฎ๑'ั]S!๘ๆ-~ซ[ษ1ญญ๋nF w˜Du#(›cf|–ชmซฅษtowiฮ&ฺžuิ™aMtK [๚็ี{`?ีด76๖| เv๐๘ฒ0ด‹2zqm`ใvy^'z๗JPลB๊Y—9€XYฉะ`ๅ”น‘ฏŠภC‰Q’pdส?‚o฿*…nแjฅงฅwoQ"{j5ฆถh9x™/ีv฿งŽผีๅณGuข&k;˜ไwแ 1ๅ9eP œžน/ิ๙wWfx(*ๆZ๑’ฤชคœnฉtค‰พฌมชฐ–—/\ใ“ปแrฌˆ๖Vแธค๘qyRjx ๊ ”~N`ศ๘๚^D๋^ฅฝๆีC ๑uว๑ฦฉโอsลŒุ;๘ี’„ฑŽ๖ต Š ๎ซVๆ ฦึ’้›ภjZ_ตศ$ณ๐\฿Wฑ๖žศ6k’c0ฉ,Hœ+’yฺี฿cJb?%8Hm๓๐Qร\QใคSม™คI8พLƒ”-cม4ฺKฒ ๗ฑ•ฤœ ฝ โฮ= endstream endobj 54 0 obj << /Length1 1827 /Length2 19566 /Length3 0 /Length 20747 /Filter /FlateDecode >> stream xฺด๙eT›ํึ5 cลญxัล]Š[€เ๎Z]Z(๎Pโ๎าk฿ฒ๏|ฟ‘‘œYพฮyฬต’Œ+ชะ ™ุลmmœ่˜่นฒrrถ6ถLŒtส@3g+C3=##+<™ˆะะ dk#j่ไp8™Œ>B?<นเษ@ ร‡ั`ไ:ชบ™”†ŠถŽNtF†Žf ศH๕"bk็๎23w๚›ƒ…Ž๎oฆฟัย๔iCcK[WGKภะฦ M/GทuP‚”ถ6# นก•)ภึ  ิจฉˆ)ซ$”ิUจ่?ซ8ูู:W/"*ชjดQ!yU1P กฆข๚๗Uh๓ัฟ-@^๕รทฮ‡ใ฿p91U!ีoŠbL ๏ภp:8‚–ศ?:okกฆถึPš;9ูq30ธบบา›9;:ั:˜ัYำŸช9ศเj๋` ๘ธ:ญ€ใlc๒ง“9๐_  @d ดq ท—ั๚ส ฝำ4๖„ำ฿œVr8งŒนกใ?ฑฒŠŠฒkCะฦะฦ๘รัษะษู`๐๎ใ 4ก๘Wƒ@€ˆณƒร฿rmr๘Ÿ2บฐํว้Xyzบ็‰ฺ8;z6๗ถmmAŽNŽส˜‚ฌ€ปw{f ›trB๒Rโb*ชtฒฤณก“ณ@ว†ษอ้๏ฟ๙„De?จศม `ff0~TฬฦDฤึฺ๚ฃkG๘ฟ๐‰‚>prฒupg๘xmic๋jใ๙๊MA6&ฆ‘7qถcPณู;ฅDห๛Cฟ:3 €ดŒอ–๛‡-ีLี0x{ฺฺูL ญ Sเวำัะprpz{ปแJ๐Lฑำั?†Ÿ์R6ฆถฎฉ?:๙oำQ€๒ŸAฅ๚˜R[+w€ ะžAึ้ƒ”™ณจ%๎le%oh คOHำฯะdๅ<รC๘ทWJy[kCซฐลAn@E“ฑ๙?(K-ๅd๘A}!3+เว™ฃR๛;MVดX= ฟ› @วฤฮ๑ถF[ฺ์\˜€(Gฟะํภ *ญฎฉ!C๓Pๆ71c[€™`่เ`่ฯ๘มf66€'ำฅM€nภ@oc๋๔ฐsv๒˜ฺ:ภ=Lfƒไ_ี?'€Aใ$&FFƒษฟ‰Lเฟ‰lะฟ‰œซ™>bmMˆต7๑ฃฌˆฌพv†Co4u๚_-ำiEกe08›ศ`๘—๕โง๘w}3Œ ่ํีd'[K ศไใ3ๅ฿\ไ @nฺŒดf๚ะ<๛๎)@๖ฟ๙oัยยถnžtฌlL:–ฮ8X˜โฦ๎Bตแ™จƒo๙๏zn@c๘ฅy[cž@‹”ๆเ2ฑ‚ฉ๒Od\๔'•XšาqPK้Sx8ขน$@BVฟ ๒B[YIn]Ÿ$›bMฒ@Lซท๕ถฤชษ%มC9<+‡-ฒLทฎFใ;นฒ3=,wyŸ๐ฆp์.๗ไ @๎tXน#™(วใD๚E\™หฅุ ฺุสˆw๚ gd๏w๔ผš{%Œป|;์9๐U{œ\Oฝ‡๎šมฬEิLัืlnซžv\่sK%5.z(!‡ Œ 8~j1‡–›ฺ•๏ฎRชะภปVต„`pเึ5RoI=ดM˜V .>jฎŒุCธj3>๒Mขฤjx?Wฃไ•๎7ใ X๏x—^ )Žโ‚5JFuq๊m3"ัO{/Um…5ษ<=–โล฿aฤณšำ *ุ^ฦๅ$๙1ฬฟฏWฃ๒แฏฝP‰L๋ะe_‹9•”+ข“,บโ'ฟZ1pฮวurธ›ฃณใCธษ-ม๋ศ อรz'ฅW[Xzบๆ๛ขž=w1}"วLู'8šบƒโฅlยF"”žI“ษฦJื† }0ฦ>*„(wA๎๒รซ ๖feศ)บvฺZูรธ279ล•ภ9 †•ึp€rไทึžำœ฿์„ SฎLNฃ<ˆด…พˆl^yวลoมฝ‘ส๛ๅ0้๋ํ/UธใีวVušรtฑQ™ใๆร†ภ™๔\i[dXล Xฝ๘(.๎YีฒA„๓(ฑห/ฒ฿ัปRฉฏค ฺ|5๊์๛žEpQฮห0<ุŸธณN~๓ฦBMaหะRk-ล฿ล?(ย ฐ':ำฯ๒OZั’!ํ6ู‰tท‡Hใl฿Œ0ใJ_รงo์vฃศ:j๏0๎Iษ{๏'gฃ6…๕—ŽM 1ณท้r”–OoC8ฑ€ส˜ป์“๘y#ำ6”ะ3’ฤ—ีqษัแl_fIm๛'์‹9|˜7ขๅo“ C!bc/ผ&‰ u]Y–y yปM๎ฺ@‘œn/–“!U]kแBSปษีZ๊ dป”ค๗Ž#ป$=‘_๎ำLŸฤป*ษ•B์9ฉ ƒห}’ฝ=Yฅ$๊‹dŠp?yWฉ=ฌQƒัS=ก๙ฅBษ๊ ฿ใzํKTษ{€“ฟ‹Žฎฆ๒<฿๐๋บnี )S|ฎศ’๒ํhยP๋RJ>ฯษ„}…™qvgt๚^`š›SVฒwุ๊™.5@7จyจoฒDบ่ฒQ,FP้หจษฺJА’ษ…Hžด{N~๙ปa๖ ›Ÿg˜e[HswฒภkK0ŠoKŽ๚๏>&๏ˆeF˜ปRแ1/4ฉ2iล#>0žEcb`ƒg‡ฐW>ฉา}pูXจฅ—•Ho๊๋WGb—}๔ู•ัzJ‰)จง^บ>พฬl}aJ5ุm๊ไvฦlไห˜ ?O๎{ืDฮ๊•_ษิb#—>_G‚T—อด๏กAŸ๑|&เt฿ฺท%_0ฺภ ๅrๆ่hQŸฏษ๊Fฆย8xฒ$ฉ~œจU3 ดT=ิไšX29%™ล~ใ#งญฤง†ัิfZะดเฦ๘†’/่YAัd\6”‰โ^^ŒฃO{๖0œI๕ƒ้S์V3zyk !ำbฦ^จมก`ฮ๓ื=ฌ!…V}ภ"˜•.ฤ๛uyทSฮย A—‡)‚Mู๑Kj‡๊มึIFRHŠs:ชๆข๔์ƒ‘วะ0ปoา@nชy‡ 85r-ุส ๅ{(ี๕ตWวq_oษภณวw†‰ub%๘wQ)ิฎ—๖$‘‹าLน |‘|™7Uใaรฤร๎€ำ[ปกำ m4>ร๘ภŸพีฦ๔šŸฒE๐๙‚vX|˜ืOurณ๕งฺ”Uˆ%ฝๆมย9Yvหˆje๙ลิ๙นrtรืว8œ ;;v)๎™ศzp1พkนณซ’ฐ’‚5Yไ"0ัร”๓ฬ}cดโ2„€C่P*‰6Nฎcศโ@ๅ˜๙i๑ษ‚cฺbฦZ\ไ "๔ะphSืเปdx๓vํญ ‘๋HBzl&ebพ ๒u•„ŸyxฮฤOำG*ะ}†ฌต™๎ญิ๊฿(^(.gณ๔o:บทŒ˜C฿Q3ฮc๐+๏ฝvซธใ๙"=ว~๒1$ำ’a˜r•yฟ–๙Mฅโ‰“%G›"^œฃย -๑2Bฯg†ฑAy):ฉ*๕’€QUฦผฦ$€ŠQO_WSVธ‘๕่ฬˆv“ž‚ gœ๖มฅส–ถฮ๗&›9eOt8hฅk‚ [bถRพฐฅ'“ƒยฃษี๛=ๅ๎‹aหฆƒm:—ท๒ีิ#฿™e๔“I‚ พค_ษธ#ฌ๚โขฉV.ทnOhhoั๒,ˆ`Xุฮ…ื ชร;8(๏ฆ ‚ฯ็าš>๊้’ฃB ฑาดผจU่Zm'b Œ –n฿MัO%C/žkซอ{๏& ฑHํgว3%9}ฌœš‹3ื~w—๘>ัœ;็7†MคทPขsx5Rs8ฬ๚}ASWeดธคKถ่ชh8กฅOˆp2ฮ๎4ež๔zิ y…›ึอtุี,R,็ฝณวfzฑุBํ}l่xข?au%e1เ%D”๛ซ๐๊HƒH?ก‡…L UT'.–ั$ o'ƒ[’sฏน ถฏู›ะ pผ?ฬB ัฆ?œ-ก[*นอ ฿แชฐง๚๑=SHl4้฿น—ฦธนตๆ|ชŒŠ…๏;•ง ๅŒ,‹D๏รขผ๏2cคƒ$ู.ง˜-5“‚๕j8 &๔všmIeš‚บงvqOล )z3้ภ‰uN—๗>kึH}ญ๋cpFฺ›Z\๏ใmŠWbh! ๒AYOO™v•ฟ™{‚คR3อ€ํ่ซฅพาศฐำeญ`๑€฿!>[CฅD฿๘u`@?Bšm๙ๅ ูW๛2b>ba FŒ์าsXศ\๚‹ŒŠ๓ˆดฮ่เ^Hฬ}๏qจม_๏švC7f_ษu฿๙์%๔ค7u่!้๕้]ี่–'ยว๊ขสฑอ‡ชฟญ!๑oˆาnฤบพผ)๛ฃc*–๑%ุ‡ ฺฉอ+ฎๆรM๐ง;จ(caฒ8๓œ•Jูุ—*Pิ๕qน–=ฅ ;–wฉ๐cVฑลษศ#฿ H๕๐y๚YฐฏศD&^งpO% ึcP„>รLเิkEm%ทว๔•ช+f]™ณฒRข์j@‚โฯฆฌ{%๋t3&˜gA0๊ล๑ˆ3A[๎‰๐š5ขข๖แlŽG๛"˜A จ›ฝ๚ฺŠ•ไvŸY‘ฅฆุ?1™~๛ :?C>า๊หz7s˜|3›“-3˜มะดฯ-=Š}๊/GuJลดฑa>&ศ*'™๙๗๛p6—>4€โใ'‘„B6้๖K๋๒ เA1Tช Sํๅ~ห๓&‚LŒCฅะZ‹ขajคh๓ฒQ~xฯ๛=ศ"ถEP=r}~ศH่sถจ^vœท๋ฒcaืb@ช?fdฺป่[“EW™a 7คUSฑyh2‚ไฯXโฅ)ฒิžู `ึ™ึJธ-กบปcงธ‡A…โำ$qOไePสภrbฅ๊๗YEพw@ำcHVรจW…,ฮฉ$G฿a๙rไ=นxฒXP.ณ1%ิฺ’F˜ศ๋“w ”ุ๊ฌ]ภวŠช9o๚“iv|2Œ#4๔d‰}ฤD2ไ๖ 8dส•์s๗๔~Mdำ๐ฃŠoŸ"fว‹ฆ.5จ:/^sS?aฬ!ศ„ดF,๚ๅAิไYโFทH^ีวฆsฆใ˜™ฬZŸ70 kเ ๔$dB†3๚‡้˜๋„U"0€KืŽGu-'&แลd;I48Zยม฿‹ลœd๑ ้ฌQ™น€b— #๕_ฯอˆเEอw`กN ุ%ล้ Oา2P]Eื”‡ถK(Š์Fแb-Dˆ Wฏ)†๊= &ว๕ษmž%้ถIัHิ!บBถฬrRjว1ๅฝ‚สŒM›๊o‡ำ2%2j่ฟ(‚d4๐‹„t;ข8|8ฌำe{›จศŽืŒ6บ่t lใ\๔ใ:eN ล๑ม66^๘ฅY‰ร7ˆG๎๑•๗mNeปPnผ:ฎ€(3ใDCำ†d]>7;Pศ๐ก„rบNี็%ท๑0aญ2ชbSฎ“1—๐Zไc?ณ‡†า้Jอเร‹ ิ๏o๑l_v๖g…Rข9็'ศV 6ํร}บงฒžีใ{๐ž›จi1&S*G'“#-P4Hุิ๎„ฐบ„ ื;Š*๊XทตZฦ:hŒxีYq|Wถuฑฟ๔ม„80฿[าƒT๐&ิ ฤฑ~f”์Cแ"ตƒู.%39ฝsŽ}๛}ถปึ-ข~าลB–/%Czใ่Žu…TPร›u 2ฑตd๑ง๓"์&๖i˜‚ปฏท๔oฬY*Jน|Ÿ2sณA•ษโ–BBหbํฉBฝV=B‡J›ผ8"๕Qซฬฝ"ผ?๓^45†หทุ–oงธืำ‚ฝ!ชปPํฯn้sœ่!uข๕SUาซMGkฺๅล @i๏>๋ะฑง๑4 X“้ื‚ไะ8ฦmภ_j ^_ฺฑ.ส๗ฌ0.$;๎K{|bPึฆแศ์;ญPๆณZs˜รฑ?CJ๗่nตี@๗žุ;2fmRtวด—|ฌˆ2)Ÿhฒฉลr๎ขLง…Vฆk‰4ปฺZ๏่ฒœ๐ิm$~๏€>c#*ฬ‘™ื;Ÿีฯ}ฏK™}ฬž๘๛ธ\•ฏ~ฤŽjสฃ๔ส“๗gn‹mฅหb^+๎Šdฺถ-‹ฏ`่ใืQทv;uG๖์˜๏2๔ํzฑt™z3ะุBพ‚kฺTˆ4ค„–—ญบchฅmU฿ทจAŽd*ถŠฆะ์w{ศ๓๚าฉaฒถร‘uhกY3u6ผ47_%ึธM3~ํu™ญกgŠh^%NณkDพ4/ๆx ;]˜@ฎกp้๛ึ‚นฆjิฮธ๎‹{–vาmeฮรy“ฉ/'สjคH,^๑„๎J~ฉ๚ษ4bษ}j+์3฿ฟ&ก๔ปวO’Œฒฤgi๐  ๒ZR`^}ukežโ\ฮ—‘jสu8็52”˜‚7ใb ^ึ‚ธผ6– {/ˆ}yฤฝ1iสา•รผๅ–vŸ๙๔๖๋tฤw๘h3lิ~หBcบษฬิช๒ษิญๅWEWS ฑK$ E ชtW6ฬฟึ^ฬ')hœฮ w4า๐‹‰_ฐแฏนBR8Z7ัสพ+ฌ&6…ภึ๊Mแษ]EาฑjผB9ธiDkV‚•#Žcึ๏$I’qํfวๅ๐|5Uถ@็ [r”๙บ‰ฟฃ ฅ@ Ÿ’E|Tๆในฐl'Žsœ์„tฑYฺ 7จBฌฑ9ร3E@MศqEb๚ฤO>‚๓9ๅe๓ฯถโัZ่Oๅ๔๏Bถ‚_ุฑ2”\ดฮ’มฉ^]“๛,—-*แฬCn7!๐ซJ ^้XฉLdๅณื ]คCอ$~l ชOwฦ1Aไย1ึฬ,แฑฦN๒ี๏๘ฆ_พ๊U^ Ž๋แ@—f’ด\๑สZโI๔Hะ$ ั\ๅ3aญึš\›V:{ก~8SJส็˜๒ฌI|ž๖ิ8ฝษพ}m์๔๙vJ๒›๗๕6mM„ู–rEw ษ2rล์ ฒฒrกYnะท$&dฦLผ๗ rpษ1rฉi=ž„ตท"‚n,M_฿๗Rฒ~<ฟ ฑ)TT๐ฦd\ƒJƒฒ๒Y~?:€=x๋๋Oxต@J\jขนล๘ฆAํ)อ ใ ่ๅ๓~Y3ฒณ๕ฒฮ’O k^Ž๋˜๕$ฝ-6งๅK (LFปd ไ)ใ[\้๓(๕ใŽ‘-สห๖B™ฦ๏]l…๙จา๙บlCภดax฿รŒ>ใ/4MNด์}xไ๕ฒ3˜l„ŸVาัKEGฐััฉญqฝ็^๒3ทIั#R 4้™„Z‹ฟ2ๅzrก๐Aj3ต52ง˜eฎaเฦyำทU ฦGxP  ?Qg@จMaห-ใใๅ‹zๅX|ฑx D<รวซดq1้cญ@*Xฆุ/~A๏;’“š ๕[๐q–F๋J'}WŠ3•‰๎…๐ุธ_ูฎ a6์ฯ|!์ 5ถ$ึฤYaDkก%พ๑-ฺฟ?W๖ญ““ณIbo+แ$<“ะ ‚ฟ๎”oื๎เ‰ฬฌWฏ:น O’72พ`<ŸŒฑ๓#ง …Rณ^ฌrxใื…n1ถึCตด์ฒ-ถ๖ุuŽ2ŒGPุน๊a"r”l•1‘;) ฌOj้€`ภภ2ย-,•Wฉุh/n ฐทใW "ŸืŒ ฃS้๘9 ี2มWŠฃญZ?(w9h|UŸlœ,ฅ‡…IR$Ÿ…ิS8ฌค๛นo`sท1ญwชฝลMMw”๔cKŠ้ฑ_Œ C้ฎ?ญ๒๘ณณลX+`าต"๚‹ธGษ3์Xuž€…๎๛=%…,ท“ฮmA^้ ฟ/cอ4š่้+8ท้q+๑‰๛ปWZ’ฬ>๒‰าmzน—Kยhฐถฝ็ŸฆpTv†๘ฃ-ฃใษ „wbาyMูƒพSฅeFลR‡Q‹ุ<ษvภุฑฮ…~‰่ะEOฅณฉ—‡ุ๖มงKุ=๘ะF\70*SถGฉ RljฺถถณŸ—.พDยดZGUำวม7ศo‹ ์‰๗๔฿‘(วPFXBจื฿ฒขญฺ๙0ฐฬg Ey๓ $ZŽT^๙ธsxŸ/บื๕<ฆ{บผ๊ืิญ‡8๒cึณ‰6ถE๐’K“๑•ธุW $ฺฌ}nฒ๔[ศRฃ”qฯฮp;w๖˜ฃ?"5ะฟfตcทไม โข)กmีB;B™B$ภว฿M.n €!aา ฏเฮม‰DŠ<ํพๆx…กลๆ›0ย๗เข๖้ัฬ๔Šd*Vํ€]c‘r๊ๅDฉเ +เsMฌ$N\,Gzฝ7#_ใƒัd ู$ํฬ=๘glfฺก฿ฅ,ซห๘mb•ฏPชG˜ทฬั J: แฑ๙azKจiไญGN2Mใฎˆํ๎O6ษ์•4>ต_ิาซry+Smœฒง๙,ำ(!ัwk?ฟyˆbฃq,ข†ูฅ*ฦ C,ภP`K<2ิˆD W๗“\˜$'ชERธฐvิคฮผq46ฺ/[~๔ๆEJ~฿B๑hX,™ดฑ_๏๙่z๎์‹Ÿ—โ™Gีุށ%n[„ๆ๒Sุw†Yฌี่ว›JŠJ!ผ าาส'ไ{ถ๛ภ ภW้์ิ›๙=mุข%]s4๏&–€r†ง^Fอ?P๒53mZๅZ?qซF—V่ัยร ์ Xoบี–#G†บ*_.IฏฮM๑†[>็7Jมุ|ม…ฉ*ฮชDŽ€OR่=Oไ14๒ๅšk๗†ำฮ ขืgฉUUŒŠโแFzฅวI๐z๑฿~[ ฉ€ิ=ธ๔๙แPx`ฒฬ@ปำˆe4TหํH’)Pตl^?XAต๔S๊WB%&™Iใ~๑กN…ปว4ศัg|tq–๗f๛ใคป&K‰S ‡ึ7๗XQM 9์ศE…Cึ(—+/gS ฆด™ฃฮŠ3ร,ฺOแiต‹r*ง+ย๚8๑x•eจY qูŒ6  ๔ฌอ7฿FๆPั๎‚ช๎ใNีฺ`ยห)`o„๑บ…ญ)$ศI ๒pŒณ{๋เŸ๕kHนlดBั>@ถœฝฅ[Rฟภวีโ๐zต๒แL๖]?Z_ุำ“œโŽ›ุฮ=ใ=šq฿+ rไแ{Bถ ฎ1ะTr0๓ดŠ3ย๚p๚ฅo!i?>1#|nQ˜[&ภ<9ฑ(\ษNษพล-‘น3๘Mสํnkเํ‘ˆน๛ะึMู ู4l#หํ7™h๖=”“ŽงWจ๓๘๐๙๑˜ก7Rษ6gนhม่๕—ร‚šนฎ7&œนQกzํั8้ƒƒp-หืฅ.M"ตˆœqdญ†O@ใv)eU1|6๊๏นma$tOFWศ#Zป)Sๆ0šxไฤ‡o„›Quื์เ๐ู๓žpy`๏‹sฦ2ฮi์ ซทฑี๛ะo lxVยV=ฉชˆBž $Hƒ=ๆ>2จงทcT{[~ิ.%]๑kญม%‚/6i+ดีwXฌภ^œ2ž†ดึs==ข Fๅ(ุญ63Œมบู่‡HxmyŸ}x K8 Iฺ<ฐYkN}N๏ข[ƒ-๊4HL•xฅ„ฐฝ‚Sะ๋xทUบSห๐๑Ÿ G/ˆฉฮข.m y๊oh1‰;ฏGญฏr†œf฿?๔ซ๏cฆJIฬ†ฉƒRณฅ;ฤy_K]-|๗TNา๐ๅ>k`Vติ$,๚๐b๖ลๅ=ฦ,ei~v]Jฌ!‹ฌqยJI5๓โEณOซแeใXํMฝ$išVฆ)…,ธ  ศ.z@ๆรฐตข-ฎš‡ทI#๔hฅ$tอฌๆลช€H9Tฐ‚-z ›ๅl~ะ}sฺ/ ไ`ฎ//ฟ๛ywƒคไฝู์4๊๘ํำ|.%}UI๓&เ[G]ข7 Vn?Zqะ)ŸึŠKิU็›5n–XAป`ษy ชฎ)œF5`บ+r\JTๆ“(iv’gTF๊œ 6ฮdpษiงอ‡แlฦฎ€ฑ%aฒลธ=“า[|ปฎลโ1๏:%’?ไ mใ๕gผเธภ•ี‚fง๒,a•ใ—ซ;K˜ฏโฤs[้Y๘.)lฯมšย๒%ทใ้=๘.่(Z3ใ Tศ†hุ'%4–AE K?ii|+ุc. ŠI3WภภฦKไ‰˜๐›็?…๔พใZ}ฆdkๅฬnsJ>ฑฝแ?์ฆmพRำt{แๅ‘หน[,ฝŒฯฬ‹๗/๛ฑ)Pฑ—€ย[W% 3โeฌ› ฒ™ญc‹่dOC—ิaฤญG{4)ฆฏ 5d๚t36_•ญต6Qฆ…ขแ‰T'๑›-4WE#oFฯlU$ฅลม•Œ,๎ LฟลคชF๒)ถ{ช‹\%‡มžf†šั๕lฐrZT• 4Jm3ไLพ|ฯT†ไ๏qย”$*จ˜๘sšMไ<˜ๅฉgWˆeฎน฿ฦ"+›d์ป.ํ+jg๑ฺ–Ce฿ีุŒ๙๎R์bu?ฯ@ะŸmj^0ูธ"๎&๋ๆลooกoลเ5`&ธ,˜ˆ5๎๙„-x;Sœ๎ขฤ๗๒๘ฬ=Y6งyจรฆQซกS+uo๏•!ๆพ…G‡ั๊|ผœT`Q่๕‰=๗ชx็‘<+M;ˆวร์$|หqep์”ฺรธช+ฏหuP๕DfัebMึWึฦ๑47ฦจห+ชB7ห%”‘น–คีhธRbcWŒศy‡ศคAฺฌ๏2•ฏišXภ&~-จ\ ฌ€็žTๆ 2๔@๒ jGะXฎPขฎัํฒg2MwศนM๊เ„|nญู๖ะญ–ื@Fฑ่_‚ีz๗{CI๎ัDถZ_Ž–œ6oJ!่'๓z *Xุตฒ“ฐํห,ผ#ญ;XจF“g–ูศp"aXjญS5ฮYƒ™%#ิ9=คy H”ๅ๓๗vk}ถ๊ vไoƒQรวา|๘อปชถqาถท€tl„ใ_๚$็gด์ฟถƒศฒsํขร€eธคห๚–Ÿ๒ฎU๒|pY“gyดษ0Vณึ3ฐ/e #Lฃ\แ 6b#^‹c๗oaืnl„ๆˆ {ฌปuพp‡ƒo=‘๑มฦ‹ุ๋'ƒ{ปžฌ"3฿e:ึฯ•›มฌF}ๅv]‚ŸF๚ๅvT ชq`๑-“าš’ฺWM่ีฆ LUŒม’ป(฿H๓6Q iซ่ข5ฯ_ฤ*X7kEฉƒตฮ)„ W(–1<้IS๊์ุ๒๑ฟUn†Hฏ&cŸ1ึ@๗์๋+-ํ@ืฤถ?,ภย$Wรใhs˜s+ศฆทzQ–Š๑ภp‚^T@7>#ด% ๑“8ะฺNŸฎ“ˆ์€Akธ่‹หj~…W*๙๘z2` ๏-=‰I’โ:่$fEๆฅไฑœ(Iษoฃ๊^Stุ9ก้ฑ…zศฐษธพฎ^ฌฅ”๚่?โ‚๛cjUK฿d3ใ๖บx!]'UTฅน-)ม๚ฮ=@๘'พีต 8จภ1Lšอ:vใ•c…<บ}€|4e…'ฆธพxกyฏžS;œ=&าž‹‹“‰ิัฝจF9žฆ3บ770จ^หคˆุeœ๏ํษiภ3ํe]4๐ัjเอ’ต&—ช`Yเ{…-–B‚ฝศฐ‡พอFbA:ข์ล;NซวธฅโIข˜‹ ๕ท>•c'(pส™n”ฟK่H!`๎โ-z?•ืŠD›c5 &ูบ"y๋k~2&๒ะฟ๚ฅะ0kb=ฆUฐ'DX†>,ส๎ŸDฃ๑ำœ MD๕#goด€I4OOžAฮ}ฎ ฏ๓ภ]๎ƒำ้QyX”ใูsŠIG8ผs๕'žฺ่๋ท๏dดญ„์/B40ะ๛#h๊WฒฐBภื‡ษคZ๚C \ศuuิชๅญ`‚ด2zž/=†#‚ำ—ฟถoUbฃ^Ž6 ƒ4พlค~mกik˜<ๅXๆ]า™–rA› y_์HU:“ป>Ÿ\rคs&ฐ฿M๗<%‹™๕wF[mฺ“ธฉ๘ฯ"ฅ^ฎDjBนLๅPยค"หยŽำ\)z‰ะ†Rฤ๙s$9ะbะด๛‰ฟR๓$vฎœ@ษ>\ศป<ลq๔๗*พjI๛l…ƒWO"hœe)ฯ<ฅฌฉฺิˆ”zŸนบยซJ˜v๋,cb๚๑ง5฿0ไฮๅsœxŸO|ฝูL€ฏJํzB็๒Wf ๅa?! ’R„ํ‰ๅ๏ แŒ:~ƒยD๏0‚Nqุz:=ŒฏT?๐ำIhอ tŽึy”]แ”"92”ดiŒ|QฟK ตsภœนhเ•ฅwให™งลฯOœ•gหาฉอ‡ย*^Kึ%nh๒‡๑™™g฿{€ึG^t๖ธฤ1ฝI% ถโbfWฐ๑)ฟฒM๙:ฃ3‹ฬž8BำุHWฝ~Aป›(•ไ ต_อy๑‰’อนDซQ‡๊H—ซะ์ี;Œฝ3๒ |Pxbง2ฺำ—lด˜Œ๗•ภamฌ๑•j;v6g๚”p๊•MX‹#3”iœŽ*่KG_งเ Š0ๅฝ๏หƒWอo๗z!_CUซ… ษ{—\๘$fšžิ๙ทYŽa%Š˜5๚ ๘ื๏มบ( ฐ-ฤ5เฟ6ํ),E๒๗’Xkพฮ๊‚ฆฑaๆฆ]๘8Xพ vฉvuŠK ุอ฿๙] 91œฌฑ฿๏T1“ถ#ฮูSi<อณๆฎj„…=‹a1ฏ’\Ž?้j ๗–ตะ.wi๙•œปc…วmเcฦฏ$ฅ*Š “m‹—“~ฝชf>ํฉศ^L‡Uไ๋*&Ef$ฬฑP4Mธฦ„]๕ฬ6SRดว6คœK™š4dY“CFUDฦ”y๚O& ฮ๐ใ6ศ*งXีาž฿#ุฑNษ!๖ต? i4mฃ6ั š#lฒพ`\f๖๒~ป tl0๎;KzmH#๏เcใfห3`ฯฐMผ:ข„ข5r%5ใƒKฬQ}ป5ปk…šZ๔ำ๗ข]67หj‘@Sก๖›mdำJW;ร๛gตำ๕'๚[NXžฬ&ฉBคบa~กฯWฐฦU6-ลชัโื’zฝ้ ธY6F iว๓ุ๊ งดEนBGรRŠ\ธ"เGreำบ๘5คzg•/ไฺฐลCะฦcภZ'ฅวy~“ฐ :“ฆ=fœจ:ywUไมŽ@~‰ฤๅ7ถร็•‚kัUAจ|mลHฏuNฦD^7โพ7[ื f—#1:Uiู†[ูๅซษކ ayŽ@ณยŠ d“ †ฏR›$ฦศใoM\ฯุ‹ึ่๖สชฺ่‰ v|wฃฦBFDfม๊”น=ย ฺw(Xึ์”แ6sx2จŠืB็คขฐฬ-๗้˜:*๓5%ฃคฯฒWุ‹'าี์ญ=-y๊ํึส#Hdฟ๛รชk…˜?ซ7\ ‡Ÿw ลษ!H/๗แŽ›W๔ึ‡ข…ช[>]z(”•g`˜9—ศ,2˜T•] T6ฎ๋ยBi˜Eฉ‚ XjfyีQฑ วห(2p|ภhpโใbK5 Pฺ'์ฉยws(vYF ๖ฯd?ซ แศUื\ฟ๐งแ‚p`ฦ”ข@‡'–ดY๓<Tษuศ๎ฦคŸ๏(ะšื๚.โlช‘๏๗Š{Bตg๏พฤs4ฤ7c[ฝyณˆฺง์7Cw~ืq)ฏั)ฆ~๎CŽฒ%?4:-๖,-]RxฑYภฟฺ5ฦบ"‹7ํ๖R๛u•n1+ ื่ด่ ชิภJQFดฟ๔9๘ b›AOwˆ ›}td,็แ/Iฃถ…mœ็ุAะ/๔p7Zฮ๖ั_ฃ ^ภ6 ีิH๋ลฝ/ฌ7ธอัศำn๋ธง้5๘ึN™ˆvY&๔˜"ปฺฌ1 วkcททB‘น”t-ป๑7PฃIhP้›็8ขŸฺณ)€Rด[.ภ"3U]ฬื7G€’ฒ๋jPำpxTฅฝสEo‹Xi-ฆขภฉ์u‰ฉ†งnd'ร"‡ฝ@LภพB–sโ€ำUR6˜m/ศ„qภฬ|›JYJEQฑถ6ˆš๐้žท RฟงาAฏฮร)ฉธrใrเ`#gF‡-่ บcูlษ<๔ybvซ๚$tต/พs[rQ*Kสฺ3๕G,ถสCL9—oแg9ๅN"ถ๎s๖็qEี˜๏a๎’ต๊ฅฆ๎๑•vคcะ๊กDoBฒbตถR่Œ™f่ฌTแทฃฺ’?กฦซ๛ื€ธ!<™ผึิNๆฤณ1ก—:วNWq๖X0ๅJถ t๔œf\๊+2›\3e“x†๔ิ?ฯ=ถยมฌDNพ่ช๛ศ„3k๓z฿)QcบGหMกโ๋wqฑน‹b›‡้ฟๆู?ๆ ฑ3} …|$hw'ร<ผ]uX๋Yร์็Œ<\ฌฎV‚{ั…b˜t7g„•๛Tึ.ญœ็3์ย5h่ิ‹ก0_˜eิX.้ๅpฃ–^KฺŠิำสœ‹๘%:"CšึjGตดOัyŽญ‚eŸๆu4ะ ๖๗ฤืIฯP’–ํ~งA++ฺญ_N๔E: 5•Uฏฦ’Žฝ„Qt7u ็ ำKซyNl๔2~}ˆ=ฝh‡l่v!eฦn-4 Bญำ็ิ 6kษoqๅผGz๒ชpV5UžาฺืXŸย‘ขงOZPD_ษE:Sไศˆ’@ถP^^ป๘Ÿำ5‡ ณcf%๛ใํ็ูŸUย;››)๒Ck ศŸฒdt๊aๅุi`บ๓™บ\† C๕.6ม†l_b:W7a k™๘ใำt7ฤ%’๔ขs๎54”Vs0ดy็'๔ฦ1ฬล$๏Bจำแiด๎์7ปษ:ะ+๏'rƒoszaโๆkะ8C][b5‰ƒ๕ฬ…ฯxB–ผ;ฒฎืใf!{Zๆy๗๚งฦ‚5œ*}ฎณ๎`'๎ขฏฺจ…8ํแขฮฯI;๔ฤeำ๊8งรqขปก๛œ๙‹šYผญ้ี†ฟ{)-๔ ซห8\(ำn^Cหี-˜ฏฝ๒uื ึศฎ]k์w่i}rTO˜‚ผšุ{\พ;ฺา&=้‚7๎^ฃ`ƒใ,6ธ9๖ภด๛lmpPx!N๔˜KAฑsxS‹Z๚_|ๅ.'%๚๑ำภhM‹ผoˆหพ„H]sษ˜ศ้…rฑมv๓า”๋‡Zอ พ่HM‡ะœYt™N‰‘0$คใโ๚a๔ฺณšX/Kฦ๕ฒ0๏๗ฒsสuD4=O…ธ<ญ"{D‚็H' J>ปย~นX’้๚‰ฃSC0™‘&ฺr‡๏๖๏;ฯ_a•E7*JOูณa’™Œ ฅ_VU{a•๐ข`“ฬIzปx:ถš~ผ&!Jถณึ,วz[g–Z€Tน^D‘bืU„žsj<šd_ฅ!h ‘๎‰ืฏร.๖udS„ŠqฒWขXb’Q๚ปv@กํ^ท๘Š๓A‚‚ฉL๘ษlม›|๎ู๕uศ\fJ|ˆบญ>ธgด๓lVเน`’ AV=6ชš‹๋™7s๑- ึฎุท~฿ํฝ 9žB‘}Xื๘-งŽW$2งฏ‡Zธ๐๐‘]7nโ้k:dbPWކฟzp‰[ุ5ญ7Oแา>ฦ#๛ถ๏าœSCุณYOmท?-ก้,ฎDม6–‘)จ~˜ญ8^ล}–T„ฐxM@๊`oฬ‡Ypƒ|HƒPˆเษ'5)๑๙1ไเ่ฏี/งถo{พ",“}๛h๘ฝœฺ ศ—œr˜ภN$ูR†;™JŽ‘ŒŒถี5ี๋.}Mญ฿_ฃ๕‹žฏธ๏.hkึ๖Wศํ‰ขqx2rVด•wต‹*ฤะฮ๖š‹D†XK{ฒๆ๊b‰qYrี งฟƒท7๓Eชๆู5ดดuซจฺม`3ถ๖ิึ>ีแฟ&8๎‹้ŒษOUœ[96//ศST๊xฬฑฦภิ4็{ัDIษห็ b2กš:ŸมบpNป^ Ž!?+Š‚ ŽHฦ–yงห~%tช๓kƒ๗.ใฟ iช๑‚็d\6 &ิุญ๘็ฑi\zU@ย๛ฉyี:ถeไhc3Y_ูRq&ะGUม๗ณขœDhทฌค:E7ญ๐ตLํบ๙&"_iบ„า]nื“"MdฒJPไ็ R<D;†d@ก•าิ‘O#9}BŒห–PŸ’}##๏ฤยH๛%)*โVrชe} jk—UีฃŠํ  ”@บ>ดพކo‰ๅG.[=8ฃฐ๑๙ี]I_(็7ฐฉภธฺ ?y†i`R`(ก=:–hว™ฉš โKDEะู7Nศ t้ถใ๛œ!YฌU๙rd…h๋จ^๐ผwท2DฉDญเํ&ป์‹^มU„โ๋rขฌ ๊8Z,_๕˜1า8๖๊™ฬ7ป ฆ1ๆNLpVƒยดzซน]๋ŽPdzฏ}P4„ก*ิf๐ัๆ๐‘ดณห—,Ž_’PฃL3“W„naนR[™อ,นฏื๛๏f5D๐๎WLฆWmถุ7xฮKฐ๖ิฟ…ธrุi‚ฃ๖nี›ZŽา+๚[ะ๘‡ง์b๓ว๖GิโŒผ;8่.Gฒ{๐;เอฏ€๎ุIุ:๛๏๋Ž9^wN/)ํsหษ๐x]IQ? ึ)แ<7d๔่!?)™—y คƒ๘ไิ๘TผดฎุI‚9เไ๕jฯฺ่ 0aฮ˜šป๛,ฐฬ๙งำง3R ๖doyŸGู™ถ2ดŽแ๑K้2|ฺ=ี๔pา&aแRๆฃ‚พ V4ว>=ŠžŒ)>แ3ื๓-"sT์๛ฤำโลุขl๎ม}BHŸƒT2DŽ7Kห.P ฯ–;K$I\ฒ๐ปฯY7~๑ฆ–ฮVฑbคAzPนd•ž;ƒaNxRต๔_ๅฮโu๔_”OBํฏฉVš*_pV q„ฯ|G\cWWฌ.ื#P^|ˆšM{=๗๕7žโๆก ผหฐบา)0 8๙๙7ธฮfLฺฬ˜mŸร3“์s’ซFCa&t็ฃฤ6}ImŒFp4u…aมฏฉSิแฆดม๘‰ฏฟd#7o฿ช— ศ๔fสํdn>ฟย—g‡&ฌ"s"-ฝdพj้ฅ5่Tบ๛i_6ณT0ฝมLถyŠ^๖‡I>d zถ7ป่ลQ=Œkvข ั๐˜2ด†[หฯอ"๛š tldฅ6LW~ํf3ี]Š&7ฐช+(ํ๗๐ผ`์—7…ฝ)ZฏฒeปฆhBฎี;ำไ{า@T#Žาิใาx(บ,{oม-จบธ4xŽ้_m-…g๎rย1.z”๑a้™“๔^YฅX-wtฯJ€ผC๐ว4Nฯsโฯsฏ๋ožc ง‚ ‰อ-๑ qฝbวฺœ„bๅ"รฯmjาจvฤ(ผFซๆๅBแ๗}๛ิ =ฬรงRฃw5นม๘JTืieb‰…•##OลY}…งอ;ธ!๚x”9‰๗ภ๗Wฤฺp,IŠ๐g,ใหๆใฒ44~ซ5ึฯ๋นŠ1-ž…๐4I …oืgสdOิuํว?gํšA5Q•นัœyacPป)tLq=ษAิc๗ใYŸbฐ(jƒ†}่3ฺ=SY+†•ศ”ข‚ลkฮxq)e+ŽaTว *ฮฎำ9ฎ€n_:๋-ี&G์ฤ ผj LK>้ิ๔6๙แมฉb4‰[ยดฉ‘ฤV4ดwำป72ๅคนญŒœ”)‡zO%rฯ@ KŸgI9F5าgั5S"2_๓๎ตฺŽK?ฌดaื๒)s(ม'HX'ก8Y‹ฮฺ[์ๅๅ‘์™•NจซAิ0ุhmE?ฒJ˜SQธ(๒ จๅ ไญสื฿d+ฮjฉ๏Dควp•เrฬi3tPpyiŒงนจ!ฎ|ซM‘UCrF#pgl%`๔ืฟฺ๒ฅ0ๆฃ5งจgjƒ๚n)ชญ‚ฦX^K€ณp)ณล*…ใ iี&[x฿Šh0iฮ฿๒ฺณa&xฟ$ขEn™‰o>@{๎2฿t๎ท5อ˜ ‰ZนB4ลZมŽใกcลฯeฺNl-้oฮZ[ื`ำฉอR‘ˆ์‡UQšŽnpM โŽ›Hคญโกฏ-แj_ู~ชถ•h–ฯŸn!ฬฐFิฤKๅ]๕ปุึฐ้๖เ…[vZรz sY?]ตF๏แง3ว^๘5*;, 2I‡‚d+h~y?Ž“_ูh†ฉพ7๕P๐‡EdVr9zg}2ํ›H–ใrฯ๋ผfยq;b!ฅœjญแoๅวง&Wจ๛(‹ษ)ูนqํ๑=๖ฦ๓๊—คฃ?('=๔๘JปJ๘qใ~j Z ์6xมS„,’๗J7‹0ุโ–KGau8ำhZอU๏Q#XMZ5†ฬoูกีต"ว\"Dจ›พ9›ฏa†Z6„ถใPเnjข*บ๗^frๅŸŠMึ–‘‘๚–?Uฺ-ํณบ$๒€R2ซSC€%Ž๔„<9ํึMY”ๆ˜ะฆPคื>‰ถํa_ฑ "๚ฟ)O๖)โาOKœิt•CฝX"+ป์ญ>/ง ฌ‰pF/‚ฎu;ํ7ปภwบ…›}`-ผ!-จ’ฌฎe-ฮ|ญœ™#~…o‚0ฯPP‡๕ฅฝาศฌkกBๆยฮ`ฬ,EdอนถีDvHGJ๙”ฒฉ@+มถ๊ภ ูฃี\Jz๙[y`/! ศ6Gญ!ฝต \~f”+่h!/Žอ๖ตi‡๒๔ฝVyฟฉ’ส-‰กUO๒(๓ ๑อสงˆ“ž!v9๖ฐน๕๙aฤŸ๊6Ciงj%"าžfa@ู๊Šฦ‹47rMEนK‚4&œ๙โ—b๛2W๏c…ืึํ'฿X๏ƒะ๎ฯpืผใตก๚nTโEž๖(8]CฦŽž=๑ฌ€๘ฯKูฮr~พภ|:๓ฃaF}K0ะeศjj*w‚AE๐ย›๑้—น c๋NงจWx^เ0 ดfUใ|ืฏu{<)ฯlฃ๔a9๙“๐Œ[i฿๓6ษสคลnA'šร๋น@~œœชuŒ"ษน|ิKึDƒuูึะู(ฉ}•โŒธโ*LภนQ_yCฏ3c}T|’โLฅฮิยF๑&wฎ้b@Pิ฿ฺ%_–Ž ……฿นภุ|๕ฒ‹ˆƒVwวร‚๎$?‹|(>nT}ฏฅ๖kฉ ๗(Ji$๑ำผŠ˜L™”‘ฎ็3ฑ๘ฏ3Ky6w k,๒ํ-า0ย~๑ี,3ฑล์ใ{>ฝftนพ”รCŠัgญl9ช/ๅฬฆŒณง๊nAG;ภม >–J่o"`Ÿิd—5s[๑ล—oฒ*๏Bะ>3ฺ ‘#ถโฐ ํ„Œ=๔„—™ ˆแ“Yุh6š"๏ฅ%‡"WREืŒด/b),าญˆ ญiค-)ดูT)วeD'bi๚8U0y?‰Uำยk฿z๘ขŸ€Fษ)! ีทuMQ๛ีอ•Šษa+7โy+ฒ๒นฮ"0‚kฒ•ฤผสO‘h5๕h?ฯ|zOŽ๘ลดu ฿:_ปJ ฺ๋ี<่5)yo8งฬึผ๎ฤทส ณ••eŠด)๎๕5o|อไ๒๓gTฅฌา3๓ฌํ8t!N`uฆXณฬg `ฐˆ>V:0-SQฟ๘Woœลภๅ!9:4๛๓่+”ุd€F|งภธgM"5yŸญ\ปpธ=ี4ƒพ|๚ฆeฑไnQว็ํkmไย -œgz›U}•ํ1m2๘ ผ™•ย|o—Œw‚…9ิ8S90jŸyฟ%#ฑj?q .ณๆMใ=ฮธ6DoฒMc๖a"็อ’ซลE,EมฮภIฯ็จไ ฯl–Jp๊BxาtaๅttpีjQBฒใ€ฒ˜b๓Cญ‹˜๏ร- .ีzFึ’ "`ฒe‰อฌ๔jฏ0i$Š94”žฯตฎห~)ƒfIoฑxฦึธ๘จซฃฝMฬฉั˜6,จจ…๒(@ฑฟnR—`8{ฦทยฬสํ4zlt‰v”^ฏฐ9|d‡uoึแ…อึ %ํ^๒q฿ฒ“รฒ๗โ=๓c%รŒสi›ฮํ€กไฺT.ธร๎…i๊ฬ_ „Mž€Z๘)ี†Ÿ,pฐ#5i๏ _\+๚ใ•4ฉ‡ก๎คBuไไ'aPฑhจ๏gํBaT%’c๎Šพ:็…Iœ{M,0s<[ทCRุ$ถ›-ฮ †ญ…ตŽZ0ต!kูิ2Q=ฤฌ๏ไ=k&7๒โฒ=#F&SU๛๒๔X+\%‘T€`๘ฃต๖tิๅi‚ๅ ุJ"rpั:FคEYTC0fŒ๛/Jr๎๎ŒขU„} L#เ XHวuใCฦ3fพ”๔Bn]'5ฆา„DDุ “๛H.ฐD.’ %O -ผIˆhkeธฯฬ!๗x;ะซj๎ชrx!๊าGึำคTYOฌ›วญ0w-{˜3=S˜จ$e#Ž}าwูขš;๊–ผ0DoฃO‰ํ7๊†ธ““๛—|แูฃ ˜#ฑ@คšgG*๛๙({u4l8dนš ๔hพ1FๅบใiPีิ<“-ฏ@ผ ฿๐=\๓‡์Pzญ…ฬ_žไdh:•์I–ภ*Dฦ๑V&ฃ3aๆ ™t‚ใใ87ฉ็RำBชfR?ธ๑ฝ Nx9R๙w๒~ูuG'3,๑ึy๕ผˆ.๊- ผRXB:ฯZ†`ณ๗ฮมณŽVฺธฑ฿ำDR3 >]แปยั2;#™D'[j$แKƒฦˆ฿>๗ห ึะ4งm2„Lเ ฦ๋ฟœ’H‡ฟฮ_@ฆ-ๅฒ’ูฏI:ลˆฅ›๑ a็Ÿษ^ี]Oˆ๑„:&š๎ %&{xฺC้ไ9hCm:œRษPQ|มฎ‡N P้YุP๒Sฺmฯ‡ีf[ฃ`ฤฯฅ๐{^:.ๅะš+bฟh๏ƒฦ๔1™ฏ฿&ฬๅ~์}hๆ[mงy ด9B‰หSู—vY3+4๛eษนf}๕ูะ๓Škึ˜hฦs=ญฬWฟ™‰v#ต&’ฐ#ยYm“|$56~$SOบ%tอ่ƒ“|ฎ๗{ฎE่™ >ณ8@ั โ*_เเ„A”~1ใl๚ CRF–ส›žJ'๚Gณๅ.?ฉ8<ฉy%tEŽ4m|Šซ)้งหเ<พ๗e\ฐao‰sŒ0*S้ฟ+ห-&๐UูืฮYณิอ็ีธ{gMbนไ”wŽjซษ<žEถDU0•ฃzาYจgเ`—'z๊ึาบVIo@aƒ=๗K๋้eบาึ‹kt—ล๖ฯ<ฒ๓ไฃๅำvo{๒‰xC๔s฿๚๊Hแ–‚ รxvฅ1yๆืT์&‹๕‹/~ฤ™,PD๊น‹“cทษ˜ˆไ4งRh8yห9v\ฑ2๐xึ{nŸ4S5I!ีฮอภN!-ฅ_๚็ศ™5ั๊H”ฆฯภฒMj๚˜ดะ้๚“ผ๔žŒ(sช๔GG`Yโ‰&วม๕x)์ช0“nั‚KถMฯ@ฤ0ฌy”,฿"ข#2พh๗ฺ+ฒmgๆK$5[8฿Aศผ๋๏ุเุ]ZpรยPฦย ฉ์๎#4๎T“๒;XสiV๊†ะ๙๐๖=้ฦLลพu‹ นถBไJ•bmaV––ตดCๆ๑ &แ ึœ~Uฌ8๛Yพฏ|๔ญล๏™้.ฉิA+24ู๕ุ5Oจ‰ถksดช_.ฏ›yภš๛ลdc zึsuลํp‘8`*oษ ˜(sจุRPฆฬใX๘;d,m>๎ฐŽŒ=”่†Xkg,๔w‘ำk ‘ุ`ฦจต`รว ใEฒ‰ ํ~›‚๓erฒ…ŸœŠŽz–“/ผ{?บฅ ํ๒ชZpจm*KŸเมAm’E๗Zป‹ มฬ/ัR)xŸ?4I2ŠJy ธฺผ…dฏ’%าป>ˆ‘9Žšๅ–๓0r[7เ3Jqภล6s‰t[O‡,ึDใิ2ษ๛วˆะqฎ-Œhาฯ๒ฃ5ุโ~น)Uฺ/ี 9๏ข’"๘ผํ‹q+‡ิ๑ำสงOฝE;SPน๚žY4<ภQnโš•ฌWqVAvEแค<ณnrช!ลYนุณŽI‘ฅrเพะ- ๑ำnิธ๔4Mv๔๔OูeTํฯ"๐"<ธzžI”„ฟgบๆ๐4ย›ิฑIBŠ๕dาฃ@+‘}ณๆ๋๊Ÿส ่๔›v0ŽHส.€่๒o๘ฤ ถวa™; ถ๗1ุO๔๗ีauฮ๔ช†ฌ\ู9รู›ˆษฦCa?Nlๆ;(ษf5ฅwd‰ฐ#ฑ;rใ endstream endobj 62 0 obj << /Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.19)/Keywords() /CreationDate (D:20190714180734-07'00') /ModDate (D:20190714180734-07'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) kpathsea version 6.3.0) >> endobj 2 0 obj << /Type /ObjStm /N 55 /First 409 /Length 2226 /Filter /FlateDecode >> stream xฺํYnษ}็W๔ฃ”€์๛ X, KQฌฌญ]HZปถhi$ –"ฮศั}Nu๗ ‡ิล4b$/ žž๎ช๊Sงชkfš’ ฆ™–ฬ1ฉ$๓L:อSยฑศ”‰LJฆขย$ำฺ`–i!ฯŒ#˜ธŒฬB^)fก 4ณP0ฬiห”ežฦ<๓A0X€=-X0Š&Žดfsd\ุศ4€ˆˆ{ฌBˆ4Aฐฐ'มใช้Š…!oฎXDย†kฬศx,ใรชZ@‚ gณ๐2วฌ%่˜‡)ใ"3‚/`ใ>จง‚)จ*ทt€+& ฌ0๏"aารSpล=บ6ะขX: ศGๆ„0L9\Yฯœx@„หฮx‹Iๆ,”Baญ๐ใงŒ}qถ`€}ิิ ใ‡u{ฮ~ำ#~๖็]ล๘/ำ๋jฤ๗๓ถšท ณ$7โ'Uณธ_^T ‘V—๕๔ีโ}pˆง๊|๕%๔ศ+–W๋}๘ํwธฎ&ๆ…€น๙lvœคN’ฮ๙‰Œแ{‹z;‘n;Qใ'ฺV’rข‘ฏ[ˆZ@Ur;QฌฏขูJTนIาช“ˆBฉ?ฑq;Qง&ฮouˆ|b”ƒ‡ุR”ไรv–]"ขHำ;ฺ?ฅ ุหฺ/ิ‡YหrqqZต์#’๖เ๑ณ๊กeeลตd฿iช‹ถ^ฬ2‘ปคน๓I{‡IqFMEMCMป๛ผถzฌ}Dอœš jfิSsู›MฝOยบ^QS๗ขีpnึฯ}‰H^Xอ<^mŸšลส ฺ๖ฑ๖Hำนฅๆ๎rฆ‰—~๎a(ะ๖Ÿ‡N}ดสžง–›‰5Q๘้*ำhดฐGฃNฎUT’^/›็อขิ๏คฮŸE๔{P5ห๚ฎ],๓ ํ๑๔3G๛'ฏ>๕อ“ลํt.ล๘ีbv ู๔_KY๒U๚R|0Ž^ฃ%R‰7f|1ํ5๔ลไbฤgื๔๎uU_฿”[Zๆฦ2ยะQ;ี{๓๋YลฤˆŸถีํ;สำP”ภฐq3]าk๑฿ใ๛ŒO๙g~ม/yลซ๙ๅดนแ7ผๆ3~ห็|ม๓Š฿๑%oxห-๘=ยv3่ร ™0๛ว‡ฏ๏นP/qแ‰ |K๋~ภE0k\ะํ6\ˆ๘,G`"ณpU'็ษ็๛กฏ้Egk_{u๐๎๕ฏƒธŸTื๗ณ้๒wต ะฃz™Ž"ึ]}ุ.๔n่ญ–Co๙ ?EไงM[-๋ๆi{ร?ใƒฌjป\ 5p๑„เหž฿ywSอมฬ%7ๆ5Rฃ$l,.)K๊ส“›eU•lYหซพ…ฟณผ๛๐'๐๗v1_|•>+ูXใัk‰8KทbO น+ๆฤทำ๖šฟOไไX`gัqฦฌบjso™X๛็ขญššฬNฺF‚˜v๓˜†ฟอ/—ะผ๚๊ช‚):K๙จdู”Lย'WDy๊”cมLL‘ก ไpค ฆp"H(o%ภEผ'๑=Tmพ‡/| <142B3CF1BD782BAA55B0A3C568796076>] /Length 149 /Filter /FlateDecode >> stream xฺะตBQEั;wwwwi:€”f่€”Jh€*€๓’ฝฮ„w$้๋IžฬฎwQI“R๎๔ภ~ภ‚‚ Œ`aˆ@b0†)ฤ!3Hมา5d!+ศC–P„,  }จ@ชPƒ:4 i๒nVหtธj›žUWณฦUๆฐ…์แGณห้ฐK?› endstream endobj startxref 96702 %%EOF DCsunset-pandoc-include-5c44c8e/test/entryTest/test.md000066400000000000000000000004551520044676000230370ustar00rootroot00000000000000--- include-entry: entryTest --- # Test ## Included file list * included-1.md * included-r1.md * included-r2.md * included 2.tex ## Included file !include subincluded/included-1.md ### A simple latex table $include subincluded/included 2.tex ## Included image !include subincluded/img.md DCsunset-pandoc-include-5c44c8e/test/included/000077500000000000000000000000001520044676000213205ustar00rootroot00000000000000DCsunset-pandoc-include-5c44c8e/test/included/1.tex000066400000000000000000000002621520044676000222020ustar00rootroot00000000000000\newcounter{num} \setcounter{num}{0} \begin{tabularx}{\linewidth}{|X|X|X|} sdf & hello & \thenum \\\hline sdf & hello & \stepcounter{num}\thenum \\ \end{tabularx} \[ X = 1 \] DCsunset-pandoc-include-5c44c8e/test/included/header.yaml000066400000000000000000000000661520044676000234360ustar00rootroot00000000000000title: header header-includes: | \usepackage{times} DCsunset-pandoc-include-5c44c8e/test/included/included 2.tex000066400000000000000000000002401520044676000237470ustar00rootroot00000000000000% A simple table \begin{table}[h] \begin{tabular}{lll} No. & Score & Rank \\\hline 1 & 94 & 2 \\ 2 & 99 & 1 \\ 3 & 89 & 3 \end{tabular} \end{table} DCsunset-pandoc-include-5c44c8e/test/included/included-1.md000066400000000000000000000001521520044676000235650ustar00rootroot00000000000000### Code ```python print('Hello World') ``` |Start| !include ./included-r1.md |End| Lines after end. DCsunset-pandoc-include-5c44c8e/test/included/included-r1.md000066400000000000000000000001411520044676000237450ustar00rootroot00000000000000 **This is a level 1 recursive include** !include ./included-r2.md !include ./included-r2.tex DCsunset-pandoc-include-5c44c8e/test/included/included-r2.md000066400000000000000000000000521520044676000237470ustar00rootroot00000000000000 **This is a level 2 recursive include** DCsunset-pandoc-include-5c44c8e/test/included/included-r2.tex000066400000000000000000000002401520044676000241460ustar00rootroot00000000000000% A simple table \begin{table}[h] \begin{tabular}{lll} No. & Score & Rank \\\hline 4 & 94 & - \\ 5 & 99 & - \\ 6 & 89 & - \end{tabular} \end{table} DCsunset-pandoc-include-5c44c8e/test/run.py000077500000000000000000000001771520044676000207170ustar00rootroot00000000000000#!/usr/bin/env python3 import sys # use local package sys.path.insert(0, "..") from pandoc_include.main import main main() DCsunset-pandoc-include-5c44c8e/test/test.md000066400000000000000000000030171520044676000210330ustar00rootroot00000000000000--- include-entry: '.' listings: true title: Test date: \today{} test: adsf: a base: - b - c pandoc-options: - --filter=pandoc-include --- # Test ## Dollar signs in code ``` Console.WriteLine($"T"); Console.WriteLine($"T"); ``` ## Non-existent file (Should give a warning) !include not_exists.file !include ## Included file list * included-1.md * included-r1.md * included-r2.md * included 2.tex ## Include header !include-header included/header.yaml ## Included file !include included/included-1.md ### A simple latex table $include "included/included 2.tex" ## Include files !include included/*.md | Key | Value | | --- | ----- | | 1 | 2 | | 2 | 4 | ## Include code ```cpp !include 1.cpp ``` ```py !include `__test__.py` ``` ```py !include non-exist ``` ## Include with options ### Delimiters !include`snippetStart="|Start|", snippetEnd="|End|"` included/included-1.md ```cpp !include`snippetStart="// Start", snippetEnd="// End"` 1.cpp ``` ```cpp !include`snippetStart="// Start"` 1.cpp ``` ### Dedent ```cpp !include`snippetStart="// Start", snippetEnd="// End", dedent=-1` 1.cpp ``` ### Line Number !include`startLine=1, endLine=5` included/included-1.md ## Doxygen/XSLT Example A simple example showing how to include a doxygen XML output into the document ``` include`incrementSection=2, format="markdown", xslt="xslt/api.xslt"` xslt/doc/xml/main_8c.xml ``` !include`incrementSection=2, format="markdown", xslt="xslt/api.xslt"` xslt/doc/xml/main_8c.xml DCsunset-pandoc-include-5c44c8e/test/xslt/000077500000000000000000000000001520044676000205235ustar00rootroot00000000000000DCsunset-pandoc-include-5c44c8e/test/xslt/Doxyfile000066400000000000000000000021631520044676000222330ustar00rootroot00000000000000# Doxyfile for calculator program # Project name and version PROJECT_NAME = "Calculator Program" PROJECT_NUMBER = 1.0 # Output directory for the generated documentation OUTPUT_DIRECTORY = ./doc # Doxygen XML output GENERATE_XML = YES XML_OUTPUT = xml # Brief member descriptions in XML output XML_PROGRAMLISTING = YES # Strip implementation details from the documentation EXTRACT_ALL = NO EXTRACT_PRIVATE = NO EXTRACT_STATIC = NO # Use Doxygen's built-in C support LANGUAGE = C # Include the necessary file patterns FILE_PATTERNS = *.c # Enable the preprocessing steps required by Doxygen ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES EXPAND_ONLY_PREDEF = YES # Include the necessary directories INCLUDE_PATH = . # Exclude the build directory EXCLUDE_PATTERNS = */build/* # Example configuration for some common C projects EXAMPLE_PATH = ./examples # Disable dot tool HAVE_DOT = NO # Disable LaTeX and HTML output GENERATE_LATEX = NO GENERATE_HTML = NO DCsunset-pandoc-include-5c44c8e/test/xslt/api.xslt000066400000000000000000000026011520044676000222070ustar00rootroot00000000000000 DCsunset-pandoc-include-5c44c8e/test/xslt/doc/000077500000000000000000000000001520044676000212705ustar00rootroot00000000000000DCsunset-pandoc-include-5c44c8e/test/xslt/doc/xml/000077500000000000000000000000001520044676000220705ustar00rootroot00000000000000DCsunset-pandoc-include-5c44c8e/test/xslt/doc/xml/combine.xslt000066400000000000000000000012061520044676000244170ustar00rootroot00000000000000 DCsunset-pandoc-include-5c44c8e/test/xslt/doc/xml/compound.xsd000066400000000000000000001476661520044676000244600ustar00rootroot00000000000000 DCsunset-pandoc-include-5c44c8e/test/xslt/doc/xml/index.xml000066400000000000000000000020071520044676000237200ustar00rootroot00000000000000 main.c add subtract multiply divide squareRoot power main DCsunset-pandoc-include-5c44c8e/test/xslt/doc/xml/index.xsd000066400000000000000000000045711520044676000237260ustar00rootroot00000000000000 DCsunset-pandoc-include-5c44c8e/test/xslt/doc/xml/main_8c.xml000066400000000000000000000774131520044676000241440ustar00rootroot00000000000000 main.c stdio.h math.h double double add (double a, double b) add double a double b Adds two numbers. a The first number. b The second number. The sum of the two numbers. double double subtract (double a, double b) subtract double a double b Subtracts one number from another. a The first number (minuend). b The second number (subtrahend). The result of subtracting b from a. double double multiply (double a, double b) multiply double a double b Multiplies two numbers. a The first number. b The second number. The product of the two numbers. double double divide (double a, double b) divide double a double b Divides one number by another. a The numerator. b The denominator. The result of dividing a by b. double double squareRoot (double a) squareRoot double a Calculates the square root of a number. a The number to calculate the square root of. The square root of the given number. double double power (double base, double exponent) power double base double exponent Raises a base to the power of an exponent. base The base number. exponent The exponent. The result of raising the base to the power of the exponent. int int main () main #include<stdio.h> #include<math.h> doubleadd( doublea, doubleb); doublesubtract( doublea, doubleb); doublemultiply( doublea, doubleb); doubledivide( doublea, doubleb); doublesquareRoot( doublea); doublepower( doublebase, doubleexponent); intmain(){ char operator; doublenum1,num2,result; //Getoperatorandoperandsfromuser printf("Enteroperator(+, -,*,/,sqrt,pow):" ); scanf("%c" ,&operator );//Notethespace before%ctoconsumethenewlinecharacter if( operator!= 'sqrt'&& operator!= 'pow'){ printf("Enterfirstnumber: "); scanf("%lf" ,&num1); } //Forsqrt,onlyonenumberisneeded if( operator!= 'sqrt'){ printf("Entersecondnumber: "); scanf("%lf" ,&num2); } //Performcalculationbasedontheoperator switch( operator){ case '+': result=add(num1,num2); break; case '-': result=subtract(num1,num2); break; case '*': result=multiply(num1,num2); break; case '/': if(num2!=0){ result=divide(num1,num2); }else { printf("Error:Divisionby zeroisnotallowed.\n"); return1; //Exitwithanerrorcode } break; case 'sqrt': result=squareRoot(num1); break; case 'pow': result=power(num1,num2); break; default: printf("Error:Invalid operator.\n"); return1; //Exitwithanerrorcode } //Displaytheresult printf("Result:%lf\n" ,result); return0; //Exitsuccessfully } //Functiondefinitionsremainunchanged DCsunset-pandoc-include-5c44c8e/test/xslt/main.c000066400000000000000000000055131520044676000216170ustar00rootroot00000000000000#include #include /** * @file calculator.c * @brief Simple calculator program with basic arithmetic operations, square root, and power. */ /** * @brief Adds two numbers. * @param a The first number. * @param b The second number. * @return The sum of the two numbers. */ double add(double a, double b); /** * @brief Subtracts one number from another. * @param a The first number (minuend). * @param b The second number (subtrahend). * @return The result of subtracting b from a. */ double subtract(double a, double b); /** * @brief Multiplies two numbers. * @param a The first number. * @param b The second number. * @return The product of the two numbers. */ double multiply(double a, double b); /** * @brief Divides one number by another. * @param a The numerator. * @param b The denominator. * @return The result of dividing a by b. */ double divide(double a, double b); /** * @brief Calculates the square root of a number. * @param a The number to calculate the square root of. * @return The square root of the given number. */ double squareRoot(double a); /** * @brief Raises a base to the power of an exponent. * @param base The base number. * @param exponent The exponent. * @return The result of raising the base to the power of the exponent. */ double power(double base, double exponent); int main() { char operator; double num1, num2, result; // Get operator and operands from user printf("Enter operator (+, -, *, /, sqrt, pow): "); scanf(" %c", &operator); // Note the space before %c to consume the newline character if (operator != 'sqrt' && operator != 'pow') { printf("Enter first number: "); scanf("%lf", &num1); } // For sqrt, only one number is needed if (operator != 'sqrt') { printf("Enter second number: "); scanf("%lf", &num2); } // Perform calculation based on the operator switch (operator) { case '+': result = add(num1, num2); break; case '-': result = subtract(num1, num2); break; case '*': result = multiply(num1, num2); break; case '/': if (num2 != 0) { result = divide(num1, num2); } else { printf("Error: Division by zero is not allowed.\n"); return 1; // Exit with an error code } break; case 'sqrt': result = squareRoot(num1); break; case 'pow': result = power(num1, num2); break; default: printf("Error: Invalid operator.\n"); return 1; // Exit with an error code } // Display the result printf("Result: %lf\n", result); return 0; // Exit successfully } // Function definitions remain unchanged