syntect-no-panic-6.0.0/.cargo_vcs_info.json0000644000000001360000000000100142320ustar { "git": { "sha1": "0a57ae5f6f9b2fb8b0055b4cf1ea19dce4755e4f" }, "path_in_vcs": "" }syntect-no-panic-6.0.0/.git-blame-ignore-revs000064400000000000000000000000761046102023000171250ustar 00000000000000# initial cargo fmt cc41c3803b20b79147fa606f950658bc12e50dc2 syntect-no-panic-6.0.0/.gitattributes000064400000000000000000000032431046102023000157170ustar 00000000000000# Sublime Text # tabs indentation, no trailing *.stTheme eol=lf whitespace=-tab-in-indent,trailing-space,tabwidth=4 # spaces indentation, no trailing *.sublime-color-scheme eol=lf whitespace=tab-in-indent,trailing-space,tabwidth=4 *.hidden-color-scheme eol=lf whitespace=tab-in-indent,trailing-space,tabwidth=4 *.sublime-settings eol=lf whitespace=tab-in-indent,trailing-space,tabwidth=4 *.sublime-syntax eol=lf whitespace=tab-in-indent,trailing-space,tabwidth=2 *.sublime-theme eol=lf whitespace=tab-in-indent,trailing-space,tabwidth=4 # TextMate # tabs indentation, no trailing *.tmLanguage eol=lf whitespace=-tab-in-indent,trailing-space,tabwidth=4 *.hidden-tmLanguage eol=lf whitespace=-tab-in-indent,trailing-space,tabwidth=4 *.tmPreferences eol=lf whitespace=-tab-in-indent,trailing-space,tabwidth=4 *.tmTheme eol=lf whitespace=-tab-in-indent,trailing-space,tabwidth=4 *.hidden-tmTheme eol=lf whitespace=-tab-in-indent,trailing-space,tabwidth=4 # syntect testdata/* linguist-vendored # General # spaces indentation, no trailing *.md eol=lf whitespace=tab-in-indent,trailing-space,tabwidth=4 # binary *.png binary *.tex diff=tex *.pdf binary diff=astextplain syntect-no-panic-6.0.0/.github/workflows/CI.yml000064400000000000000000000070361046102023000174430ustar 00000000000000name: CI on: workflow_call: # From .github/workflows/Release.yml workflow_dispatch: push: branches: [ master ] pull_request: branches: [ master ] env: CARGO_TERM_COLOR: always jobs: min_version: name: Minimum supported rust version runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@master with: toolchain: stable minus 2 releases # MSRV policy = last three versions of stable components: clippy, rustfmt - name: Run cargo fmt --check run: cargo fmt -- --check - name: Run cargo clippy run: | # Must run before `cargo check` until we use Rust 1.52 # See https://github.com/rust-lang/rust-clippy/issues/4612 cargo clippy --all-targets --all-features -- \ --allow clippy::unknown_clippy_lints \ --allow clippy::unnecessary_cast \ --allow clippy::block_in_if_condition_stmt # Prevent regressions of https://github.com/trishume/syntect/issues/98 cargo clippy --all-features --lib -- --deny clippy::panic - name: Run cargo check run: | cargo check --all-features --all-targets # Check that if some other crate in the downstream dependency tree # enables serde's "derive" feature, syntect still builds. cargo check --all-features --features serde/derive documentation: name: Documentation checks runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: RUSTDOCFLAGS='--deny warnings' cargo doc --no-deps --document-private-items --all-features bat-tests: name: Run bat syntax regression tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: path: 'syntect' - uses: actions/checkout@v4 with: repository: 'sharkdp/bat' path: 'bat' ref: master submodules: true - name: bat/tests/syntax-tests/regression_test.sh run: | cd bat sed -i 's%\[dependencies.syntect\]%[dependencies.syntect]\npath = "../syntect"%' Cargo.toml cargo build --release # Build bat so we can update the assets PATH=target/release:$PATH ./assets/create.sh # Update assets with newly built bat cargo build --release # Build bat using the newly updated assets PATH=./target/release:$PATH tests/syntax-tests/regression_test.sh build-and-test: name: Build and test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: true - uses: dtolnay/rust-toolchain@stable - name: Build run: | cargo build - name: Run tests run: | cargo test --features metadata - name: Run tests with fancy run: | # Run these tests in release mode since they're slow as heck otherwise cargo test --features default-fancy --no-default-features --release - name: Ensure highlight works without 'plist-load' and 'yaml-load' features run: | cargo run --example synhtml --no-default-features --features html,default-syntaxes,default-themes,regex-onig -- examples/synhtml.rs - name: Run tests with 'default-syntaxes' but without 'default-themes' run: | cargo test --lib --example synstats --no-default-features --features default-syntaxes,yaml-load,regex-onig - name: Run tests without default features run: | cargo test --lib --no-default-features - name: make stuff run: | make assets make syntest make syntest-fancy - name: Docs run: | cargo doc syntect-no-panic-6.0.0/.github/workflows/Release.yml000064400000000000000000000047221046102023000205270ustar 00000000000000name: Release # To make a release: # # 1. Update Cargo.toml version and CHANGELOG.md on master # 2. Run workflow https://github.com/trishume/syntect/actions/workflows/Release.yml on master # 3. Done! on: workflow_dispatch: # This workflow can only be triggered manually. inputs: one_time_crates_io_token_secret: description: "A one-time crates.io token (delete it after first use)" required: true type: string env: CARGO_TERM_COLOR: always jobs: # Make sure regular CI passes before we make a release. ci: uses: ./.github/workflows/CI.yml with: one_time_crates_io_token_secret: masked # After regular CI passes we publish to crates.io and push a git tag. publish-and-tag: needs: ci runs-on: ubuntu-latest permissions: contents: write # So we can push a tag. outputs: VERSION: ${{ steps.version.outputs.VERSION }} TAG_NAME: ${{ steps.version.outputs.TAG_NAME }} steps: - run: | # See https://github.com/actions/runner/issues/643#issuecomment-708468716 # See https://github.com/actions/runner/issues/475#issuecomment-635775403 masked_secret=$(jq -r '.inputs.one_time_crates_io_token_secret' $GITHUB_EVENT_PATH) echo "::add-mask::$masked_secret" - uses: actions/checkout@v4 - run: cargo publish -p syntect env: CARGO_REGISTRY_TOKEN: ${{ inputs.one_time_crates_io_token_secret }} - name: version id: version run: | version=$(cargo read-manifest --manifest-path Cargo.toml | jq --raw-output .version) echo "VERSION=${version}" >> $GITHUB_OUTPUT echo "TAG_NAME=v${version}" >> $GITHUB_OUTPUT - name: push tag run: | git tag ${{ steps.version.outputs.TAG_NAME }} git push origin ${{ steps.version.outputs.TAG_NAME }} # Lastly, create a GitHub release. release: needs: publish-and-tag runs-on: ubuntu-latest permissions: contents: write # So we can create a release. steps: - uses: actions/checkout@v4 - run: cargo install parse-changelog@0.6.4 --locked - name: create release env: GH_TOKEN: ${{ github.token }} run: | notes="$(parse-changelog CHANGELOG.md ${{ needs.publish-and-tag.outputs.VERSION }})" title="${{ needs.publish-and-tag.outputs.TAG_NAME }}" gh release create --title "$title" --notes "$notes" ${{ needs.publish-and-tag.outputs.TAG_NAME }} syntect-no-panic-6.0.0/.gitignore000064400000000000000000000002371046102023000150140ustar 00000000000000# macOS .DS_Store Thumbs.db # Windows [Dd]esktop.ini # cargo target/ Cargo.lock # IDEA .idea/ *.iml # Sublime Text *.sublime-workspace # VS Code .vscode/ syntect-no-panic-6.0.0/.gitmodules000064400000000000000000000010601046102023000151740ustar 00000000000000[submodule "testdata/Packages"] branch = st3 # TODO: this line should be removed once st4 functionality has been implemented path = testdata/Packages url = https://github.com/sublimehq/Packages [submodule "testdata/InspiredGitHub.tmtheme"] path = testdata/InspiredGitHub.tmtheme url = https://github.com/sethlopezme/InspiredGitHub.tmtheme.git [submodule "testdata/Solarized"] path = testdata/Solarized url = https://github.com/braver/Solarized.git [submodule "testdata/spacegray"] path = testdata/spacegray url = https://github.com/kkga/spacegray.git syntect-no-panic-6.0.0/CHANGELOG.md000064400000000000000000000422111046102023000146330ustar 00000000000000# Changelog ## [Version 5.2.0](https://github.com/trishume/syntect/compare/v5.1.0...v5.2.0) (2024-02-07) ### Improvements - Eliminate syntect library's dependency on serde's "derive" feature. Increases build parallelism. - Add parsing of gutterSettings. ### Dependencies - Update `regex-syntax` to 0.8. ## [Version 5.1.0](https://github.com/trishume/syntect/compare/v5.0.0...v5.1.0) (2023-08-01) ### Improvements - Fix how `syntect::util::split_at()` handles multi-byte characters - Allow case insensitive search for .tmtheme paths - impl `PartialEq` for `Theme` ### Dependencies - Upgrade `fancy-regex` to 0.11 - Upgrade `regex-syntax` to 0.7 - Replace `lazy_static` with `once_cell` ### Other - Change MSRV policy to "last three stable versions" - Make `Debug` impl of `syntect::highlighting::Color` less verbose ## [Version 5.0.0](https://github.com/trishume/syntect/compare/v4.6.0...v5.0.0) (2022-05-03) Breaking changes - Lazy-load syntaxes to significantly improve startup time. This changes the binary format of syntax dump files. - Remove `ContextId::new()` from public API to support lazy-loading of syntaxes - Rename `HighlightLines::highlight()` to `HighlightLines::highlight_line()` to make it clear that the function takes one line at a time - Make `plist` dependency (used for loading themes) optional via new `plist-load` feature - Remove obsolete `dump-load-rs` and `dump-create-rs` features that has been identical to `dump-load` and `dump-create` for two years - Remove deprecated items `ThemeSettings::highlight_foreground`, `ThemeSettings::selection_background`, `ClassedHTMLGenerator::new`, `ClassedHTMLGenerator::parse_html_for_line`, `html::css_for_theme`, `html::tokens_to_classed_html` and `html::tokens_to_classed_spans` - Mark all error enums as `#[non_exhaustive]` - These functions have been changed to return a `Result` to allow propagation of errors: - `html::ClassedHTMLGenerator::parse_html_for_line_which_includes_newline` - `html::append_highlighted_html_for_styled_line` - `html::css_for_theme_with_class_style` - `html::highlighted_html_for_string` - `html::line_tokens_to_classed_spans` - `html::styled_line_to_highlighted_html` - `parsing::ParseState::parse_line` - `parsing::ScopeStack::apply` - `parsing::ScopeStack::apply_with_hook` - `parsing::syntax_definition::Context::match_at` - `parsing::syntax_definition::ContextReference::id` - `parsing::syntax_definition::ContextReference::resolve` Other changes - Fall back to `Plain Text` if a referenced syntax is missing - Add support for `hidden_file_extensions` key in syntaxes. - Implement `Error` and `Display` for all error enums by using `thiserror` - Replace `lazycell` with `once_cell` to fix crash on lazy initialization - Add `ScopeRangeIterator` - Add CI check for Minimum Supported Rust Version. This is currently Rust 1.53. - Make looking up a syntax by extension use case-insensitive comparison - Make `from_dump_file()` ~15% faster - Blend alpha value on converting colors to ANSI color sequences - Fix sample code in documentation to avoid double newlines - Fix lots of build warnings and lints - Add Criterion benchmarks for a whole syntect pipeline and for `from_dump_file()` ## [Version 4.7.1](https://github.com/trishume/syntect/compare/v4.7.0...v4.7.1) (2022-01-03) This version was yanked from crates.io due to a semver violation issue. ## [Version 4.7.0](https://github.com/trishume/syntect/compare/v4.6.0...v4.7.0) (2021-12-25) This version was yanked from crates.io due to a semver violation issue. ## [Version 4.6.0](https://github.com/trishume/syntect/compare/v4.5.0...v4.6.0) (2021-08-01) - Add `html::line_tokens_to_classed_spans` to also take a mutable ScopeStack, deprecate `tokens_to_classed_spans`, to avoid panics and incorrect highlighting. - Derive Hash for Color and Style - Add `find_unlinked_contexts` to `SyntaxSet` - Add `syntaxes` method to `SyntaxSetBuilder` - Bump `fancy-regex` to v0.7 and `yaml-rust` to v0.4.5 ## [Version 4.5.0](https://github.com/trishume/syntect/compare/v4.4.0...v4.5.0) (2020-12-09) - Added a new function for producing classed HTML which handles newlines correctly and deprecated old one. [#307](https://github.com/trishume/syntect/pull/307) ## [Version 4.4.0](https://github.com/trishume/syntect/compare/v4.3.0...v4.4.0) (2020-08-19) - Errors are now `Send + Sync + 'static` [#304](https://github.com/trishume/syntect/pull/304) ## [Version 4.3.0](https://github.com/trishume/syntect/compare/v4.2.0...v4.3.0) (2020-08-01) - Fixes unnecesary dependency of the `html` feature on the `assets` feature. [#300](https://github.com/trishume/syntect/pull/300) - Adds ability to add prefixes to `html` module CSS class names. [#296](https://github.com/trishume/syntect/pull/296) ## [Version 4.2.0](https://github.com/trishume/syntect/compare/v4.1.1...v4.2.0) (2020-04-20) - Updates to new versions of `onig` and `plist`. The new `onig` version doesn't require `bindgen` thus making compilation easier. [#293](https://github.com/trishume/syntect/pull/293) ## [Version 4.1.1](https://github.com/trishume/syntect/compare/v4.1.0...v4.1.1) (2020-04-20) - Properly handle backreferences in included contexts [#288](https://github.com/trishume/syntect/pull/288) ## [Version 4.1.0](https://github.com/trishume/syntect/compare/v4.0.0...v4.1.0) (2020-03-30) - Make sure errors implement `Send` [#285](https://github.com/trishume/syntect/pull/285) - Fix errors to not use the deprecated `description()` [#286](https://github.com/trishume/syntect/pull/286) Thanks @sharkdp for the bug fixes! Bumping second part of semver since `Send` is adding functionality (back). ## [Version 4.0.0](https://github.com/trishume/syntect/compare/v3.3.0...v4.0.0) (2020-03-29) ### Headline feature: pure-Rust `fancy-regex` engine option Users can now opt in to a pure-Rust regex engine using Cargo features, making compilation easier in general. People experiencing difficulty compiling for Windows and Wasm should try switching to `fancy-regex`. Note this currently approximately halves highlighting speed. See the Readme and [#270](https://github.com/trishume/syntect/pull/270) for details. Thanks to @robinst for implementing this! ### Other changes - Ability to generate CSS for a theme for use with classed HTML generation (won't always be correct) [#274](https://github.com/trishume/syntect/pull/274/files) - Don't generate empty spans in classed HTML [#276](https://github.com/trishume/syntect/pull/276) - Miscellaneous dependency bumps and cleanup ### Breaking changes and upgrading Upgrading should cause no errors for nearly all users. Users using more unusual APIs may have a small amount of tweaking to do. - If you use `default-features = false` you may need to update your features to choose a regex engine - A bunch of technically public APIs that I don't know if anyone uses changed due to the regex engine refactor, common uses shouldn't break ## [Version 3.3.0](https://github.com/trishume/syntect/compare/v3.2.1...v3.3.0) (2019-09-22) > Bug fixes and new utilities - Fixes multiple bugs - Add RangedHighlightIterator - Add `as_latex_escaped` util ## [Version 3.2.1](https://github.com/trishume/syntect/compare/v3.2.0...v3.2.1) (2019-08-10) - Bump onig dependency - inconsequential patches ## [Version 3.2.0](https://github.com/trishume/syntect/compare/v3.1.0...v3.2.0) (2019-03-09) - Actually make `tokens_to_classed_spans` public like intended ## [Version 3.1.0](https://github.com/trishume/syntect/compare/v3.0.2...v3.1.0) (2019-02-24) > Metadata and new classed HTML generation - Add support for loading metadata ([#223](https://github.com/trishume/syntect/pull/223) [#225](https://github.com/trishume/syntect/pull/225) [#230](https://github.com/trishume/syntect/pull/230)) - Improve support for generating classed HTML and fix a bug, old function is deprecated because it's impossible to use correctly ([#235](https://github.com/trishume/syntect/pull/235)) - Update `plist` to `v0.4` and `pretty_assertions` to `v0.6` ([#232](https://github.com/trishume/syntect/pull/232) [#236](https://github.com/trishume/syntect/pull/236)) ## [Version 3.0.2](https://github.com/trishume/syntect/compare/v3.0.1...v3.0.2) (2018-11-11) > Bug fixes - Fix application of multiple `with_prototype`s ([#220](https://github.com/trishume/syntect/pull/220), fixes [#160](https://github.com/trishume/syntect/issues/160), [#178](https://github.com/trishume/syntect/issues/178), ASP highlighting) - Fix prototype marking logic ([#221](https://github.com/trishume/syntect/pull/221), fixes [#219](https://github.com/trishume/syntect/issues/219)) ## [Version 3.0.1](https://github.com/trishume/syntect/compare/v3.0.0...v3.0.1) (2018-10-16) > Minor bug fixes - Fix a bug with syntaxes that used captures in lookarounds ([#176](https://github.com/trishume/syntect/issues/176) [#215](https://github.com/trishume/syntect/pull/215)) - Fix the precedence order of syntaxes to match Sublime ([#217](https://github.com/trishume/syntect/pull/217) [#216](https://github.com/trishume/syntect/pull/216)) ## [Version 3.0.0](https://github.com/trishume/syntect/compare/v2.1.0...v3.0.0) (2018-10-09) > Breaking changes and major new features This is a major release with multiple breaking API changes, although upgrading shouldn't be too difficult. It fixes bugs and comes with some nice new features. ### Breaking changes and upgrading - The `SyntaxSet` API has been revamped to use a builder and an arena of contexts. See [example usage](https://github.com/trishume/syntect/blob/51208d35a6d98c07468fbe044d5c6f37eb129205/examples/gendata.rs#L25-L28). - Many functions now need to be passed the `SyntaxSet` that goes with the rest of their arguments because of this new arena. - Filename added to `LoadingError::ParseSyntax` - Many functions in the `html` module now take the `newlines` version of syntaxes. - These methods have also been renamed, partially so that code that needs updating doesn't break without a compile error. - The HTML they output also treats newlines slightly differently and I think more correctly but uglier when you look at the HTML. #### Breaking rename upgrade guide - `SyntaxSet::add_syntax -> SyntaxSetBuilder::add` - `SyntaxSet::load_syntaxes -> SyntaxSetBuilder::add_from_folder` - `SyntaxSet::load_plain_text_syntax -> SyntaxSetBuilder::add_plain_text_syntax` - `html::highlighted_snippet_for_string -> html::highlighted_html_for_string`: also change to `newlines` `SyntaxSet` - `html::highlighted_snippet_for_file -> html::highlighted_html_for_file`: also change to `newlines` `SyntaxSet` - `html::styles_to_coloured_html -> html::styled_line_to_highlighted_html`: also change to `newlines` `SyntaxSet` - `html::start_coloured_html_snippet -> html::start_highlighted_html_snippet`: return type also changed ### Major changes and new features - Use arena for contexts ([#182](https://github.com/trishume/syntect/pull/182) [#186](https://github.com/trishume/syntect/pull/186) [#187](https://github.com/trishume/syntect/pull/187) [#190](https://github.com/trishume/syntect/pull/190) [#195](https://github.com/trishume/syntect/pull/195)): This makes the code cleaner, enables use of syntaxes from multiple threads, and prevents accidental misuse. - This involves a new `SyntaxSetBuilder` API for constructing new `SyntaxSet`s - See the revamped [parsyncat example](https://github.com/trishume/syntect/blob/51208d35a6d98c07468fbe044d5c6f37eb129205/examples/parsyncat.rs). - Encourage use of newlines ([#197](https://github.com/trishume/syntect/pull/197) [#207](https://github.com/trishume/syntect/pull/207) [#196](https://github.com/trishume/syntect/issues/196)): The `nonewlines` mode is often buggy so we made it easier to use the `newlines` mode. - Added a `LinesWithEndings` utility for iterating over the lines of a string with `\n` characters. - Reengineer the `html` module to use `newlines` syntaxes. - Add helpers for modifying highlighted lines ([#198](https://github.com/trishume/syntect/pull/198)): For use cases like highlighting a piece of text in a blog code snippet or debugger. This allows you to reach into the highlighted spans and add styles. - Check out `split_at` and `modify_range` in the `util` module. - New `ThemeSet::add_from_folder` function ([#200](https://github.com/trishume/syntect/pull/200)): For modifying existing theme sets. ### Bug Fixes - Improve nonewlines regex rewriting: [#212](https://github.com/trishume/syntect/pull/212) [#211](https://github.com/trishume/syntect/issues/211) - Reengineer theme application to match Sublime: [#209](https://github.com/trishume/syntect/pull/209) - Also mark contexts referenced by name as "no prototype" (same as ST): [#180](https://github.com/trishume/syntect/pull/180) - keep with_prototype when switching contexts with `set`: [#177](https://github.com/trishume/syntect/pull/177) [#166](https://github.com/trishume/syntect/pull/166) - Fix unused import warning: [#174](https://github.com/trishume/syntect/pull/174) - Ignore trailing dots in selectors: [#173](https://github.com/trishume/syntect/pull/173) - Fix `embed` to not include prototypes: [#172](https://github.com/trishume/syntect/pull/172) [#160](https://github.com/trishume/syntect/issues/160) ### Upgraded dependencies - plist: `0.2 -> 0.3` - regex: `0.2 -> 1.0` - onig: `3.2.1 -> 4.1` ## [Version 2.1.0](https://github.com/trishume/syntect/compare/v2.0.1...v2.1.0) (2018-05-31) > Regex checking and plain file names * Check regexes compile upon loading from YAML (There's technically a small breaking change here if you match on the previously unused regex error, but I don't think anyone does) * Can detect the correct syntax on full file names like `CMakeLists.txt` * Make `nonewlines` mode marginally less buggy (still prefer using `newlines` mode) * Better error types * Better examples and tests ## [Version 2.0.1](https://github.com/trishume/syntect/compare/v2.0.0...v2.0.1) (2018-04-28) > More robust parsing * Parsing now abandons a regex after reaching a recursion depth limit instead of taking forever * Loop detection better matches Sublime Text * Parsing is faster! * Dependency upgrades * Other minor tweaks Thanks to [@robinst](https://github.com/ronbinst) for the headline features of this release! ## [Version 2.0.0](https://github.com/trishume/syntect/compare/v1.8.2...v2.0.0) (2018-01-02) > Breaking Changes and New Stuff ### Breaking changes * The `static-onig` feature was removed, static linking is now the default * Font styles and color constants now use associated consts because of bitflags upgrade * `SyntaxDefinition::load_from_str` now has an extra parameter ### Other notable changes * Support for new `embed` syntax, see [#124](https://github.com/trishume/syntect/issues/124) * Updates to many dependencies * Updated dumps * More compact HTML output ## [Version 1.8.2](https://github.com/trishume/syntect/compare/v1.8.0...v1.8.2) (2017-11-11) > New Inspired GitHub and libonig ## [Version 1.8.0](https://github.com/trishume/syntect/compare/v1.7.3...v1.8.0) (2017-10-14) > Update bitflags & packages This release changes how the constants for `FontStyle` and `Color`, relying on the new associated consts feature in `Rust 1.20`. The old constants are still available but are deprecated and will be removed in `v2.0`. Packages were also updated to newer versions. ## [Version 1.7.3](https://github.com/trishume/syntect/compare/v1.7.2...v1.7.3) (2017-09-15) > Enable comparison of parse states Fixes comparisons of parse states so they are fast and don't recurse infinitely. Thanks [@raphlinus](https://github.com/raphlinus) ## [Version 1.7.2](https://github.com/trishume/syntect/compare/v1.7.0...v1.7.2) (2017-09-05) > Bug fixes and package updates * Fixes [#101](https://github.com/trishume/syntect/issues/101), which caused some syntaxes like PHP to behave incorrectly. * Updates Packages with new syntax versions * Adds new handy flags to the `syncat` example ## [Version 1.7.0](https://github.com/trishume/syntect/compare/v1.6.0...v1.7.0) (2017-06-30) > Pure Rust dump loading / creation features ## [Version 1.6.0](https://github.com/trishume/syntect/compare/v1.5.0...v1.6.0) (2017-06-21) > Helper methods and more theme attributes ## [Version 1.5.0](https://github.com/trishume/syntect/compare/v1.4.0...v1.5.0) (2017-05-31) > Highlighting stacks Small release, adds a convenience method for highlighting an entire stack, and derives some more things on `Scope`. ## [Version 1.4.0](https://github.com/trishume/syntect/compare/v1.3.0...v1.4.0) (2017-05-25) > Serde and optional parsing This release switches the dump format from `rustc-serialize` to `Serde`, anyone using custom dumps will have to update them. It also makes the parsing part of the library optional behind a feature flag, anyone not using the default feature flags probably will want to add the `parsing` flag. ## [Version 1.3.0](https://github.com/trishume/syntect/tree/v1.3.0) (2017-04-05) > Bug fixes, tests, updates and feature flags * Syntax tests: there is a new `syntest` example for running Sublime Text syntax tests * Bug fixes: there's a ton of bugs fixed in this release, mostly found via the syntax tests. These mostly affected certain syntaxes which pushed/set multiple contexts at once. * Updated packages: The Sublime packages have been updated to the latest version * Feature flags: there's now Cargo feature flags for disabling some parts of syntect if you don't want unnecessary binary and dependency bloat. syntect-no-panic-6.0.0/Cargo.lock0000644000000704410000000000100122130ustar # This file is automatically @generated by Cargo. # It is not intended for manual editing. version = 4 [[package]] name = "adler2" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "aho-corasick" version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] [[package]] name = "ansi_term" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" dependencies = [ "winapi", ] [[package]] name = "atty" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ "hermit-abi", "libc", "winapi", ] [[package]] name = "autocfg" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "base64" version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bincode" version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ "serde", ] [[package]] name = "bit-set" version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" [[package]] name = "bitflags" version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bumpalo" version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "camino" version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" dependencies = [ "serde", ] [[package]] name = "cargo-manifest" version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf6ff49a028a52bf61913e19f5ba3b9bd34145cc97eb1649865576c8f06b408d" dependencies = [ "serde", "thiserror", "toml", ] [[package]] name = "cargo-platform" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ "serde", ] [[package]] name = "cargo_metadata" version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", "semver", "serde", "serde_json", "thiserror", ] [[package]] name = "cast" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333" dependencies = [ "shlex", ] [[package]] name = "cfg-if" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ "bitflags", "textwrap", "unicode-width", ] [[package]] name = "crc32fast" version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "criterion" version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" dependencies = [ "atty", "cast", "clap", "criterion-plot", "csv", "itertools", "lazy_static", "num-traits", "oorandom", "plotters", "rayon", "regex", "serde", "serde_cbor", "serde_derive", "serde_json", "tinytemplate", "walkdir", ] [[package]] name = "criterion-plot" version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" dependencies = [ "cast", "itertools", ] [[package]] name = "crossbeam-deque" version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "csv" version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" dependencies = [ "csv-core", "itoa", "ryu", "serde", ] [[package]] name = "csv-core" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" dependencies = [ "memchr", ] [[package]] name = "ctor" version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" dependencies = [ "quote", "syn 1.0.109", ] [[package]] name = "deranged" version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", ] [[package]] name = "difference" version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" [[package]] name = "dissimilar" version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59f8e79d1fbf76bdfbde321e902714bf6c49df88a7dda6fc682fc2979226962d" [[package]] name = "either" version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "equivalent" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "expect-test" version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63af43ff4431e848fb47472a920f14fa71c24de13255a5692e93d4e90302acb0" dependencies = [ "dissimilar", "once_cell", ] [[package]] name = "fancy-regex" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2" dependencies = [ "bit-set", "regex", ] [[package]] name = "flate2" version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", ] [[package]] name = "fnv" version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "getopts" version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" dependencies = [ "unicode-width", ] [[package]] name = "half" version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" [[package]] name = "hashbag" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98f494b2060b2a8f5e63379e1e487258e014cee1b1725a735816c0107a2e9d93" [[package]] name = "hashbrown" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] name = "hermit-abi" version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ "libc", ] [[package]] name = "indexmap" version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", "hashbrown", ] [[package]] name = "itertools" version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ "either", ] [[package]] name = "itoa" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "js-sys" version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ "once_cell", "wasm-bindgen", ] [[package]] name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "linked-hash-map" version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "log" version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "memchr" version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "miniz_oxide" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" dependencies = [ "adler2", ] [[package]] name = "num-conv" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-traits" version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] [[package]] name = "once_cell" version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "onig" version = "6.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c4b31c8722ad9171c6d77d3557db078cab2bd50afcc9d09c8b315c59df8ca4f" dependencies = [ "bitflags", "libc", "once_cell", "onig_sys", ] [[package]] name = "onig_sys" version = "69.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b829e3d7e9cc74c7e315ee8edb185bf4190da5acde74afd7fc59c35b1f086e7" dependencies = [ "cc", "pkg-config", ] [[package]] name = "oorandom" version = "11.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "output_vt100" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66" dependencies = [ "winapi", ] [[package]] name = "pkg-config" version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plist" version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" dependencies = [ "base64", "indexmap", "quick-xml", "serde", "time", ] [[package]] name = "plotters" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" dependencies = [ "num-traits", "plotters-backend", "plotters-svg", "wasm-bindgen", "web-sys", ] [[package]] name = "plotters-backend" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" [[package]] name = "plotters-svg" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" dependencies = [ "plotters-backend", ] [[package]] name = "powerfmt" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "pretty_assertions" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427" dependencies = [ "ansi_term", "ctor", "difference", "output_vt100", ] [[package]] name = "proc-macro2" version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] [[package]] name = "public-api" version = "0.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b759eeee807ac96096fce568abeb9ef8d23db7be771a65252b1e5093fe7938c4" dependencies = [ "hashbag", "rustdoc-types", "serde", "serde_json", "thiserror", ] [[package]] name = "quick-xml" version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" dependencies = [ "memchr", ] [[package]] name = "quote" version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] [[package]] name = "rayon" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", ] [[package]] name = "rayon-core" version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", ] [[package]] name = "regex" version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", "regex-automata", "regex-syntax", ] [[package]] name = "regex-automata" version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", "regex-syntax", ] [[package]] name = "regex-syntax" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "rustdoc-json" version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a21e727474edad247ba206da91e5d3f76c0ff4a4ddac1fb7bba508df49101388" dependencies = [ "cargo-manifest", "cargo_metadata", "serde", "thiserror", "toml", ] [[package]] name = "rustdoc-types" version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc646f09069d689083b975698bdac4edb96c2f0e7d270b701760814b886bb224" dependencies = [ "serde", ] [[package]] name = "rustup-toolchain" version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24f509a60a1eccc275d92e13e8146f8eaac8ce3547081512d99787ee44ba8edf" dependencies = [ "thiserror", ] [[package]] name = "ryu" version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" dependencies = [ "winapi-util", ] [[package]] name = "semver" version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" dependencies = [ "serde", ] [[package]] name = "serde" version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] [[package]] name = "serde_cbor" version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" dependencies = [ "half", "serde", ] [[package]] name = "serde_derive" version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", "syn 2.0.93", ] [[package]] name = "serde_json" version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" dependencies = [ "itoa", "memchr", "ryu", "serde", ] [[package]] name = "serde_spanned" version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] [[package]] name = "shlex" version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "syn" version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "syn" version = "2.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c786062daee0d6db1132800e623df74274a0a87322d8e183338e01b3d98d058" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] [[package]] name = "syntect-no-panic" version = "6.0.0" dependencies = [ "bincode", "bitflags", "criterion", "expect-test", "fancy-regex", "flate2", "fnv", "getopts", "once_cell", "onig", "plist", "pretty_assertions", "public-api", "rayon", "regex", "regex-syntax", "rustdoc-json", "rustup-toolchain", "serde", "serde_derive", "serde_json", "thiserror", "walkdir", "yaml-rust", ] [[package]] name = "textwrap" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" dependencies = [ "unicode-width", ] [[package]] name = "thiserror" version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", "syn 2.0.93", ] [[package]] name = "time" version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", "num-conv", "powerfmt", "serde", "time-core", "time-macros", ] [[package]] name = "time-core" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" dependencies = [ "num-conv", "time-core", ] [[package]] name = "tinytemplate" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" dependencies = [ "serde", "serde_json", ] [[package]] name = "toml" version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", "toml_edit", ] [[package]] name = "toml_datetime" version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] [[package]] name = "toml_edit" version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap", "serde", "serde_spanned", "toml_datetime", "winnow", ] [[package]] name = "unicode-ident" version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-width" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "walkdir" version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", ] [[package]] name = "wasm-bindgen" version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", "syn 2.0.93", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", "syn 2.0.93", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "web-sys" version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" dependencies = [ "js-sys", "wasm-bindgen", ] [[package]] name = "winapi" version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [ "winapi-i686-pc-windows-gnu", "winapi-x86_64-pc-windows-gnu", ] [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ "windows-sys", ] [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-sys" version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ "windows-targets", ] [[package]] name = "windows-targets" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", "windows_i686_gnu", "windows_i686_gnullvm", "windows_i686_msvc", "windows_x86_64_gnu", "windows_x86_64_gnullvm", "windows_x86_64_msvc", ] [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] [[package]] name = "yaml-rust" version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" dependencies = [ "linked-hash-map", ] syntect-no-panic-6.0.0/Cargo.toml0000644000000102250000000000100122300ustar # THIS FILE IS AUTOMATICALLY GENERATED BY CARGO # # When uploading crates to the registry Cargo will automatically # "normalize" Cargo.toml files for maximal compatibility # with all versions of Cargo and also rewrite `path` dependencies # to registry (e.g., crates.io) dependencies. # # If you are reading this file be aware that the original Cargo.toml # will likely look very different (and much more reasonable). # See Cargo.toml.orig for the original contents. [package] edition = "2021" name = "syntect-no-panic" version = "6.0.0" authors = ["Tristan Hume "] build = false exclude = [ "testdata/*", "/scripts/*", "/Makefile", "/codecov.yml", ] autolib = false autobins = false autoexamples = false autotests = false autobenches = false description = "temporary fork of Syntect" documentation = "https://docs.rs/syntect-no-panic" readme = "Readme.md" keywords = [ "syntax", "highlighting", "highlighter", "colouring", "parsing", ] categories = [ "parser-implementations", "parsing", "text-processing", ] license = "MIT" repository = "https://github.com/Canop/syntect" [lib] name = "syntect_no_panic" path = "src/lib.rs" bench = false [[example]] name = "gendata" path = "examples/gendata.rs" [[example]] name = "latex-demo" path = "examples/latex-demo.rs" [[example]] name = "parsyncat" path = "examples/parsyncat.rs" [[example]] name = "syncat" path = "examples/syncat.rs" [[example]] name = "synhtml" path = "examples/synhtml.rs" [[example]] name = "synhtml-css-classes" path = "examples/synhtml-css-classes.rs" [[example]] name = "synstats" path = "examples/synstats.rs" [[example]] name = "syntest" path = "examples/syntest.rs" [[test]] name = "error_handling" path = "tests/error_handling.rs" [[test]] name = "public_api" path = "tests/public_api.rs" [[bench]] name = "highlighting" path = "benches/highlighting.rs" harness = false [[bench]] name = "load_and_highlight" path = "benches/load_and_highlight.rs" harness = false [[bench]] name = "loading" path = "benches/loading.rs" harness = false [[bench]] name = "parsing" path = "benches/parsing.rs" harness = false [dependencies.bincode] version = "1.0" optional = true [dependencies.bitflags] version = "1.0.4" [dependencies.fancy-regex] version = "0.11" optional = true [dependencies.flate2] version = "1.0" optional = true [dependencies.fnv] version = "1.0" optional = true [dependencies.once_cell] version = "1.8" [dependencies.onig] version = "6.0" optional = true default-features = false [dependencies.plist] version = "1.3" optional = true [dependencies.regex-syntax] version = "0.8" optional = true [dependencies.serde] version = "1.0" [dependencies.serde_derive] version = "1.0" [dependencies.serde_json] version = "1.0" [dependencies.thiserror] version = "1.0" [dependencies.walkdir] version = "2.0" [dependencies.yaml-rust] version = "0.4.5" optional = true [dev-dependencies.criterion] version = "0.3" features = ["html_reports"] [dev-dependencies.expect-test] version = "1.4.1" [dev-dependencies.getopts] version = "0.2" [dev-dependencies.pretty_assertions] version = "0.6" [dev-dependencies.public-api] version = "0.33.1" [dev-dependencies.rayon] version = "1.0.0" [dev-dependencies.regex] version = "1.0" [dev-dependencies.rustdoc-json] version = "0.8.8" [dev-dependencies.rustup-toolchain] version = "0.1.5" [features] default = ["default-onig"] default-fancy = [ "parsing", "default-syntaxes", "default-themes", "html", "plist-load", "yaml-load", "dump-load", "dump-create", "regex-fancy", ] default-onig = [ "parsing", "default-syntaxes", "default-themes", "html", "plist-load", "yaml-load", "dump-load", "dump-create", "regex-onig", ] default-syntaxes = [ "parsing", "dump-load", ] default-themes = ["dump-load"] dump-create = [ "flate2", "bincode", ] dump-load = [ "flate2", "bincode", ] html = ["parsing"] metadata = [ "parsing", "plist-load", ] parsing = [ "regex-syntax", "fnv", "dump-create", "dump-load", ] plist-load = ["plist"] regex-fancy = ["fancy-regex"] regex-onig = ["onig"] yaml-load = [ "yaml-rust", "parsing", ] syntect-no-panic-6.0.0/Cargo.toml.orig0000644000000054470000000000100132010ustar [package] name = "syntect-no-panic" description = "temporary fork of Syntect" documentation = "https://docs.rs/syntect-no-panic" repository = "https://github.com/Canop/syntect" keywords = ["syntax", "highlighting", "highlighter", "colouring", "parsing"] categories = ["parser-implementations", "parsing", "text-processing"] readme = "Readme.md" license = "MIT" version = "6.0.0" # based on https://github.com/trishume/syntect version 5.2.0 authors = ["Tristan Hume "] # Tristan isn't responsible of the things I added in the fork edition = "2021" exclude = [ "testdata/*", "/scripts/*", "/Makefile", "/codecov.yml" ] [dependencies] yaml-rust = { version = "0.4.5", optional = true } onig = { version = "6.0", optional = true, default-features = false } fancy-regex = { version = "0.11", optional = true } walkdir = "2.0" regex-syntax = { version = "0.8", optional = true } bitflags = "1.0.4" plist = { version = "1.3", optional = true } bincode = { version = "1.0", optional = true } flate2 = { version = "1.0", optional = true } fnv = { version = "1.0", optional = true } serde = "1.0" serde_derive = "1.0" serde_json = "1.0" once_cell = "1.8" thiserror = "1.0" [dev-dependencies] criterion = { version = "0.3", features = [ "html_reports" ] } rayon = "1.0.0" regex = "1.0" getopts = "0.2" pretty_assertions = "0.6" rustup-toolchain = "0.1.5" rustdoc-json = "0.8.8" public-api = "0.33.1" expect-test = "1.4.1" [features] # Dump loading using flate2 dump-load = ["flate2", "bincode"] # Dump creation using flate2 dump-create = ["flate2", "bincode"] regex-fancy = ["fancy-regex"] regex-onig = ["onig"] parsing = ["regex-syntax", "fnv", "dump-create", "dump-load"] # Support for .tmPreferenes metadata files (indentation, comment syntax, etc) metadata = ["parsing", "plist-load"] # Enables inclusion of the default syntax packages. default-syntaxes = ["parsing", "dump-load"] # Enables inclusion of the default theme packages. default-themes = ["dump-load"] html = ["parsing"] # Support for parsing .tmTheme files and .tmPreferences files plist-load = ["plist"] # Support for parsing .sublime-syntax files yaml-load = ["yaml-rust", "parsing"] default-onig = ["parsing", "default-syntaxes", "default-themes", "html", "plist-load", "yaml-load", "dump-load", "dump-create", "regex-onig"] # In order to switch to the fancy-regex engine, disable default features then add the default-fancy feature default-fancy = ["parsing", "default-syntaxes", "default-themes", "html", "plist-load", "yaml-load", "dump-load", "dump-create", "regex-fancy"] default = ["default-onig"] # [profile.release] # debug = true [lib] bench = false [[bench]] name = "highlighting" harness = false [[bench]] name = "load_and_highlight" harness = false [[bench]] name = "loading" harness = false [[bench]] name = "parsing" harness = false syntect-no-panic-6.0.0/Cargo.toml.orig000064400000000000000000000054471046102023000157230ustar 00000000000000[package] name = "syntect-no-panic" description = "temporary fork of Syntect" documentation = "https://docs.rs/syntect-no-panic" repository = "https://github.com/Canop/syntect" keywords = ["syntax", "highlighting", "highlighter", "colouring", "parsing"] categories = ["parser-implementations", "parsing", "text-processing"] readme = "Readme.md" license = "MIT" version = "6.0.0" # based on https://github.com/trishume/syntect version 5.2.0 authors = ["Tristan Hume "] # Tristan isn't responsible of the things I added in the fork edition = "2021" exclude = [ "testdata/*", "/scripts/*", "/Makefile", "/codecov.yml" ] [dependencies] yaml-rust = { version = "0.4.5", optional = true } onig = { version = "6.0", optional = true, default-features = false } fancy-regex = { version = "0.11", optional = true } walkdir = "2.0" regex-syntax = { version = "0.8", optional = true } bitflags = "1.0.4" plist = { version = "1.3", optional = true } bincode = { version = "1.0", optional = true } flate2 = { version = "1.0", optional = true } fnv = { version = "1.0", optional = true } serde = "1.0" serde_derive = "1.0" serde_json = "1.0" once_cell = "1.8" thiserror = "1.0" [dev-dependencies] criterion = { version = "0.3", features = [ "html_reports" ] } rayon = "1.0.0" regex = "1.0" getopts = "0.2" pretty_assertions = "0.6" rustup-toolchain = "0.1.5" rustdoc-json = "0.8.8" public-api = "0.33.1" expect-test = "1.4.1" [features] # Dump loading using flate2 dump-load = ["flate2", "bincode"] # Dump creation using flate2 dump-create = ["flate2", "bincode"] regex-fancy = ["fancy-regex"] regex-onig = ["onig"] parsing = ["regex-syntax", "fnv", "dump-create", "dump-load"] # Support for .tmPreferenes metadata files (indentation, comment syntax, etc) metadata = ["parsing", "plist-load"] # Enables inclusion of the default syntax packages. default-syntaxes = ["parsing", "dump-load"] # Enables inclusion of the default theme packages. default-themes = ["dump-load"] html = ["parsing"] # Support for parsing .tmTheme files and .tmPreferences files plist-load = ["plist"] # Support for parsing .sublime-syntax files yaml-load = ["yaml-rust", "parsing"] default-onig = ["parsing", "default-syntaxes", "default-themes", "html", "plist-load", "yaml-load", "dump-load", "dump-create", "regex-onig"] # In order to switch to the fancy-regex engine, disable default features then add the default-fancy feature default-fancy = ["parsing", "default-syntaxes", "default-themes", "html", "plist-load", "yaml-load", "dump-load", "dump-create", "regex-fancy"] default = ["default-onig"] # [profile.release] # debug = true [lib] bench = false [[bench]] name = "highlighting" harness = false [[bench]] name = "load_and_highlight" harness = false [[bench]] name = "loading" harness = false [[bench]] name = "parsing" harness = false syntect-no-panic-6.0.0/DESIGN.md000064400000000000000000000123511046102023000143170ustar 00000000000000# Optimization/Design notes This is my scratch pad for optimization ideas. Some of this I will implement, some I have implemented, some are just speculative. # Scopes ## Representation ideas: - Normal arrays of strings - array of 32-bit or 64-bit atoms (maybe using Servo's atom library) - Atoms packed into one or two u64s - fast equality checking - potentially fast prefix checking - needs unsafe code ## Potential packings: - variable width atoms, either 7 bits and a tag bit for top 128 or 13 bits and 3 tagging bits for rest - can fit all but 33 of the scopes present - tagged pointer (taking advantage of alignment), either a pointer to a slow path, or the first 4 bits set then a packed representation, one of others mentioned - 6 10-bit atoms referencing unique things by position (see by-position stats below) - 5 11-bit atoms and one 8-bit one for the first atom (2^11 = 2048, 2^8 = 256), one remaining bit for tag marker ## Stats: - 7000 scopes referenced in sublime, 3537 unique ones, all stats after this are based on non-unique data - all but 33 scopes in default packages could fit in 64 with combination 8bit or 16bit atom encoding - there are only 1219 unique atoms in the default package set - the top 128 atoms make up ~90% of all unique atoms referenced in syntax files - there are 26 unique first atoms, 145 unique last atoms - every position (1st atom, 2nd atom, ...) has under 878 possibilities, only 2nd,3rd and 4th have >256 - 99.8% of scopes have 6 or fewer atoms, 97% have 5 or fewer, 70% have 4 or fewer - for unique scopes: {2=>81, 4=>1752, 3=>621, 5=>935, 7=>8, 6=>140} ----> 95% of uniques <= 6 - for non-unique scopes: {2=>125, 4=>3383, 3=>1505, 5=>1891, 7=>9, 6=>202} # Checking prefix operation: `fn extent_matched(potential_prefix: Scope, s: Scope) -> u8` idea: any differences are beyond the length of the prefix. figure this out by xor and then ctz/clz then a compare to the length (however that works). ```bash XXXXYYYY00000000 # prefix XXXXYYYYZZZZ0000 # testee 00000000ZZZZ0000 # = xored XXXXYYYYQQQQ0000 # non-prefix XXXXYYYYZZZZ0000 # testee 00000000GGGG0000 # = xored XXXXQQQQ00000000 # non-prefix XXXXYYYYZZZZ0000 # testee 0000BBBBZZZZ0000 # = xored ``` # Parsing * Problem: need to reduce number of regex search calls * Solution: cache better ## Stats ```bash # On stats branch $cargo run --release --example syncat testdata/jquery.js | grep cmiss | wc -l Running `target/release/examples/syncat testdata/jquery.js` 61266 $cargo run --release --example syncat testdata/jquery.js | grep ptoken | wc -l Compiling syntect v0.1.0 (file:///Users/tristan/Box/Dev/Projects/syntect) Running `target/release/examples/syncat testdata/jquery.js` 98714 $wc -l testdata/jquery.js 9210 testdata/jquery.js $cargo run --release --example syncat testdata/jquery.js | grep cclear | wc -l Compiling syntect v0.1.0 (file:///Users/tristan/Box/Dev/Projects/syntect) Running `target/release/examples/syncat testdata/jquery.js` 71302 $cargo run --release --example syncat testdata/jquery.js | grep freshcachetoken | wc -l Compiling syntect v0.1.0 (file:///Users/tristan/Box/Dev/Projects/syntect) Running `target/release/examples/syncat testdata/jquery.js` 80512 # On stats-2 branch $cargo run --example syncat testdata/jquery.js | grep cachehit | wc -l Running `target/debug/examples/syncat testdata/jquery.js` 527774 $cargo run --example syncat testdata/jquery.js | grep regsearch | wc -l Running `target/debug/examples/syncat testdata/jquery.js` 2862948 $cargo run --example syncat testdata/jquery.js | grep regmatch | wc -l Compiling syntect v0.6.0 (file:///Users/tristan/Box/Dev/Projects/syntect) Running `target/debug/examples/syncat testdata/jquery.js` 296127 $cargo run --example syncat testdata/jquery.js | grep leastmatch | wc -l Compiling syntect v0.6.0 (file:///Users/tristan/Box/Dev/Projects/syntect) Running `target/debug/examples/syncat testdata/jquery.js` 137842 # With search caching $cargo run --example syncat testdata/jquery.js | grep searchcached | wc -l Compiling syntect v0.6.0 (file:///Users/tristan/Box/Dev/Projects/syntect) Running `target/debug/examples/syncat testdata/jquery.js` 2440527 $cargo run --example syncat testdata/jquery.js | grep regsearch | wc -l Running `target/debug/examples/syncat testdata/jquery.js` 950195 ``` Average unique regexes per line is 87.58, average non-unique is regsearch/lines = 317 Ideally we should have only a couple fresh cache searches per line, not `~10` like the stats show (freshcachetoken/linecount). In a fantabulous world these stats mean a possible 10x speed improvement, but since caching does have a cost and we can't always cache it likely will be nice but not that high. ## Issues - Stack transitions always bust cache, even when for example JS just pushes another group - Doesn't cache actual matches, only if it matched or not ## Attacks - cache based on actual context, only search if it is a prototype we haven't searched before - hash maps based on casting RC ref to pointer and hashing? (there is a Hash impl for pointers) - for new searches, store matched regexes for context in BTreeMap like textmate - for subsequent tokens in same context, just pop off btreemap and re-search if before curpos - cache per Regex syntect-no-panic-6.0.0/LICENSE.txt000064400000000000000000000021341046102023000146450ustar 00000000000000MIT License Copyright (c) 2017 Tristan Hume, Keith Hall, Google Inc and other contributors 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. syntect-no-panic-6.0.0/Readme.md000064400000000000000000000020251046102023000145400ustar 00000000000000# syntect-no-panic This is a fork of [Syntect](https://crates.io/crates/syntect). This fork is very similar to the original version 5.2 of Syntect, but modified to avoid panicking. With this fork, the behavior on a syntax having an invalid rule isn't to panic anymore, and is tuned with options: ```rust let options = HighlightOptions { ignore_errors: true, ..Default::default() }; HighlightLines::new(syntax, theme, options) ``` With `ignore_errors: false`, a faulty regex in a syntax, detected when highlighting some lines, will result in an error. With `ignore_errors: true`, the rule containing the faulty regex won't be applied but rest of the highlighting process will proceed. Please try to use the original Syntect instead of this temporary fork. There's no project to add features: as soon as I can use the normal syntect, this repository will be considered obsolete to avoid fragmenting the ecosystem. If you really feel like you need to use this, contact @dystroy on [the Miaou chat](https://miaou.dystroy.org/3768). syntect-no-panic-6.0.0/assets/default.themedump000064400000000000000000000116531046102023000176700ustar 00000000000000xÚí]m¬\EÞso?(ý€–~Pú‰ –Ân¡šF%D?† HôìîÜÝÓž=g{>z{!ᇨ1"64þjP11ü*ý¡ò•„Æ Ä&FýÓ@E%ÖHŒYçÌœ³;3;óΜݽçn/§IÛ½wÏûÎÌû5ï<óΜÕúgCúÿç¼°ë¨ù'úl\·V¥¿¦?V¬ƒö¬þC?]¸p¡G¾·O¥gYÙ§Êà#ùT±þóöo{ õéÓ§{äwò3~àܹs鯓O•(mتð²ŸW§ÿ7üNyQÿëOÀÓ½FÛ‘ã{µ&šs<‡|LIë¨åx•1š¹Ú¨ä5…¡©sy_ ^Ù^Tóâ œÆà¹oÈ7Šä®íµb»…úYý&‘¾?ÚŠ‚bƒHáGmõÓÛÒÿÙc×]DŸ®eĆ£¼DàÒÿ>ñ½A ó~ hIJt*©;Ѽ"…±ªéW÷ÍÈXMhÈÖñdµh¡kL›™vc'Z¨yvÕˆ¹ x'OO•äxø_'BÍjV›%]™Kœ»GÿÙ…ž††³I´š.6Êb¬R£ùË$ˆìA°"VI½C& ;®]#TM¸ñ#Ñzww»~ ¢vD$W¸ÍŒÎ¢RrÖ¢Äg׋MåPùV– Lᬳ¯q¼c¶ë4+ͦÕ×E-Û­h,){¼‰ºjØØ¨ûOžÙ¿‹ÎÂj{|ŸÌ¦¥¼fÕñªÉ/B~°–¥RÍ~Eد¹Ž‡-,îÔ±¥œEN7™pêØQ£­èi’0èM{Ÿ]k:ssµ6²›Œ#&ÙMH†2† ÷§¿WÌ¥sß!}%4ý_¸±‚<¾g­ÌÛ &Gˆ|Is÷þ'\oöÞ”4'Ú䠹ψQEMžÍ¨;8wq‡\ÄØg…Œµ¢ªœx®uC7}>SÑsÞoÎÛ·J¢iý¬qS—²AOF12ï¦.ÈÏa(‘çSj†›Åi'Kì]&QþÛáÛ¦ky¦á„íHÂ~R†$a=¶%寅9ÔºA²V‰ª }I8ŽiŽÊ%¼Þ.õ׳µ¨í„µÃ¡¡m­á{t84Z–ФmH³*¦ëYŸÎ¸™´¤å 1‘¶ÚƒfiµMÂ8YÔ<4ÏŠ^×ìVª ›`䆇uË¥®´ÖO˜»rÒ¿~5¨«ø.Ò4[Ó¬`„ý^ø¼›5.ŒfÅ8IJL4` Xt¾—¹i wý$EjúqÈ–Q‡Íq[)^@¼×jŸ">§*Òè&ªbË{HY÷{)xL¡Eo^æâ/ÈŠ—{`˜B˽bм k]ŽN?…ºi™ˆ¹ «\.=…–¸ñ"mAÖw1;ëZÜå™8 ²²‹Í§Ð².»DX5] N6…´aJÅVÕL«M¡¥¬Ÿ"QdÓäShë–X<YÁRþj~툤 m¯›Ú¡ªáK CAZ];UÃ)T“kqèiïÒ%B¡»dÂÃ-HKk–¤Û…jfõ†X6.)¬«…j`ÕˆÃ*Hꫵ{…JzeŽ¡$ÝUïR¡]¡é~AR\9‘n*¹YI— ’ÖŠ‘›.TBYQdAR™ÍÕÜ’H¢2–‡v¢¶ï)ŽvV$C4â#œÕÌÍ:¼™›YŽZe˰b¿Ûîn•p%¥±üQ?_ñ¬ßpåo×¥ùòêlÅqÓAW:~3vVš‚æà°r±ºšg%=kÄ0SB¶ÿ¡ãQ­uÜZrø¦éÏ{™åúüåÅòzö8GEÉñYö3|¼Ç€-=B”ªc®¨Œ$‰Ëyž=_«»~ão#tvã0cÇKE œgrs^ÃJs¾–·É± eÉ··•,9@¾›2QQí©ÈÉvéf4ÍBÀæö(š³£jäSŽ×pã¦òî‡Ý:r®qëÕ;¶÷8ˆCÏnOÁ\;8qÂáSpZRœw9- jRœ»µ±Ú¿@=b``âí-ÔÀ´7u¤ù?Nd9‡9QýýS§zƒÅ§H¾E¡é)TK0j&ó­h¼Ny?ŒÊì5‹Ø×sÝ*‡ÂÛ?sµ¥«Í°Qõ|¯šðÂ+fœð$¿¦W$WdTÌæ=ÎÜBäâ&±‡¡§£[¡Q©0°T'’„ ã;Q\4¸ÍEÌj V‘Þ‚b|Ç N©®Tð‹“nºì•n @¥0¯pUKž4w·?GìœJ[£ß##rªpJ”jÆmÜ«s2>7æë•l°Za1YÖ3ÀÃêvè4®`ý'aMÛ”¥0NEN¶·0 ŸM"&n•1‡Fî8í9 v÷Fä6Þ‡5Ô©£f‡G({¼VÓ³Œ {>½Ûˆã¡ïšî5°DhÜëD‘ï¸ù—©º %jü^œÉf9ˆâ"^žܵl%ì „ Œ)óŒà¤,ÿ婸çI4b½ ^4¼âKvF…q«ÖE×HfÅ>CvA[k¨¬›s3žDÒmW’vìFàÚTàs3æ]ÈÊçÛT;nTmEÙƒÃÍÑŠæöOöÂî±Ú1»/)R»Uå‹ZG%ÒÅ |²”ÃK1Hë8¢uüc¦HÿŽÔn6…~ªr‰]ÒXÊäÇ5+š‰Z!6;h‘­–0Õk¼ö›òJ´rºÎ”ÇE#ß-¬QÁ¥RÈÊG·ð>CUÕ±£vW‹1º¿Ä~\ð },¬~üê&× …Ïm`çSüíÓ6ù¬ òû¸GNÖBðÝÅ&ß!’öↄÏeyô¯Š+ÈA™ÖÄÕ†u>£”¸ôrí:rå. ›KNÅi¤½Ús˜‘K:«‰ ý"61¨#œ})ó,çqë*f™ðÌå¶]¡ÖÍ ]¢|furb`Í´‹–´Utca IH»[ ÍöÜj-ׯc1ðÔ í„Ê£«"/Øw²óIØð“!aàÇñª®ïwka¹ÊõÏШiÚ5D˜î(ê–éCÃQ•.5Á.\¥"õ› Ò>¨dzD®ßr8ÑGÇqâ†wxwà¸Ã¾¹Y¥þÆ 7*}‹Ê“ðîñ uP š+coŽÔÞ¤ïdè.™‡7à;æ5’ˆÓ›Ì CŒæîøTC3fMUæš@Sê~™”àκ=›´d9dh`¹+ÈĽ}E-ÛŒ&$Jk‡Æýɸqp¡èWûey·ªPÞ€Æ4Fd*¯kʱD’´»Û®’$nw: ôEõÙƒ ꋺèoZ9„é“DÃÃfr `.»¤\ü8" ÞkbÀo”ßÀÄ7¥P§­wóvà‰ft×lÔÞ SŸÌÇ-ëÝ1ÇwùMÙ ¤(¡ní¥êßÏ4KÓd<¿Ä ‡„GŸ+ÕŒP0Õ¦™,ˆ¾ö¡špãd¥ß…N÷-ÛN«íâ¿ 3ÛåÍU¿­žã}:p$ýu:šžš¿UŽ·ŠÀ3Šù[E`03Ë…<GÁæ|RžÅÜ®²H4½a]Mw•œ®¯3æNvºŸí·0•ÇÄÖ®·”ߤ®þ¿ÿµGꎭÝúaiQrR±œýûÒËÏ^” gÎeQrY”\%ÃäeQòØEÉtî+‹’Ë¢d¹»—EÉeQ2KQ%%ÃÙ]Y”,É‹Y”|þÉÇÊ¢d™ÐË¢dް,J6š÷Ê¢ä²(¹,JfbcY”\%—EÉeQòFÊ¢dFHeQrY”,¥eQ²JŸeQ2'®²(¹,J.‹’©VË¢ä²(yÊŠ’éŽâÒ%Ã=eQ2û ¶(ÞÉ(‹’Ë¢ä졲(y±‹’iµš¢ß&EÉäšNK¾¢ä$8ÐQ%—EÉS_” ÏeÓT” ÷´,JV[ä"%SÌ2< ×£›UQbgFe’;‘­ìËÛÈ—{?•~¹÷“É—Y"p{;p½w N7ô½½ûÚQÔýèä·Gè/“²Äë­7^{¥gU«Õý…ÎM•¡aÜ}÷ÝýÒæ›…±iÅ; åôI’&Ç®ƒÖTÍÔÉ*ƒ\ÕªØlXŽ6ѶÇ.)«õ01Ù‘´®²Ÿ {ó|æ}˜$[_ˆ%°†äªÂê³'ÏÖ©ª"WÉUðý¦ïº6ž»Àºÿ;ó°¶IɤHÃmÖèhì¨Ëuvô§JaUˆwB…)‘T_?GÄ©ŠÊ`%©ª±IõöÎÎvÂm²ñ„ïüãü¤JϨ˜òÖhŸ©´µ€sg!ÝÈŠˆOmé‡kÉæ¨.pJŸ<{rœS!ï>ñżqgâ$ªc ™®¬•†I”Ó~èVÙf?9§ÊÔÐֳΘՆº 7U%…ѤÌÆ¤¬›ÁRŽd“4²Ä¸}C…‚h‹ÜŠƒeIi Uƒ5p(—ÕðÄTójtIÿ¾8ÈläBaQ3ï¾Ñ¸¢ò­>š¼Ê&„ÞwÿàF5o†"+ ²¦˜ÑÄ;t*>žcIÕkº `±ø´ù™JÚ°UeÖ´ ¬ƒáVhÕiy~`Üjú´¬UºXTµ*¼‰+Æ»n œ¢:âóê–u»&B~ÂU:§‰Ðh‡_aZóï”n‹MVÚ’Õª„9ô^=‚…uEÌðõ‡î1ÈE²êo¯%`1øñ¡¥w¯ &-ýä/µ‰@K'þ¯9ÀIî»ï>ƒ„ÍÄè)§l^J£ŽÇ@Ñ¢ì›-ú|òÍhPÑk¯ü¦gÝrp_~z¸ûe TÔüÂÇûPÑaXªaš@EI“ECEx„%T4éÖsAETë¹òx˜D Áä*¨è§?üyáPÑ«_›_®PÑ·OŸ™v¨è_¿|t4¨èÂÛoM *¢bÊ Q[*zè…]PÑ‹gî*zýñ£yãÎÄI”PL¦ƒŠhؘTDû1 Pì0T» ·iƒŠˆÆ‚Š`….TDé’@EDóã@EpÑCE°+ª¡"8PLAEpWA¨nT‘•YSŒZe+IS[SG#8‚N¶£Á0­9Aù,!ñü¾1A¬D%±Tp„ß@¶'…#îJ¾ Žxé׿ëY7ÜtK~BáÃ8â®ûçzÔ îiö¬gžëYºõÓ½‰V±$Í MàÑ–ÐĤ[ÏMP­çÊa-4“« ‰ç¾ûláÐįìÃËšøÞ©ÓÓM¼õêã£Aÿç…IATLy¡ j«#CIxŸ~hâé¿34ñÚ£ÝÜè¤I”ÐL¦ƒ&hؘ4Aû1 Ðì04» ·iƒ&ˆÆ‚&`….4Aé’@Dóã@pÑC°+ª¡ 8ÐLApWAhnTMUY__ÅBÕ[t •tÑU,p»XU,tá¸U,´å±`#šÁ´æ°峄°ÑÏZcÀFX _ÂF…ÁFY"ÀÁFä•}ÅáFw’¯òG‰ƒ‘µýô̳¿Gúó¹ûy’€[0£,£I·ž 0‚ãº4›‡I´€L^F%`DŸÎ‘´ó„J/£4\—€Q 0Å”€Ñ²ŒH£%`4L_Fi:F×%`$iõ"Œà*€ÅŒà}á0*0"€B  ýÂ)ÿBsyntect-no-panic-6.0.0/assets/default_metadata.packdump000064400000000000000000000115601046102023000213410ustar 00000000000000xÚÝ\ïrãÈqöÎW–⻋¯rN\ù7"¥@Šäæ.®Šµ™½[U¼•ýW»r’3AiAr(b\”V'Èoäiòùâ'ðCø»ýÙÝ=`‚"x«³×VÕ®H`¦§ÑÓÓóë_ô“5ñsÿÖoæxsÀ"&?Öëé¯ÿjýV¯ì36ð&î†Í¾ã δµÜÏñoÑMÓ>Ž¿7kºyÕ=¾®ìôjÆ–ö©¼®7kf­etÌ f^wï™A¯¶µ¦ýPÞÆËW]³wmôjðn)C~’¬iM§¾= ãFß‹ümüûèñÉWO?>|rtòàá‹û_>:—bª› Û$Cµjš"SK/§ºläŒL㇗†Z¤¬±“ÊÝak5'Ž5äœkÚÿHçé¼1tœ}c}}]×;öÞÔ·Ï­GÓYß±zgÓ êC>²fNhðÙè`«ÑÌ„¶çFÁ¬M}oÊýðn£˜ˆdA£cAd¢€;|BçðèÂÇÑЋFž]Œm‡‹~†¡5wAÜFÜ.øÈq˜å^b”¤Ì(Þ‹1ï—^¸Ÿ/_¸Ÿ—_¸­V‰…«,Jh_¸(?Êy“㽚ù|Å…y/•}­­çDšö¿ZÎè%ª,sÖç§¶ëÚî)óFtÁ±]b`ÊŠyŽã]ð!ë_2˽ Ç $€÷; âËú¾5@Eä Z]æÎ&}îムƈ ¹À3Z!³w'dƒ) ¸Šy>\B_h¿µš!ªä ¨ýú½Ì¼”›˜›'e=YÔ7Ëð¦]-Ç¹ÌØDQÔb´sË˜Ž²q~ #[oæ†(–xȃ©˜¶u9+‹£ùÀÇ–“¿®¯ì@Ø /‚ß\‘ã,òÃ*liÒ]É+æzèsîÀtø÷°¥±[ä­1h¢1)ä‰à¦³üzÂÑq°`j·Œè—ÔÿåœÁ4W4™Z>w¥&»Ë­'4!_°°ÛÿÊ{v˜í-VhÀ'vcà9ž 6ÊC¦k—¢ÕjÖ¢–Y£•Æ-Rvá °T‡ß*ç[ÅË{íÏ`ÚÈo&A¼•ÈŽ?^ö`Êc}TøXË*Ul­PÉïg•jÚ?¥ÙD’LlE„úCL´¯ ó ]† óÊèG.ð²r#<*ƒ€»rk0.„¾ÿ‡™L‚So}<ßâñÓ‡2Ÿ¢ä‡ÅmN¾È´Z>ù%ºU"Sª§>Ô*t§sîä}+ŒcÇ¿³”ÉïóÉ KPNÂÞÓÔkùÁ!™ÚQ=FFùôAÞÑv‹ÛÂ}y[]ÓïNøù0k î;–{ªi=¹H»ÇÛ°Åâ¡ÔÏçnŸóÈÁnA…þ%Ü‚ù‹2E¯g܇D²‰'Ø£¯C܆oÍšaDz£ _m»‰kÙÐ>T¹ÙPuÎ/ç·e^½>÷öt?õ4íÿsÐ}3ß=šûZ‹nÃUœÙSÚ<ã­,½bx˜xéÅ’éˆ*ÐË -›p‚„Úƒ™ûdÈa¯gÑhà˜nJ0±x—|ú\äí{”ZÒtɼ¿YÛ3¨ ^HqSê]Nh“T÷ØX驌[ðT¬¡Ù—AŠ“"Œ  Ü÷·wVJêhŸpsŒ(–aûXD{Ħ>˜Ñ—Ž}ÎÙÔ »o;vhó@¢þEP½ªÂ0 P Ðc—)ÓqÞ§!$¾ä¢ë‹py5〴$wÕqhöÄ<î"Swj­f',†«ms(†Et*À©BQ­àê`÷)ë[py.g¶;Œ!¨”ÄLƒéýMôsƒã©)‘HQ¦‡Ñf²àÖÀåF[~+^,²ø=ôd# ñ€«ÃÆö¦L`’±%s‘îÞA† ìÓ‡o™ BZDZ+3Õ°º ÇÇ@€ñ‹±ùƽ{8“©W€Ê7T.¯˜ OÂGÍX¶òô[Ó”/Jל‡M­âŠ¦Æ—‘‹´÷tAOùÀ Š7> ã_~F6¬(<Éã*@@œY§„×!å% !Ó#Þ3¼œ‚Àˆ†ôú²P•]ß T½b…PõŠ¥ãä6‘)p¼o_ra~:–{Òû7?ú·ŒÒ«l¥S[‹|îqÒ Ÿ`éYMÒ!=Íq8qÔ@Jw1­zƒ¬‹Ýø 4k¸ü¡Aƒ˜òšIûÍyˆQáC0ëó7È$vÌo%FiÇx©W¯ ¼T¯D;ti'½´c\Ý½Ž»Q±ç$~‚6PÔ¸FáófË€>Ò.åN¨`ÝFFíTŽŒ=NsòàZ÷X7v*-ØÂÓe5¨*`AVJ,R0õ¨,I'esêqªh¶¤Œ!Ø‘gò²rzÕê%JâÀkC‚.D߉^ÆMVI˜Ç¤´sUPaþÌ!\{<¸!årÝ$+PÕÛKð()r¥œò©æëÄã£ú7œ!’V¬Œ)¹™…!59Ñí÷æå‘I`ä†È5¼y,ÚsçÆZ>ÈR鯖CÖEމÞ7;:,p„óõR7Jw(<Têä(¸Éù öìgÏ„BëTV âj•¾Ò.ÞAhP›_,´]–֬أ ó¹cáúÉœ°⊽˜ê$Øhö·3ZþŒ T vç§Úe®‚æ#FV]R»H~€p{‚¥-ßsN.<ØŽOFÁGy¶ÀrE¶‰Å±3~‰ƒìy&) u23Ïæ[Í„ ,†Î#ì‚F‘š 0Ø'ˆñ˜Ç˜@|Že!aÃÀš¤†$Váor'ð’xsÌnóG)ååç²Ôy½RŽ5Qª.…ÆÈœåsÂzÆŒîµÙ3z·®‘:¥iDØ]î”à¾[`3gØn÷GÆOiŽÛ ¡ÕC9Æ2`®a,¨ª ÷ŽdX kuP…¹Ô?¡Óù NvùE6wr6^Ô‚µi­-±ŒFÐPxJ²@^”aÖÖdµCKéÏ?ÎãÜüðÉý£§Ï¥¸=5éÉ€óß*ƒÊedþ¬ EC%PÒ!xò”0œxCzQlèl{se¤ø…ñŠ˜Ÿ:æpñ‡t$;¾#^å‹%¾ŸÞ?˜!“@°7fAPr)[«wšPÁǃ§èOBa01,:£“Ö=ï¬a¹¥ïsdUC<bÎ  mHÜa鸞ÛÀFdá•S®èð@bš•¦BI)ÜBd=ôÀ\P¦çÈ)‚í$=w°çŽÚƒá¢~Ýã* ɹÒ;ö‚‰ð¤|[§JuÇär¬º`ìÉÊHiÔ>‹j­_nï·ÙÃcæV“Þê¨3=5§K±Ãì‹tkSD‚:»ÇÄ\cÆR"[ _l¸RÆ+¶])û›¯¼ e ˜W ŸOVáãš×±gEZ0a(”àKª†àÖÓš.ÆÜ{{é³î®¬Aê@¬_…z<‰+Ež³!_Ù; Q"†–½£Ž7K‚påê®JÞ,=Ý*µr½w§›ca‘ý{wOü¨@Y•“ç* Ëeî0*-!594‰æQÜ!>±—t D§6Õ΋G+:Ê*®:*bÙQ³LG=Tûho´¹á«xª..«|"”ýòàe|âÌF&EÜo\øÖt !Gº”¥¼kž6Ù9€¿7쀙nΈñ«rÉhV©é4¤hÈq+ÍK—è ~‹<ˆTò0n©GãÄÀ <À0ÏPF–³A 6±™¦XÍ4ò:ödêu³Áœ|y CˆËß½´¹3ÌÞÎ@½ÏŠ<“@"AÖ&¨S´Æ~„Ù“Sˆ¢ÓY„3<ŸaE°1Z £Ýãv¯Öj‹—è?“¤+0‘€éI ˆÛjûp60ü}æzî|W#[¶ÙG}NàF»{¿ñ «ñÍÝÆO½:„í3ˆÚ ©Ó&cï· lt§ÎÛKŽ€œmAÁàØ 9öÏŽ?B¤mÖMÃþûΟàzêtÂ>Ö¸ÑfFÆÀÒ®«¯'ÉÕï—‡ñÈ!’)1¿;§¸˜šŽØ·aR1Ê*¨hEz´,RW×zFVÚí,2Y<ˆKÊBßUKê2q¤’”GèÏÉx~¢j©¿T°z%`Ñ»Rä•r¯ßß|ðô«£¯Ÿ¶µeç•$MÂÀš‹¶×ï%r´¬i™¯jÿ¿Ïo<Í‰åŸ qÕã‡Ù´é[šö㤸)JJÜKÿ„Sæç£¹1‰}¥¦eQÄ^ûÛ4»ívI|ÝÚn—†©ånꔃ ï'®ÞKlmíSÕd ÈJè/”‡R dÚò9)+løOÓöÈ'OEâ_Þ¢ÔÄþÉÊÙ„ûç‡ñÙ‚%g˜µŽyM¨ñ_2"^M@Öc>Í©, ~êÛ}Ôw5lœ}7óðow©,í¾¾Ùêô¢mÌAšõŽÞmm÷ÚÑ~ >· #ênoö zy*“léû-ŒÍõv‹ þm·KD¼Í…ý{s syntect-no-panic-6.0.0/assets/default_newlines.packdump000064400000000000000000013175231046102023000214160ustar 00000000000000K Plain Texttxt text.plainYxÚ…ŽA €0 + >Æ/•<*¢9ø|®²ÄÒîe ÍfäIƸ¦y—þû=-ö>+Ø‚\mÀ ù(õ•vp×{Ð¦ËÆ}M¥gqè/aÁ SÑCASPasa source.aspapostrophe_comment_begin'asp_builtin_classesB\b(?i:Application|ObjectContext|Request|Response|Server|Session)\basp_builtin_eventss\b(?i:Application_OnEnd|Application_OnStart|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart)\bclass_magic_funcs)\b(?i:Class_Initialize|Class_Terminate)\bcomparison_operators[=><] constants°\b(?i:vbTrue|vbFalse|vbCr|vbCrLf|vbFormFeed|vbLf|vbNewLine|vbNullChar|vbNullString|vbTab|vbVerticalTab|vbBinaryCompare|vbTextCompare|vbSunday|vbMonday|vbTuesday|vbWednesday|vbThursday|vbFriday|vbSaturday|vbUseSystemDayOfWeek|vbFirstJan1|vbFirstFourDays|vbFirstFullWeek|vbGeneralDate|vbLongDate|vbShortDate|vbLongTime|vbShortTime|vbObjectError|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant|vbDataObject|vbDecimal|vbByte|vbArray|vbOkCancel|vbOkOnly|vbYesNo|vbYesNoCancel|vbAbortRetryIgnore|vbRetryCancel|vbYes|vbNo|vbAbort|vbCancel|vbIgnore|vbRetry|vbCritical|vbExclamation|vbInformation|vbQuestion|vbDefaultButton[123])\b functions"\b(?i:Abs|Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year)\b identifier/[a-zA-Z]\w*|\[(?:(?!%>|\]).)*(?:\]|(\n|(?=%>)))keywords&\b(?i:Empty|False|Nothing|Null|True)\bliteral_number_decimal`(?:(?:\d+\.\d*|\.?\d+)(?i:e[+-]?\d+)?)(?={{whitespace_or_end_of_statement}}|{{operators}}|[,)_])literal_number_hexH(&[hH])\h+(&)?(?={{whitespace_or_end_of_statement}}|{{operators}}|[,)_])logical_operators\b(?i:And|Not|Or|Xor|Is)\bmath_operators(?:[+*^&/\\-]|\b(?i:Mod)\b) operatorsA{{comparison_operators}}|{{math_operators}}|{{logical_operators}}rem_comment_begin \b(?i:REM)\breserved_wordsÕ\b(?i:Class|Sub|Function|Const|Dim|ReDim|Public|Private|End|Preserve|Select|Case|If|Else|ElseIf|Then|For|Each|Next|ByRef|ByVal|Set|Call|New|Option|With|To|In|While|Wend|Until|Loop|On|GoTo|Resume|Let|Get|Exit|Do)\bwhitespace_or_end_of_statement@(?=\s|$|:|{{apostrophe_comment_begin}}|{{rem_comment_begin}}|%>)¼xÚí=vÛ¶Õ²,m·6iÓ´M÷Ó$mRÉŽ•ß®«ǵe;qëŸ|–“|›åêPdq¡•¤k‡ç|ç{½ÁÞa/³7؃ì^  )YÎÚë‹$t\Ü\€ðN!ø\ ¯Ÿ6µëFÛ#N½K¼mÕm£Kêw§ â'«Â=^a*g…ûp:¼^*4i·KlÏ1™I‡‹8^¯Hp¶ë¶WoÐÖ nô|xýPöjÕÛ}ÃþB‰@ËìJm^H‡‹}+¼~ À‘ãžC\ׄۨŷ•Xš¶k¶H½aÑæ«öl؃_fÃFlúU6ìûn6ìCû^6ìWöblÓ2Ü„¸\ʆèð~xý6) -÷ÀùöEf-³-sérx½‘Y×%izqM>žk™5_›^'®wE©a½P1#à”±L;è´û†‡ÚìN\ëãQjEÄÿ$¼þF¨eS¯NìV¶ë ·A%{ºªT0!Ÿ†×YÒëÔò¾Õª7¸”Q§îšö¡EŒ£~-©½Þ5L{JÂúBô+`áxüçßJ6d§$š}¬ìŽÑÀ?“Á-äø©§$a¹*€Ç„u váQ‡W¸.á(L‹´MÛĆÝ)I€ß“¨~.™;n±§$õy7ú=a©9ÐM‰áÐæ·$»AV?BêKɪ%‡Ã% ÊÕ¦1šz, ¥apNI²Èͯ‚¬sѸ÷à¿ß–øC,—€•arÍÄ™ÎK|÷‚攤¤m2ë6àâ6qˆÝŒHT–䏿P•;ê**]æUîJò»?qOÉ„ƒì&–¶éûa³â$|¦e‘CÃb1ã¡ÔPÒ9q˜¯Ô0L8Ìï%ëªv0úkIüTÐíXîÿ ¤4?Äë|#Y)MÔØ˜ ’Di*%l)¯ùGÉ&ëݯñH²[J7×1­¨‹EÉ©èü"‡,ó?é9Ð’ïÐ8cs´ïá£Ák|«nL‰u|Y äzŽ­H2£ö¦º^y œôT«’} ÑWŸ5É>)ÜÕºDçdd¯"È“ðÊ£—4“ð4¼ò¨—ö³ð~’qt(´f¸=þûw’M‰ãñ½$ÃÙñ¯¹^yxÙ·#GZ`U^‘ˆÚ[Ò€ Ç4И‚ÞÛáu§ þ ÜL²€O™j%^|1æƒQ˜QŠ|ª(Ž 8Bp ôúvÓ $ªìÂxðˆkø„Q¯q(T\ê.|QðLÎÂd†Ê•kÕÒÐ@åÊSò Çj²—sÉnßM`TòƒA•DbO¥ ‰ w±¸d.¬ vIÛ_¼0¬RÍ+-÷ù¿.Ïÿù öz֯헊K×o>ök¥rik~±fC¿‹7—JqÏSÓ äXÑ¥0I¹K[Á #‡ŒÃ•k&Ib™E•üa¹ÌGއTRñaZàÔňd8šýÛ¥ƒ0sNŽéL¢.¸Õr¬-óL[X‡3:™ºäñ\Í-ÖŠ¥b­äͤÕç)òm8Ž1(7È¡i«v=³j¨:¹ÿL–8ùyІÆe48e£GÁÐ^‡ÈÂ;­iö;¥°‡%9i˜„>Òhgi\MU©·Ü^=¥a4§é+2xMV™{ kÚlŒ!¯¦¼º¥(û²b…ñ=ŒÐCðCÿ9F§%4*nhTüÿK¿Ö@ݵ­R­áƒÆËó`>€0f)c̘’tI4¿V”ÝW”Ý-¤~tRüuZ…sf^SJGq ­,è Ò[ÀÜÎ%0e%ál²Ì­ä|‹@ ïÜ<ê¨t;¸‚ê]Mºª`¸qT óT©ê#/µ»'3šQÖ55邿ó[ö·“ʳX+—Æò"Ó9‰Ï½G޽rÇëZÁCiÂþðèæâ’!ž¿ Uâ0f]8õ­¢ìIAƒÕ–$3™‘Ш|G:Rt¦´.ªH+ï™øÀf…m´'%­§†pY@¸Ê’}?y¤o‹âé­I¡,é­ÃoSu>1 Í5œEa8ëa3~µßðŸ98mòÙã›Æùh£25‘²qT˳òš2F#t=OÛóÁ [QGLj}RHÁSçý’ /Á2ÜÑàuCÌ£d¦,ÊS*Ê3!Ï5ÃøJš]âö»‚Ìmˆ¢óOq/©¤B ‰ïŠN‰zz¹;©.Æ–5>ãÁéåÒbˆÇÞ"-FL©öÇ<äÁ­*`ñ¥Åißi9ç—ŽœŒØo £Y²|qÎ/”¢\”÷”œuœ>БTüÌDü*‹ë,dŒN…L)º¦Í&Æ¢êNgjEY’'šì=ÑrGÉ.ž-ˆ²Ðr¦%Ö¿I&›µVpFEùýšwí@’™:ú}‘CeEéJ“ït1ÊìãÁ¬3›ýk5ï`.ÓpêTÿsYAÕ3¸«Ã¥ÙË2:µË&ÇÈålÄõyƒâæ ʸ”BkF~_Р–ÛµDÙfyKf²Ïöi¼o¿˜x« vv®ÃöèlÊirôGÃí@©L=?SgNf%'›Ž¾©ÁõBÚGkLÞÊPL¡í'GìsÄëÞÚï<ûÞ™+ÞbÍÌÆüýÅÇ@–öçf¸u§V›?¶h €JáÓ²Ýò·©çï8þÿRÇßp±ð&õƒ’<}ˆ¤Ä†0×1›ÄõÈ!Ø«96€f×`ycí²c9]­x³RsÓm¥Pø[Òq.ÔZsµr­*T^‚ûÒ„ìÏͰ§¥Ò›&ö ±a¢nxåĈròé¤-;jì9}â5Ö ËÅkÅa_›m,£Nwܲçmòz¦}x×·¬JÇpÂÛ*KlÃÞрï06›†<­€×uÚÅÈa`Æ?UûvËÀÍ oöúÄ î^’–Íï÷:}'¼]wÌà¦jx}'¸}î’êÀ¯¾j vÚ/ y…€¦ãzßö=~¿;¸Ñ3àÂ>!6,wZ«àp©}ÞV;ÔñÅ{f7*ïw(iÍq(d­Ûó!aà²~Xk²=1p³ÊÜ}7`%Þ)'hÐ4¶¶¾B©E ©ŒÍö‚JF¸pA¬­e\M¦^U »I,v»c[Xö'ânS~~^nÀØv‰ç 6mÊØÄž"ÇR‹c࿉U˜0™LpÇ`{»L eÚ `üé€íáí*i}Ë[é{µ÷ïÝpð·Wd¡· û°—(ç·Ÿ0%rЪR—1Å?Ñ:O—»ý^qG ©íHå…îô…Ÿì9ÕÊ8~óB²`ô„æHY?Ò›FãäúFBAµ‚ÿXQ–½‚/¦d‚\*Ì_+†KÞÎÆÂYäï*ÍŸhä;Ù<¢EËÑzêØŒ² ÒÚ[#xT\‹Š÷\ÁÏÛ׌æ¤EUµ°SR”Ý›“‘{Xͦa%¿¯Ã$lw,BIÈ©sdOx7j(H‘ˆ‡2£Ê}“TCy&Üy'‰ÂîÉè–@nhÊ×4åÛ)}ü''µœõÑ6NÂDŠÎ-_Èë–å¬.¯ñ^bÏ›íy– p«´¼Ü¤ðœ{6aKͧëD$5—©g8ƒ{¯n²UÍÄàUq7ô9ýû憥—ÍSO¾æ´lÅ’œªËËC=’›íxü,g !p6óM‹ºd¾áÍWÄ“ÏÒK{ÄDý¯I{ÄC:K{œ¥=~Îi´ÄD,å7f’R¾Üpý€ Ë­–¿ì6ýeÏö+HKøF2U€~…Q¿²Ú€Ò<ëüÊ&ð¡Bí#âà‹¢.ÜßC2$y¥ŠÀ1ŸUÇ/쯫f»Ínž@$¼©‚~)ðö¾E w @Ͷ ¯ã¯¹M£Gü5°ÿþÚ±éz.\zþºiÁ¿Î( Lðˆ­1Q ·ûèûÇgVæaOˆ·I ïBÌáß0zJŽý§ þ†Ýë{+ônp8ì{—ùH‡uŠÝ€ˆ.醈ú†ËD/ÌüÀ]ØÁ($ûrýï¨iûßнÍ :ïobvÁß$mÜ,hû›Ôh=3ÁHƒìlÒCsÏ1»þ.ûf_H×ß2L¦Ý‡îÁ`¹Ø÷6¬Çø[î!â¾M_û;Ð÷.éÒ#^–¿]Ò³Œ&”Pm¢*~@xh„ø{ ìŒ¹øŠÞâ³ÒÏFÿ< êsFÕç`6™@ÊðÊjü‰NB¯>–ô*Úb5¤[ã%µ«ÂÊ¥ðd˜$æÀ åŸ\‘¦Ai“ô|Ž˜†ø§Ð=[ñf[Ü¢ýnô¿þ*Ê+Áïg`×A žV£ž¬_ž9Ä%Èc\ó›6Úþ’ ¿à':¨µ>&`|Üå'^D!‚j@X €¿Óc=cVÑߣ ¡~°õ%A!À © E´çïØþ Á6+¶-·ç‚a„i‚=·5çÐÖXt”’Lœ8¬cÅŠÀŠÿ‹Ylû½F©„¬YÀ’b­\bÑøB1ˆ;v‰Ñ*ùÅŠe‚¬``Òg„fžÒW&ø14“>8gÀuùä¼'.TÞ£ža¡›pKØUi)õyMôú¾¤LÑêÿ´f~œ$“Ñl×…TL‹zÉpT~ßnHSöœ¦}‘&µ,Õ9ŸÑ~/ÜÊ)†Æÿ’Yáö@ ˆšàŸ#À+-÷z ¢{m|À¡—; ªq˜ª¬[}·Û2Ôö30a¥ßnCý è©“zCPÕ‚¶ÀÅ"S!Ú²=fóÀkB .¿B @­>s[¡0PÛf‚ ®hcÕ¶Q©‚Ý…YJÇÏŽßi¼;?†lÄüþ‘ß–¨¹-„GkǤ‰dÇÄpÃ(ùéÞÖæšÝ¶_ï=øgÏ1l9ü|7ü Ø8Vtw´ïÉÌ8÷sfFLX+?a—7£6“ÏPâ™ìVƒSLàŽ“ !˜*¸L¦ÍfÀ3Žé¾,Ò= £Ú±Ê£€û æ:pƒ¡šE<"sæ§FÌx°Uq°`…-tƒ§–4W_Ak¹eé'¯£ÉǘÙõˆòöàiwM ô¶ÐÎ w1ë:YNâ©Ý˜%G·|q]S.¼ê?ʦä´u!×*®T=Ò{+m©ë¬S…|¯y -^¾JÖ<Ë?Kè%ô~N =ÿ¿r>íŸeÏ2ŽgÇ´Œ#W‘8õ…àÛÓ:>Ï)„)>ÍId­âÃùĬÛ Ÿÿuó±o¤žÊ/ŸÉ¡‹¯Þ‘±HÙ%市¡÷ÚÄü(˜Ç ¼Œ~I¾¬%{þ³8­ 5ÆÄî\hóKKÜn‡g˜18þrp~Dµ ÅÑ@>ÂL1ÁÈ<ñ@Ǽ÷uÔØÎ4G{uüSÍdL†6/&1Ôí\úJ)£w›€Ø| #Ô÷õ,(ß¾³2Ú{Ä™!ÿtžÁL1Û9öЉ§ËØä4_8m»qY' ý´g 6#É&H°™ö?ýø>ÊK9³!’-.¥U8¯¢x­”öêpæÑÁé-œä Ò·³]:—_ŽÚº¦‹ç;+¶g¦æ2e…Tž¦—óµvͪòöÃñ&ù5ö-R˜ßݸ¡ÝÞ‰G†M<ù7˜ÿÉgͦ츩`ºúŒÀü¹H&uùÿ¨ß†Nž.ús•Œ¬B?á$™uR0æÈEb «[,¿…ùgݦW’Ïäî@ ÍÔ”üS`”Éb258Ê„qf4CŸÿܼS›yŽ|üÝD‡¦‹#¯iÊ…WQþ.Hw"µSß±1_+–TñÛ@.•­ùŒAÚY(‚ôT“Uá¿èŠŸX#R¹¾Ö”䯸£ öÂÓNp‰dZ2¸ÉÓ’¼à#ZSì‡f³ i²ŒS~'pçΞ$'#J¶”Çÿ!¬§U8'àgᤇšM§øÄ“·ùž ô¡ ú2“W š¦¢ð»˜°ì.žF=XŠ?¡¿ø,jUûnBÍ]püF4$¸É« . zÀuggÆòðP諈+ ¸ÑŽx“HÆ$‹?ÛÚr¯|;K½9Û%^š”ˆ{³w„Ñà2,;]£³HÙb0¬ÒžvÞ°¨«{ ÑL*\ÖK²çT: :XŽ}þ#oÑþZà˜“ð±7ÿ ;ùë»Ä§ìªãü¢Idõ4|"ê!{ÁPÜèÌØfˆüœK›”h­ÑMÕe³hF0Sã/‚×O'ñß`¬ 8ñ | y=1…,1p] ñ„Ðú7.$• HTML (ASP)asp text.html.aspxÚÅUKKÃ@nÚúÖ‹"xñ¤•F0¨G±Ö¨E©`ê­¶ÉRƒí&$QðÇ›Ätwš>Ñ9t6;ïof¶¥/Ú|0ŸÙ$ l× ©Ã½Wj—K*íŽ)1sxL¸—|÷hßc##MðuÅè™#òdU_ܶ‡Äc ­ ¾”K#NBâÁ7W ,#ÏÛ’ÒXaehSð¯ªé°G]—º)( ¹ŒP×´é[Ò(J‚€Ñ rï üˆº_E¤¨l ÉdÄÖ$˜4©/JJÝè°ÞГ_èìžàVFDî‡Æ }?z%ƒ˜IÒ’G@»ÞlÔ.tðµ_èËÉ8ToPæ"g(ï ¾HéR¹Ñ$hð¨v 8Ì“[ÖÝ,;@9ÊjÁÝŠY‚¦ké…™åp¹4¥­štN¶Ä÷ii2a¼óÄÁ£‡}Ã(rúÆtŽ3%…ÙéUFóö9ŒH3ën¯^ozg­¶yuß²Z–u÷ж:f§õqo¶oŸÌÛäp}wóÑy4Û–yÝIĺÞíåεÄR:„UöYò61n ëǤO ôtýYÿ(”péUœsNp[»øÝ%ÒŠ‚œ×~¸ “jÑ&urGðÈC'ƒcä6±&ªŠš9L 8¿ù 's¬Êßutª†Ü¡¼Sòeå;+<í-€¿¨OÆïðv ActionScriptassource.actionscript.2ÙxÚÕ[käÆu•,Ç·IäC –c;.®¼#iˆ`Ð3ݳÛÖ<ÚÓ½»R4rƒMVOÓÃ&¹|LO/ê?ä_åc~Sι·È~ÌÌj;¼¦_d±êÖ½çž{.ùãôß_ø×Ÿ…YžM—a’M?ûèƒÝóy{̇ó¬=æóE{Lûú#ÿ:•ßÛoè_ÜýZÕaY·?ÿÙÞaÛ§þhïÔvÂ?ó¯U]&ÙõÁ›&¯m|çÍ,µaT'yVEeRÔÏ>Ø:õÛ†iÇú§î‹÷L×~þÌ¿MÕMÈÑb;O²DÞúIØ,Þ»ôæríz®®ÚAp|fõA´KœoË[Eaqo}·*¼ÿþøåŸ¢þ¡;{¹´8y–æÑÍ;V¾³´n6O>ýε?}÷ÚÛë?°ðý©.mÌ9 O|ÏMj?\ß9Óy÷L XS°eõÎúsÿúÍï~\eß~ÒŽþĿކe2̺ñ]Ó>ÝÛŒ}Øï‡ûþÊþ¶õö¼)£‡üûþë߇[(³Lßïz<请Ïúo?ÎÕÌ\åe\ÙÚõÎÆ—¶ÊÓ[[º0Nò£¦®óÌÏcëŽó,³Q—Á¡{YÄamÛóûa¾ÈÓØ–;3gfÞZ7¸³QSÛÀ%Q™‹<³gÝ;—›¦²î6±ÇiR˜Ó<乸¨5YcŽB^"NBƒKÖež¦˜b?©Š4\»þÌÂè&\X/wdÖçØg—d1‚ÜÉ"76V_Ì~»uUÛ¥‹8Ò(ÄÕk³Níxa±²ðÚºÒ†ËÀåMóúñàãÊÛ$²z~à.z£ã0M]šÄXйi–¶L¢qm‹S³µÄ`\V_­œ]­Í°=®ogÍ5W4O®±Tüf6º9Êï`¬¶wõ™Å⇘*VŸß$Ö¥yé–¦€Á²ú,¹K²ÊÍrœ€“›ªÎ—=ÝxL‹3†Ê0p³.lü*Lë0¨gaQ-òÚ ³¢©Ý‰Il»¼\†XXÓ `ëzGX¦š«oòU–bOœMëPfäF! kcÍñ"Ï+¬ü„cñKóÜðzeÃö0ës0Í—æòÔMŽÝp,Öçκ‘É‹—ÅY˜Áö0žì›X·4IVÿ&ŸÁqƒy\—¶ªx `cFyÂ)áîv"w_Ú5t¹q_÷S8ÎÓf™¹3œKÐÀäQcƒdt1GW\ W8k¸"MêW‰]´Žßž·g)VwaŠÉrO`êV)]ž§5Ý8»Òš†C"{ø™õ ¢„Ósex}MˆÒ Œ°!:¹¦ZøcËÜ´‹wË¢Ö-?5 üŒÉôÌ3¤ñø³ëÅ·aÙx³êÀ½†Aã|åÆýÓ—Ø;«cš­P–q«6ÂtË]ÃØ`e¯Â^|X3XôÂÍlŠ™ôLuTâÚQˆÀ*]€ Oµ“Y3®‚psœŒø'ix]1zìÊÉ· &ײáT\. óL¬&á7\]‰$Y8À·?\ÁÕl?{UMQä%²tVÕãHÿÃ_u`X™…IæXùÊp[N“ÌVŽ1莰¬ ó¯aÞʽ°Ä§Ê©cµŸ&yL<*íÜ–6c¸Òj°·îlà"¸Ð2¤ß˜¯Ü1ôk"BhEÐ:â”âÆõá8ÛÚ̦6²^\fé† €-ÌÊ Ã° Y²ô¦IÇįÊ]slUŒ“·ÛV7•+ë{'øã0pb2‡#S.ÁL’¥½JœÚ[Ùi ÓuFxe¢á8ƒÊ­q‰‹Ì¨).mjÊ®O¯6j%Xƒ[Ù˜¢ '³ÛèÉ8ˆaÏáš„AW˜41 #‹s O¼ipäÚ¥[I±éÛyؤõ¨ ì^3`QSÂa±KóüKÈkÉ_+L7¹^Ô°kÃÅÃ[“·»3†½2$„š›÷Ü€è;fCææÃÞ]RM’:åJÏŒ™I–Í)‡HŸ¦I…äŠ=«Õ ÃÓ8&í-ötL˜9ÉS²F‚ÕyÜdœNlzZÿï™ Õ»ãf½ÆHº®Üë$fœÃ ¹{r „³a[@E¼âï§É2©]ts]ÒMIùªW!«ÊU49rOܸ°øìÝÔMÂò.Ì®„¦Á HyuÂ%ÏÂr\ƒ¸Ó\#Ô{©éAt’¼¸ÈNòNˆÄ¿V<®õ7u3Àmmö6âÄc¬:H ˜ŽÚI„½æƒc¬¨6g´l‘‚ 䌢7M ‰èÐ ó> ``úƒáeŽ-òÎ^Å||‰%Ø% ¼;c¾7ðƒ¥Éóz„ÀBlb.üôÂÀ£Rz•©tx˜V~$ÅH”É[X2Ä"%TÌxd’:ï‰$h×ZËù4$º±)¦Q™ñ‚g»ãiW³Áׯ"9l»ä¹áªFÝaVaŒa§$gvÅ+žøäLLc£RÏ÷2ÐeT'¡Õž®x@·0—Ž¥È–+¤íêȑ覲˜åa v€tÓÁa°$L+O[ xK#‹I .oàaj)|Sï‹óy%TdiMÞÔ¦Nð&¿F…éºE"×fÕo‘TøGøˆ,vQX8VfàU@%ZÔy¬ƒGùeHØ#|­)ÃZ˜ØÑš„C¥5.J/Ô>³3*è1äy‹$ª÷Isu·‘¡á .Þ;xSêÖ@#›"ƒLr×›åL‘‚uæ9Âl®™ÅÏ¢¬Ä}#¿Øš-m>¾–k"O:RÎaŸ† ÍúbþÚÚ%Gw’¤5í†ßü D"ógüâ6¡#ö°ÙÞ‡t_M-ehVÕ@njsyaeÅ©±Vîß1b&D‹|Ühưñœ5$rNŽ .ñvnÅžcýè^䌻>qé¤IÓ¯- ä€Yd²¬>ΗÀ f°ÆÍˆ¬š3ïÚ·”_h€‘Ùå†K5k#/µñY¸š’TEÓ8éÜRAÄ1w&er-Ä·ÜÚ8ZÓââ “FõÅ´Ë݃߰œfÞg‹”È$:oÈçË 9>ô[ v –Za¡°á×›ÂuÀÄ))»Î Ûë;n×R á7±Å"˜§ûEã‘iµ`†Ñ4.ébxõ«QôÓgÅYŠâ=†!³ 3 2…wÞ,g„ƒÌ¬'›ÚÅ3D$¸"öHRÍ&Ø]‡"øº{ßÔ9 9¶]¹átºÜ= ðÃ# <DÜhÚ`¶è²àËlNcY²ˆ4±N>’'èjÖ& ù¥¼%âË"ùñðv}‹Xgáû Xžäã¶^uK&Io SiZå8Ù´^¦™ x[ÕòùÜJrÄ×ZÐaÚG ¢{˜ _Óùã×6W=ë»/ò6?}$š%I]’gÔ‚“ ±ÛNW;±¶û­Ñæa¢E—RÎF_HÁEZÛÕ ›ÞI­LÔÑb®× †2€"ðs±Ê:pIqHo±·IÞ êpš8†·ÈÉòwE¹ “‰°K¾qÖøŸÄÅW/Iú·W°Æ~Ÿ†p^ŠC榦1Eaä+„Bˆ7Å<œD7MÕq—bmãW^‰hPï3ÈJxìJËj2A¨Kø}äûÏÒÄ¿#”¹p:f§g *0õ±üWŒ¶Óºe„2µ›j¤¥6q ±Û83·³d0WX,œ)d-åVO- ‹au³vÄ8:’¿˜`DõW¥(û™.ÊY¦y‡¥#f•}½@aì •:ÐzŒ´Áakdäs?ûŽ›Cö0¢{8¢4>kÞh uuj+z€œUÆ7I)…ÖR¿×·bî£áÝn޷鉄;#{“@èI>FDw7¦;a²ÀN¢&UŠ £Ö_1준—ð&ì”D¨ÙQ¥*õRÐvׂ»¦kÐãT]‘*Œœø´°ïÔD"¿ÀÁ€ŽX¶Ï¹–0éùÂV=/…í\†zßµ˜“žÚ«Ž0_¬G”¤ª2b:ÿ‹†6R|ÿ@z%H­¼´QðAvLÕA h€¡xñOk[x,ÝÒ Y`>wž|) öÞ·(íË–+÷3€/š°M'9>Â_ 蔀c`˜#/4/c>sbŒSÑ<¬?m¥Š¦ÒÔÓM¬ð’èw†(Ž sÕÈ ,r…ëêJ&Hf ®³J¢Àm帓Ä{+Áq |‚µóvü:óà8ã#m3ä…Çr‚‰Â€/&žH”fí”a„ÜâÆô*î=7¥We.›,ã‚=>ÏYíÈVp-ó«š—ŽUIùN~uÐQ̼¶¢æ!É/`¸˜ô¨ÎklàÅÜ j2 ¥¾ŠpÛ¹öŒh:²†[4i(×"ø¥Žz&9/&ÃMER*kM×@µ´‰á$UŠ"U»Úh/¹dtŠ£R6è8³5µÖô l¬šu@m/¯AiT±õ*/o T"ûÖð Ý^  ¦Ðãr ºaÿ ÖPUä·”ðnizPmJ¦ÝJQ=@yQ§t”©é„ášÐñ ËwBÇØ&±¤û˜žê”-È».°¸"@ë¾&7®É™tŠb\ƒæ:j­Â -cÒÓRLåÛFãbuêÙkibúP̪дk’òðœeRJz)… “EJ•@ù£¯õcO$Á/×ì$øÒ_Kò*Ø* cLÉH'FÁ»\º!ìUƒ ¼]·ßˆ 'qa;îVDÜ+óu ý®í~9ù:t#º<0 ŠÔqÙ†š§ˆ^£ajtÿc¡(ð£¹õ#Í#]Q™¨ã∠ôŽÖ¾H M[q2ÉßTR0ŠtZðŠF˰+·å JX?mo•—d=õ¶½:SgA-¸u«ªµÓëæZÚ®B¦â47Rö± Aõ"ÒÜ…HaÔ}Ýd°Q¨É°j8Z tÓp\i°m©jì@¸Þ¾+;ÕÂ1~ªÜÙ´WØ•Kî@‰xáV²æSÌšT¨ç¤Ò5›RWà/\@Žò{ãT6¤¿¼HÀ¨Y"{Ù »R!ˆk]&%rÇä*îÁ‡ù>… «‡xöV8¯xZËõª£¤^†Ek:¦pü§—ÔÛ‰)´®•Ô!,X¸ÀV}Oˆ²’a%,«Õ'|)«y]v33ôhSЏSO¡] =$Ý Á¢Ž¥=QÆsµß!PP±‰ Øá7È25©dŒM² ÓÒ#¸µÝáºH Àîø!¦ƒ*ç$×kßMXØCÈC’k¥FeÛ°"zK¸ó"Ÿ¼£PüÂ[YýØPsÑV³°\->‰dDí¬ß¯šnØgÚBVO™w Lÿ 8Û\Ê¿ÜÛ‘/—Oö L¬šÓI)˜UI³‘²?xV,Ùžj²hÃăj‡æ»‡åC-'î6É—=ŽÀà™VuñŽ«!ØMí«EŸÒ¥,H¶sÖ.Œ¯-‘|É^‘%@‡|uáDGÔ¼†è2а=Ö¤ÂÛkÒ°Ú ¼\Ë<Áá’Ü–l²7έI«QõçÏÓ|†¼'Eß=lç*¢l+Äl#RÛêl…|Ñý±|¶ôd+\oC”¨xP¨|7žÑâºSipi š=ë ¤©Ÿ`I× avij«0¼Ï‘Ðz•º!Píþ%ÄÐû}â“Ûß¼kÀ{"”ÉE½Uëø$®MKÁÁHù™åB8Z¨µœ4ÎÜŽQ&3mê@”†d `b:l,@uÑÆ—ë:öÚ²‘?štô÷sÀ% MOŠ4<)—ëáV°Ô¾óûÄ’}d ôÌ!Y„ŠN›‹¡¼ #Ö=佡•²³NÑÜ6–šWÄÜLÝ÷½¶'ȇEò¤Í˜×ÏÃ[IäB@¶X÷:]·^âoo¹}ô½ö®é˜Ã<‰MNäÜ—ùJʤ 5JÆ`‚‰-;ÛÏ…®è ŒBé^ЋÛç]#ˆZ¾Ôµ—ŒÛšk”pÛ†.Vɲð;?ÚŒ’u(xuþËnàƒÕ?`¯Cè¶èµòkðb-ˆA Kéò’v„ã/%o©î¶Bo”‘Í"AÑÕ µ54ÏQë'é†9´6uì—XTD;¼± WŽÔlËå F:î©”à”vÒTd\ !µ`É‹ŠËV{0Rßç†é³$‰^xMºÅ>Nbå$7ÈêO€*óÊ"Óýª#6YÊ”¢ØwM§ƒÎ7ðb#"/=ú&FÈc‡ÙÂ77úòÓœz‰‚Å·XÎLGaïÅ!Z¤aÛîÔÜŠÅJ¥¯.M¦_´)í(ö¯öâ°» ËÌÝ£5äM¨AVòPm]Ëï“€`çKD9hFÞÏÅ“‘.r†¥`-uQ}‡+B¨/\™5õ-S§¾CG\4‰fíž—ö~[Ü;;Ì¢íp˜XªÌÇÞmóï¾÷vÛû]î^½ioëniÓÅ-wuatd=JÓ-oÕ;šÝ¾·E\«BãýaÍühg»]Üv[›Üù­ÜÒ¦÷HÈ™”¾µo[ßkX Qz¬kè­k6¤cýúäU+¾>Ô°–†Ù¶þÿ}ºÓÁ÷hOKVŒ@ŸÕ7û½ïJi4ƒz·a’*Ù„V¾iZC£†Rm±kbïaºŠßŠÞÉà¨ÐåžÆš%M옓­ÏЫÏ9¼L;Cê]¤@Z=´h¼`àêÁ—òXov׌°jæ€ê†œÒÁ¿ À-ü«Üsø¢£T*÷ªý,ªª©š™>ôâ¢EI)‚·Û]‹³ÍbVot«üÝ ÕÖýw9o4\úJ€Û‹h IPò æ #Û‰Y·uóïL”-êr {!œìì0×¾â!Ê›ç%48“¨qüÃ>+dâ¡¶Õ:–×<³}s_Ëñ„ù[ü-ÑD¾“Éh,­[ˆ²w ñw?/Ò>ur53ÓiQ‚ŸO§n:-õy7 £ˆx^á] mÏM#ßü˜FÒN¯çÒ–˜Æ8¨V*0£ìYà…¬’¹ oyP•j=½VýgºP;Oxyã"uLS_iàÂ4Y è¦rÿî´>—›v§è˜»fÃiE[ΚyÍš¶³ªé':7mJ\ãVÁÏMu¦wøoÉ^^+öSÝ£¯ýWkùêÆî¯zÔØÿùAgìxÅ$ÉeòJ–ƒ/ZMâV^s*sE¡8rE©]¤ êGŵF—FpÝÃà€Ô•fhšßÝ ¥W ¢ „9 ]Sf.™# ±˜ˆ=¸j• ,·ôþõÆ®)•sA”š_ÏÇ›õ´(­ðÜ‚õ«<‰·.ð÷ݳt9Ú`ö€Bùã£ÿd3z†\D]ƒÏXÁƒê²a+Ùüãý§ÜÒPŻǯ0Û\Á|fîÜWÁ7Ÿ=ý·ðé¼÷ôäÛ'3†Ÿ¿ýäêàPÞð««ý. XÒ 0WŸ¸§Á¡ÿò00§.u/O‘=]ã^ºñ¾Ït“ÌôœÇçøþO>{¯gg,3ßñ`×öc[_ç—ÿ3Ù½Òmù]ïøËñ¨w¹¼8uýÁé`2ørðµë_¼>wƒó>þŸ .Ý‹‹³ž—w:8ÁŸóÏ?ßgîôâùçŸ øòlàÎz_M_õN_âÝðÜ¿;<ïM†¯ÓáùÉð|8ùZn:=ïóÏË‘ Ýèb<Ü=ärøüÅÄé,Ç¿½œ|>}&¯ÏÜËÑ„'í»O¯žüß<]ùØvì<8ùÁ_¶Ï™~úipðÄ.ýóà*;¼ÿø©^‚<Â?Aü´bªØìïý©ÿAKØXë¯6^“øÇròùöoá/—ò-/·û¤ö7Oú‹~òÉ¿zøëo÷W}o´J¸ý»Bþoüëï¾ùøªþö‰ùYðMøômïélžýxûIW4‘¹©Kޛ죶üŽ}Ç›yþ|cЮ‹qU}bül§ß^­žà‹'æÊlž©ýè‘ ýü¡ÜðùÁÞ¹í3Ú¼¿^&pµ  ¿ÙØIžéÚ5’9üõÕÊ]O¾ÅOž‡®KÞ;}òŸì^¢ NMT]·ñÓGgð?¹O  AppleScript applescript script editorsource.applescript^#!.*(osascript)1xÚí=Ë’ÜFr3$õêý~Sà E3êÖ[¢F¢Z\îJKírW»’ì`K t£z4ÐB3ÓR­}Üp„/ºùäðÁ¼ö͇½Éßüþ _Y €®0çäí h P•™•™•¯B_\ŸÇåqÓøÚ(JÆ»´ŸdS’^{õÄJõÓÐö5ÕvUŸhh[t|¬Cã¢çãíP¼®Úžhoû†jsW{Û7UÛ»ÛÛ¾¥ÚÞÓÞömÕöÞö¶ï¨¶kímÏ«¶'ÛÛ¾«ÚÞ×4)™?+Yâþ‹™{ Cãbêìи˜»‡:4.&ïay|ÚÔ˜f~Ff$Öp|¤[ûÍG»µ/0}¬[û7êÌÜÒ¾À÷‰ní †}²W¥}F¢¨$ÍS­M ª<ÝÚ´ È3­M Z<ÛÚ´ Ãs­M <ßÚ´ØZ›{ªÆÙzÓ’¤/6µ*¨é4µ*yº©UAÃõÚdŠVãd†lAû1¡ J7jbTm^¶;cì6ð3¿G³4gyJ´æ/uj^àl§æ%Îuj^Ä­éùk×f~«»^M³_»R”fêöfm&ý,KÃQžÚ'1 ’†ñN/܉^û þ«•hÝ(Áoï£jx+ƒo8rA›xÃÑjMÑHiAzeiõ¡U…^ÇÕ8úïׯïéô÷ÓÔ_ôÍ Ì6Ç,xŸþþž s•Ìu€¶jZfˆ,œ‘¤†œ ‚ž‘dmŒ°ºZ¦ä0€Õ±.7p|–ú1õÇ(u4s¼ÖËèf#k)±¸U|õâ2ÙÛ@¨h™¾‘æ…pßs÷ P1÷üYÅÜiŒùŒ1'XÒ5³ää–H?ÿœ,,ÓXã ÇÒ6[f!þy¨ìŒD”TÊ7lÀAÛ^bÇMbÃb³Ã3ù³&­¾°MãñvmîÂ㌤i’z·n>ÕAIbC@0µŽÕ·u0&s¾²%q÷V'ŠIOÔ©ÕD÷ŠZŸ§Éœ¤Ù¢oÇHü\øhnÇùlDR670ô#6I“˹ک1K‚p’´Õ¶k(?o`5’Îh'…µmd¶œ‚ÂCû#"tGØ˸ ÿ¶ŸÇYuBùe#Ê¢›;Éýi‘’ëv$ÃljÃñÄ…#ÿ<\j)÷l´ÐDÓÒa!ð`¦ïËruoÙy¨/§^[§QH`š½d”I’‚ƒŸþØ CÚi¡¸3˜ï>ÍàBÐ59m³¸–P<~hšáÂr‰½‘‹«s[¨hžèëSË­ŸÁºööü('fh:-¢§ÌèQ’Ý,»¿c†¸Ó:©ÃÃR÷euòZ#u÷ü4ôG0º”rvï*q¸¿UW}ª ¯YóƒýB¶ÛHuÚLª(ÝlZ½Þ‘VXZˆµÕF,[—Gd¬o?_*£Ûj¯›'½%oó&Êó«Ë‹ fOøðáXpŽŠŠwâÙM㊃}y½qlk„´iUý°h=‘ж¢ô;H$H~äy÷:ÉóVòTR/?H* n‰LÙ’<ï]'yÞi'OŒ¦1¡°d‘®ãNKÂF§®ôx¥»ü Ã†…-¸»“q¿86Ú«ö@œ–Áƒ_‡O-:2¹×-ä^†«†gt 'h £8ÍÊ묖ùªŽèj«<þ¾î!bGAóŒÍÄÃ"zÎŒ(8ÿ­¸¿ÓpåŸGÍöGÉaþŽÆ4c>ñ2Ìü4Éã€ù˜¢+®elD¢dþÆü˜ÂoÃ!Û'$†hƒè‘ð°GphàÑd_ V–Äðy&®ÂØ)˦iÎr´ýdI¡Š1ö·˜ë™wõ+6Œ¿ÜÄSÏCÎÝ.¿Ë2ø©bzDõŸŒoóšFUO=§“´ dyêAãµGzÍdîäÄ褎ú–‘ÞËaK2† èz[Yîîåºb3w·ÌB/*”H3^2ñužd$èI>’y+åtÄ >;ɦÂÀ]oço¯yÒ$PFWà ‡ýº´ ;žqÆ ôûð¸?·TàÇi#Ãë ³„c-,$¹ömˆ¯õÙ÷jÇü\3æ|`#Þ5µ®÷kZë2¤Ê"h’§cb«_°L^S㦧;Ƥ— šÌúA«ýòÁ:iÏ_ê=VÓSZ¯¿*{ÃrìS‚ЇV(‚ˆ²éb!YÊ ^Œ>º4œ])ÓaöÎÐܤsL  ÕNƒ ¬М hšnâi<:‡>+ù´×ZÓƒæ1k³x¯~AUµsQ:vÊö-:f‘„Czrs×3Hœq½œ-@ÌEó^2ú+°ºÔè¼XÁï_:îàÀ;¹†HqkqrÖð³á¬'ñº“¤Îz–¬Ÿ\㘮­É{ʈu"¼é–÷ É“8Àâ$>¹¶æ‚-}uH_Þ~;ü=˜%`YCWoӃƅ©N±¯ìe%´è¥Õ|9Šc¥žu 4.ž›‚ôD×eÑ”6Y4jËL‘_*3p×ÁÆ)N…STìFq ÷«+¸‹‰½LD'a¼Ž÷Ë^6œ LÍKf9¹æ °¯ (‚w˜C<*õÁ‰;[3¶Íìn`R1S]Øìt…Íâ¬L.»hÃÊ€Š+G[5÷­œ)¡ÖW,Ы–ë}ËõW,×{+vÛ¦R‚þ˜¾êÕðeôÇjAU?ë=ñº©¸×Eá©èfÒ% uÊ2£ËUܦá+6AQßÇÏÒE—ñmED†úckž×0–…v€ÈZŠd*S5Át_¦S:LX-Xîèq¹Ê„¥¿T¶rËö"\UbÝW¹ ç0°³Î¡ug ¾ã+ ‚Waô§uØe.}¼¬V‡ø°¨,¬kÐb6î0Vôš°¼¥ &¼vöö`b,Û5aò@“m˜k™ÂâÇoßÔ·È–a’dÞ…Vh±a¢ÅèÆ¦½–éaƒí¡ la»`<Ü$Þ•ía*Œ $ÃI°‘±LuÑ2ÙäµÀ n€±ðòXOÚVAjBø£¤R””Î2ß,“tŒŒj•Ÿ6ÓËZ­W{þøÑ‡¶ãÑ“¥ÄàU•]8𥠌u§&0«€q †¨WìÇÙ8ÌE&@·Ñ£óž¥- eQbç KOT€Ù*á6$è­þæp„åˆøåô²k×b×gf>Ù¤:*6èÏuíÆ«;PÀ`W…»¼\[Ç8šªhôÖ!Áyš#™pEaˆî»^oˆ µ§*ø|t(ðE½ámþé ðW¼¨tD5àmÄá™ë˜Q«w¶üOº/‹èÂÛøsÀÏwüöû|Ü3fpoh/T@{ÆBIÚ­€çÔJƒ®>Q;¯¿T§~ý Ëõ·,×ßl»*x¶\ãpHsÂ&â!lA ¿£×þ/¥#?ÞÉýÒ%ID|[öä…ÊqElR“à¹omuë ø eeÕõ@2†Á–ëû.a’ùÊn“áÖ`lâê[p‹Ád>«eÏj±Ì±”dy3|ëÏ„€ñ¼±á5 µTC’ë»ÊH~!ïB—2ˆO“r%QÀ Ï2q0*9˜CèN¦a—X˜ù 10€±yapF§~n:}ò.1u·K Rä;SæÒ|Äh¶½'ÀákìðK­†Í‘5Uù7¤>ñc7÷!46`‘‘›Êó+~ꎧprqžºÂÀ+ öI»Î?É#[]Ìw ª•ÁÙgdÒ»Và˯Ǚ›ˆÓ_%{®ºüS2VçMì,gÂHýˆúÔ‚Æ_Tи¢ÀG˜>ωKÅé_’À…åP^Ÿæn*Ï?JCÙú3?sóTžç² ºs ÐA6b70•yðÏÇø.b›ÏÄDÎC`UšGƒÔÅ í8O!‰† - œClv•,¾ÔrÍ$Aú1ÄÞl¾ªb€íñ¥0kpHÎBÌ@±9„zñŽ‘xÒ/ïSOA)’Ây+tC§´­1bížeÃM6Üb=ö ûÏÿ`ï<[0ý]™š‡HDE¬ŠB­=îö?ûìö>ÿ™}€_ÿ‰½¡}ˆq2ƒÐKH­)é¿WC  $6@ø¤§‚pÍLmöÎN®1ך‚LÉC™àb€ &&~LÄhE¾ÎýÈ¥L\@µ’aÚlg3By6m³É0ÜRìšÀ—çÁ×Ð*XIќ¤àNÚ·³òofÜþm ·ºñ¹ œ„G@¬0r±¢“í€#Ÿ‰âÓ )­¥â1`ÉTÔ’Í.À4¥&dbò%K DÒü‘ѽBvÀv…¤<¡¬¢K …ˆ ),ø?–b¨l+^ óTüH¹ •É!Æío|eÕK¹çy¥ @Ãò?IåM_ÏÔC9uY+7T¼ôû?®Ös•š”$qmÄ–2Öøj€ÂßÂÏU×û²K¹ôLÄüU^ÿUÑŸþú³Ë¿Ãè/<Îf åªu%Ks!ŸÊÊ[ Riµ¡i…Ö%ÄOဌmD©/£ã—ÊoÒÛ Ù{% Í'¾:ÇÈvTø(: z3VB¤éNêÏqDä :0ìç–¯W-ËÊ—´6OÀwUeï& © g¢p>Jü¡ ãI‚"ÄfDM¿ÉבÊE†í2 _‰‚‹DÒ] Z%ÂHÐ0çÆâ^ÏÆp&xOB‹ OXè±X {öÇcnpª„9‰Åå]ÌH ± O¨†¨z²ªÉŒSšçiJ¸;%5†E@†WI–ñÚHó A£Wn³êžj­™ˆrsK(rZxŠ%2ïã+Ÿ…¹¦”CË•_ÄAø×hH&1g ’EÊV\Ù‘Œ\1G>Lý;âªîâg—._æ^§b%& ö„¿áÜ&94™L¸~Ìg3°Z¿Áå‡Ì A}W÷.ÆI„«¨4œ+˜'1­|±@b‡œÓg — ýá/~ûKƒÈÇuŠ‚O»àÝGÀ¡X¡ lç1êëïñéµr8ný°—Â>\‘|¤ÈàFÚû7÷ûNÕżøõ€ÏÐEbÐI¹â.¥Ð]°¬†x‰~ %mû™Zx!“ƒ?è¹Ðûà:{ÿ®bËV#—L†ŠJ Å”CÉU ã+lÁtNÆá¤|ZG¡q@vðÂÂ`±6Lv F`v9[râfþxŠáõf‹¿Ù™i[Ë˜Òæ8(ê€þŒAQ–¶+õ*@ðÛÂ¥ yX‰cÍ­eXˆËÕP V1×&J$Þ#—ëûÄ“¹.¢”ƾ؆Èx %à~Î¥B)~‡ø,ø*Å)wí8»¸î%°ÒðbÀ>õ)O%âM!¡èž]߬þï’S¶æŽó/þvÇXÊ`Q0¹ŽqwÑã7ÿ³‹Jx\­µ²épÅN@´f0ü*Õ¯v L®)ÞãMä7ì'Ó&ÃUl¢ZÀM »Îø] ¬3 ö Ì%Äp¾øÝ€€Ã(¼ÛK`æ†9eùS˜ò)³ó$Ú[rîÎ5Ó.C[Lo£=äV%tb,Bg`ÏAí¯ó`<tx¯R¬·qÚëoŠäå0Ô«Õ®8nÙ êQ0ÙõQ­ñóÃï¸[~‰(¤W;Ã'öéôŸNo:|ÅÖCw¸YúÆm=ÔŸÖ£úgV,놜[ àF€÷˜t‡ßÞà6Ø^ª´^è³m|÷²fd8ÝWÏ»);¹lž­@xS7“Ù@8W¡ÃêæÑCìò´–%i§æ±ÑI)Å¿Pè}ÿ¯ž‹–—ç¸y†¶W69ï¹W¯náN˜mù妇[ÛäæoŸŠdb¸-×ažæ<È`e^ÖPË›êpˆ î¶Ðèˆå¿Î×ËœT¤]Œ¯óEu°ë›œâ!Îly¬öOÖÀ¼ëú°¬K%ñ–Ãô¦)DŸrQAÇ«Û÷jݲɰ‰¦[Í5D®~õýŸ@2AësÆF ƒ~E¬£%(o¶‡|Üj¸Tª!ÿ Ö´‘ËÍlÂO™‹nnŽÞF 0¢F§žÜ'.IÓu…·£û”A2Îq}cÂ'™£œ}ÏñÜ+ÀÀÄÝ3Èùî‚@TÌ鳯™•¯@ãq‹‘öa‰ûo®-ÝÍ N‰¾A:ðÍ ?„€dûðD²¯òJ ¢y_³¦h¯”飺 ä¸ãžÏbîVyÎ^Hö„W×Áýȇ ´jÀ)ìðf•XÓkMࡆé•bðg%€<~OƒÞÿÝJ'Ÿ3Â'ÌæÙÂu'€w€N4ÆÎÀ·ÊçèiÞÊ»äÂw˜ÃXãIHç܀(‚Eà¶ù8sT$'Íò¹ÃYRÍ5‡ÿ(6vJÖ08Út^¦_T­6†ð•0?P¼Òp‘†.‹dkc—5±µU·¼m¹~Þrý5ËõVìVfe_Ñ—¨åa}Ø­ˆ¾p˜Sö³ß 1„Å‹2 f<\¸ËF)È̃7‚„š$ÂĹôS˜È½óÒçBT<~ʦ7¦Bqp¬¦>~Ç:ŒwŽR³*Bcå0*v¥:©¨Ç(R†ç•3õïE‚€g–&0ÏÆÑ&jq@ýìcÌÁ1¸ÄÙ !Áïɦs?§¼¤dáòS‘R ò(52S²ÏEBÜU¤ÈçBî¤|Ò|„ ˆ¼ì~šcÌñ\Œ"y Î>P+Æ@gÂÚˆõšÞ\ÇUÅâÏ7 3Ðõ<ÄÈÑô8†0éüe¤]Ä®†¿3À°Ì€‚é<¼BbLŠSqÔàzçpœÙ {‰¬×5½‰VŸÈXó|«SOm;ebûh4*z²ó×ËÖšLø;<Ýï”É~§¦ãd¢ß©§ùJ’ß)3üšÚäy~à rü Eb]ÔeXe¤§ È×ë ÉÂã âºt]¸&ኄE6F°·tC¾k`µÆy]˜…wÓ"oCäl“ Ï[dŠK_}úuNhv4–mÑô53 ²ùù)Íbáþ1 ßPæuóšS}E<>ßkPì·òð‹Xî w }…cY8hpXô-=K`T48"V†æ3¬P.Ÿ<È£5=uÀbAPñ/¼%&¨0³ÄЄŽÓ“sÜ€˜fÒH ››ÑhPk¾gУŒyJ3£/K&HýSAöíÈvâåËu W‹Â%.à²%`TÝO&BøˆºPºw»Q§ÚŽtwâpž§“°IêÂØüÁ¦¹x©Œ'áe›¢öœNsÐÉ!`4c¦Áµ <ǽ4–qÿP±¸ºyäð°\ “t‘±‡Tç”ð0Êl”ÀåQràI1”ť—Ñ$æŽrºÀ(áN*ÖÛˆìùãóÐÛÇ“TØcÎ>V˜Êkú8㵌øwßÀ“ÏÂH&VF¤ü‡S¤ÍÉàzÜSk…¡ñ'Œ3ŒržFL¤GPÇiïŒr´Ïh—BJûPÿy‚¥ Batch Filebatcmdsource.dosbatchcolon_comment_start (?::[+=,;: ])command_terminators[&|><)]9 xÚÕZysÛ6—ê$›6mz¦gÚØIìHv¬¦ÉnwêÆñvf3Ý?:Ýv“ÎìŒ%{(”°æe´œ¦Ÿ}$(’&u¸ö Á¼‡wàv+ýû$«ïYAÚ¡ï[s(˜<Åa>ºÚ*ÿ½S7@LáÚp,¸×fÃ}eàVfÃ=6pW²úÓwXi]9W‘ÓrmÑ9UXtÄ3âú¢#þhF¼¾èˆ?™odõÍ҈ȊYPЬ~»%d̃QìÍZX1·†›Â½5.gòÍÙp9kßž —3Ô¼¿[ç0ÏzÅœCvY`^å¿»ìÈ| ï-;2_ÕûËŽÌ×ùAEI}‹æí­ŠBBV,Íë+LÕj¥NX2Œ ØGÕ(h—ù¸Â¼3.åjÅóܪ #¦ñŠª^/çï?«yOþÁ¼¿]±; °þÀçÉ1a[mÁ[²))_TxQÄL,r;•ÉÎÚ¢\­ ¯±Zˆ^Ž}&¹m­U8˜ Ê•D$ÃÔJ¯V”ɨ†g ™—S{¯âA‹js¿¢6Aâ ¼X¯°õŒÜ6*˜ScÞ>¨ÌžùóºSªY yß­(G³•˜›–YÆe"ɤby–Ír<[•UšQ9¡³z»1CzVO+Ï ÅÐ’ö¸U5¡°ûÝv…‡QØ2±ˆÄž`¶®ÓIYàL'~ÍL{¥ãÖZõíLÉ‹töv;{þÎýn?PûêÙÓî [¦±Šâ‹Â”Åþ‡ ýë ý¤Ös*hW "³þžÇÖ‹™_aNÉÓu:{;;û[»¿ÝYts¦?¨aºÃ\pÝ4Jâl ©š¾ä/?«£Ñ=š¿F7ÚÅ_› §tÏ0¢„g./.˜ŸfÁûÕ´+ÁƒËãN{Y^/ `šPaælçv:éJqŸ—|Cï8 1 ° °–c%uÎÃ)±Llî÷ƒL™¹¤7gK:Ã;ßÄ.JÿÔè}1°f%AΊyžß”6p»èϦqÞH–ȸ²¨ÒÎtSëÝv…¬Ù’²ææõVÿ?© _Z¯Ì\ÄE©ÛÚäÏ’i£[]\môŸI×;û«ƒýƒÝÁf·³›¶_«ð¡]!ßÄÒ^(Çð1³œ ž)g«˜Œäˆ½š„±Ó3)GÏ‚.Ž‚’Wn7Èþ&ÛÒŠÅ¡É3Jý_²Á%s‰•Zþ»r‰R{¨¾mW^y®lÇPãÍ‹«»ó{¬´NcË»]Õ)8™Fí[Þ«3­6D¶€Mt”,;O¨XÊH9“;ßõ®ê9X»/sEñìY?7Ÿ^…Ou»+Q]¯›_ä=ð?¥ÚJ :õÛüMI~x[‡$AÕXtf/qéåŒIvϳCjÖÈÒ swÓB'w˜=» “íVƒÅ\Âýz·e#N&‘£,Ç‘²¢qRY1šB„¶²$þ}ËñQÁ ••Èе¸§†–}”D¨X©†¶Ã.Õ0 ¥íŽÔÿHÙ–í e;ø&q l˘ëQÁS8® Flòó…±4íD°8k£²#§ž‘2ÊÀG‰ þ#GQHˆÇ!·1GcšÆcVà¨Á1æ%X¨!$øýÀzTB '‰èÆV8YCÈ8ô¨>a„:Œ]®Ë=àvÌ#ôŠOR¾RŽ%™rlêòSå°a2BéÆUýÀ@°L©WëÿǵʯŠípq¤)IÀJ 8E© D³Yr¬œ˜ƒ°ã„Åè–ƒÉĈHø¡£Ë` ö•s’ŠGK9Øq)hÐ[ž‚×E[‚)v]·!X™µ¡£î/ð„ š²ÇCM7ôˆ5Äà+;•t*©\KHØO \[¹D½"¦ZÔ€§"¶ü´ˆGõˆ^zP>†•»!BK ©>tÔÓù„Ö+²s嫈)¬Ü·lªÒG:eK<‰ÔžV2Š-W"]Q£‰Öe5f^¤ ŒC!ËgЧºÌ³s:Å]HËå#Ź@øËh«â‘éNáÌ€ÇDÍ¿¤‚ˆ†J_)Ïá.ôÃs,@ycå…–3æ#jØG(B‡éSº®ò¢cüb…åhUó­#f[C~ùÌWþ)‰é)ß·¤ ðEÈ謽L •/0NŒðÚ˜M5ºŸWÐ*r]iQÁº„Þ(æ° ia‰²|3¤Ó¿.ÌfºøÛ ‹/ÝP6a¹²ð†èÍRòûã/?øo>=0ß“ô<¨Obز{>ó¹ í1úØŠô¨•ßÅÞ­bš^œ¦ßª,€ñfC¾}»¡ÿ^C§¡ÿACÓUçç ý ýË^±~VdÀ§%E‚fB"á‡S`§\„z÷Œ^éºGA•5mŸþZžž»°¡-`é æR³»×x<}ÔÇkÆqS.éQ„þ…¼>Ée¶Ò`g÷(¬3³êÍÅÂ{Ì*ò«õ9izzä—3š»Šy‚8¼ ý—}ítÆ; 3"°"ý_À6n;.ï+˜'q_E޶tszwo®ôÏsÞ¤sO½Wæ¨ÞÌÓ…ß[>ú_¾AnZÁµÖ’®®ôUÇ­©gkî´j­jËßK¬ÌòÑeÃ[_î[ß PŸ1€êÿÐjœ!úi¡^oͱ+ ŒútIÆ~4Gí½ÁþÖö`¯ïlýÈ) ¬Aâ#Ó³çðwÞRd7Aè€L}§ ‰ë„ª/=#ò¹º¾Øñru´a%šËW=ÊŽ{z7_ã´[sÏÕgÑßY@Ð%[‡æ?Ú?ýç ÛoNøv“(°7ľ*îÙ©åP>_ˆÉè“ÙnÒÌ]7ç”æÂÉç£îþ£í?¶¦ô>˜GohËE(Ý^ŒÒòlS§™ÖmDÜGjÿ«ío ÷ø•)ÁÝyWÑ/¯;Œ¯ø }äõ¢Û” O=mmD¾7å5íç?ÿ¢~|þ³úáÅ õêï_þC}ÿüg¬FíÎ?ëÖ‡ŸØ+?«œbª¤ôYàÑyÎàoÙØØ£[ u¾ýÐt¾üFU=À™™"^Ÿú›oœž‚¤gûÏ{s‰Šqg÷:Kn_.ñÒèFkQO{¹ ¾¹0†âuXƒþ0a½[½—šw÷¿ Mo-MÓš¦ ÷µk—EÓ» Ó4½?Þ½ˆûãÒ ã:ëÝNç·Î¾ëDÁ)ŽX~¨þýŸ¾{ù·îfiîõºÕO³óS€Åå]a—ÓèÂ; 2±ä½ýTÀ|òòoj8Æ5NAnt Build Filebuildsource.nant-buildæxÚ½UKOÃ0 n·8€^CÐ %¼N<âÂ`š&·Í¶ˆ6]ŠñãÉÖ¸jÓuÒ 'Šãï³k]³Òµ®mD$º!pѽXµŠkŠÏ%úØÕ>WèS«ö¹FŸº¶xîNîñÔÐv-»Iˆ%^¯nù§«ÆS$¼¥­…!’ºAä½RBZ9O;_äHÈCæcµÂsSÛa"<™€ä‘ >ëqÁ'[DãÕòï60&Jè—5òh˜¸sþøÐ*q2íþlNˆVËÂ#™§ ä뉼ÎY £h«Òàò“FrÀb RÆÜM$#B–’¯—Šs4·|Îlª#…"úÔe}.² Ù¹.0[¯ýôßðëfà]mu„·$’̧~”¸›Ý}‹ïd!òLøåö›No¤ö‹Ò;ý zÖ”P¶1æÀ›°›˜Z”Ä^š qø–™ŠUi~݆õ[¬ÒãáþeŠJåâÚÁv¿?l9mÒMÇü‚ÜܪIÏàkË|¶]TމRä¥nïbIp<“JSçì»ÙVÄÇöc¼Ò{"Ï* ç.Ó¬½Lô…ú¨RyˆÁ“J¹22BVæ{<¯þ:ê8H} os3cN?ïpŸò `}¨ >pÈâèÁIµçØRÇC#cscsx source.cs base_typea(?:bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|short|ushort|object|string|void)bin_op@(?:\+|->|-|\*|/|%|\|\||&&|\||&|\^|<<|>>|=>|<=|<|>=|>|==|!=|\?\?)binary_numeral(0[bB])[01]+(?:_+[01]+)*brackets_capture((\[)(,*)(\]))cap_name(\p{Lu}{{other_char}})decimal_numeral4(0|[1-9][0-9]*{{digit_separators}})((?i:ul|lu|u|l)?)digit_separators(?:(?:_+[0-9]+)*) escaped_charF(?:\\[abfnrtv"'\\]|{{unicode_char}}|\\x[0-9a-fA-F]{1,4}||\\[0-9]{1,3})exponent$[eE][+\-]?[0-9]+{{digit_separators}}floating_point([0-9]+{{digit_separators}}(?={{floating_point_suffix}}|[.Ee])(?:\.[0-9]+{{digit_separators}})?(?:{{exponent}})?)({{floating_point_suffix}}?)floating_point_suffix[fFdDmM]generic_declaration\s*(<[^(={};<]*>)?\s* hex_numeral(0[xX])\h+(?:_+\h+)*name7(?:@{{reserved}}|@{{base_type}}|@var|@?{{name_normal}}) name_normal{{start_char}}{{other_char}}*\b other_char (?:{{unicode_char}}|[_0-9\p{L}])reservedœ(?:abstract|as|base|break|case|catch|checked|class|const|continue|default|delegate|do|else|enum|event|explicit|extern|finally|fixed|for|foreach|goto|if|implicit|in|interface|internal|is|lock|nameof|namespace|new|null|operator|out|override|params|private|protected|public|readonly|ref|return|sealed|sizeof|stackalloc|static|string|struct|switch|this|throw|try|typeof|unchecked|unsafe|using|virtual|volatile|while) start_char(?:{{unicode_char}}|[_\p{L}]) type_suffix((?:\[,*\]|\*|\?)*)type_suffix_capture&(\?)?{{brackets_capture}}?(?:\s*(\*))?unary_op(?:\+\+|--|-|~|!|&|\*) unicode_char(?:\\u\h{4}|\\U\h{8}) visibility>\b(?:public|private|protected|internal|protected\s+internal)\b-xÚí}ëÇu(J¶üˆmÙ±lY–mR’… ÐΫ )Nš¤$mZ5 2 `I°4Äp™¦IÓÖN[·I›¤M“ë¤ïÛ¤mš¦½IÚ~¼_ïïwÿþýÜÙÝ™™=³3 b)Ê$ ÕÙ™33ç=gÎüG)úœ¿/9Co¸åŒv&w8ö·^¸·Äd€/À¹øûQ°ãŒ;»[·vÝaÒdYIÛœ¿Ïó}Ç÷·º.ú9ãžÇ4}JóÚÃiÍÞF^¸Gó…·“È÷ãü ^×Ýj÷½Î­ƒÿ™øûx ¬Ê}Ùptx÷Ç߸¡?M:co´µ7rÛ^w?iúøû÷J×;[ãý=„4ý 4Eç- : ´ßÛ:ãÉÈM:xœ¾®Ûwwœ±»5t ðÃÀ™G``¯R¶@XgAšuû>YE ù¨ ’"𘠒Ý[ãï'yÈÛhñ|ã)àð¸<ÅäÈäÛˆ<„†ŸPÒŸTÒ¡Wœñ¢ÒÞp'éþ)ì{Û"š²á(–O óKá‡t{<\Û¼áîßòF]†5ŸÉ†£}?› G'è¹l8*g²áÞAà³áÞIà.eý‹À]x/‚ë;ƒv×a¦åJ&•ç3Áè¤\®ßº[Þv$\iÏ5,íÞRÃRªjXº8KÂd°H ½-ßô:^Ÿ%¼åüïÒñÔò¿KÇWÏÿ.ïJþw)¾ÿ]J´/ ‚"~×CBD"RÞ&(²èÃjå· ¬H`öÛî–ƒŒ!ô·ý7ñc3€¾÷Ž|ïÑU{g¾÷芽 œ¹;h»£­›Î¨ç´û®Ärú)A“wÇ»^wËétâ@›‚¿[ œŽè=Zàt «Zà”ÚÖ…ÊóöÊ5%(Åy] JñÝÉ.§»‘Õ8oÔ¼¤¥(¿W JQ~Ÿ 9Ð=„ï 2É(?-èÁèܨ¿çt\x˜ïÏñÅr¼DÇóAAõG/!ƒgoäÅôâíñÈýŒö+µŸÕ~…"ösÚ¯PzþyA¥G¯Ä’k¯æ`×ëwOÇ2ŽèC Jòoõ°k%ØHVÃÒa$þ~‚l¥_ˆ¿yëo<Ú‘øE Åà£ñ÷90r…f 䃉çOýe%(Åá:(–‘\å(YÙý^§Ç¬Ê¯ä{ö÷±|ïQŠû8È? ùÿ pníöú)ç“JP:„_y ÐͯÅßÄÉÞ 1ù×fü}/ýWìŒÆä¯vüMÜ)ª'h°‚@¶âoâE§6E€1â½ödìÒ®…) éÎ>% h22'þ&¾7CÔ¤ßÏ`—Ž@t@P!]"4°*#®À©¸ÜŽ¿æ©ÿNÀvâoâøsa´Ÿ¡@n{âì0GÒÄËñ÷ã$‰p¤Vä†@”,poˆHÒé÷>íÒyí ì$ßr¶ÇÉK@€ Æß$ÒÁO”'4Mèž ÙiüXÇWꤰî°K`FÂ"rñä AB[‚ÎýXÖ šˆHy‰° 07ņظ º%|[!·™âúgÏ¥Cß¿‰,†Pܧl¶{C§ßßç©B£! $Àâ±Zc<:y(¨Cé:ˆÛaèψر®úu+¶'ÃN(;h$i&ú¬À´$¸Bþý7„5dƒ*æsB—,71 CÀ?/0Joˆn[„,£ü¦ (€ü¿ pUœâªßL"!äß[ ¤8fAþú;Â|°þ,yUà!Áç%`¯ÅßOÃ`œkLÞù¢€}¿‡êô)z¿+^Úe&¿'Hã’ùýø›DãY%þzüý$ý7Ø«%ð 6Ë›%ïü¡0‚ãHÀ¾$Œ„qíÈ—>c½¿ñÈú=ÿ‘0‰i@þ1Ü5+P¿" 뚘¯ ê:å¾À¯ €¤Sý'çp@[í‘Ó¹áR™ò§Â'îbà„ì¿.´ zqøÏ„Y‰ý¢®7¤ù†À°€E@¿)ˆ[7öØIù_B[ˆˆ}D}Vüh߈¿ïI@zÿ– pcO-&{^Ÿã·I{uòÏãïóRÈ­H[‘þBýBÄÑä…¿LO€ð]Ç¿–&’ͯüµ +c” ý°Y—“Àü­Ø–àj¸ÿ-¬1õ Àß :ƒ÷ ÔwÅRÉw m.¤c.ÃÆh‚Ïß |F€'¬:þa.C ¾¸+Á*ÉRÚÒ÷ñ$€ þ„V˜ Ð÷Å Ã@áP]Ƽýçø›lŸ†þ2ùÇãcœiò/Âø"*Ø¿ ŒÁFÎÿšüdöCAÿÈÜiÿ#aù3Ï…‘3>1ù7MÁ&`ÿÿG þÌ•æD1FwËÃÝý¹Û–íÓ÷æhü÷Ó”k½‘³ãÖ^··ÝsGuB½õŽŸtðcN©4*Õ—ÐN]g8~Ðv|7h#‹ôFÐÁ?CŽ :».©Ý TïAH¥øÏqo8qƒ®»íLúã€øA× °µ¸ÃÉ po"²4è"ÅaÙèû6j‰¶ 6ƒƒ$éƒÞvÐÄoô†5í¢_èÕ çxiLwÞv@É/º·‚á¤ß¼=d%¡ ¼É8ðnº£Q¯ë‘F öF½›U¬XÜÎá°7i£þ„ÒY34÷è?$ü†ï:}á#ãu…y¯ƒŽ{ø ËÞ šA$ï‚ñ.Bq¼;ònHp˜ÑËÈ0§r2ôm7Ù"¸Ù'hT7CÓwƒ´¬¯NÛóúA{!ë‡vvšëNo€^èzm7Øî{ž©q0Á`».˜„ú»Þ=¾¼öË.Æ0Â÷¦×ë¢.W/5PGèÿ¶=±wÞqØöÇÐwZAsËÞ;øðaËÊ€x¡öž¨j·­ k.WíV`W»aU/Z3´6{Z³¨X+‰xŠ‘ ?Ì!‚ËŒTeÛø"û"Qš•ÆúšÐwž>¸¿Ø"ÈÉþþöß'¡zªûnèÊ×wFÞd¯ÞvwzC$ÎC,çÓç^H‘P›¡k_·Ôà—¿S4 ãs81?ÿ-ÒÞsÊ¢ØUÖð8 Ùx-5û¼¥Ž Ô:„øœlÚÔÓvº”ƒÌæÀ:Ð!ÐQ“À=bëgSs€mÔ·¼QëÙË{DþPgy£æË{¯ly·ØŽ?^&ËcTŠQ)³V)„.‰c’‹ƒŒho¼‹lêX†0‚–¼°N~4²8ÌX'KYO<Âg¼ ²eòã"Èd˜0piôò¨$ÒÇùq è ‘ðÑ?î SKÆSV©éÔäs´1Ãì'—ٖث%Øg7ë8^ÄAÍG+·Ëi"$î£ô5X½lÙÃFvß/ }?"ôÖ|B„™ìê iã Àˆ¸Âmô“4ë»L´t8bDÇ_͆P“GÁß:³ S÷-yÉ@☕pý17!G­Z±+t-çÊÂÔ‘oÕ!!•zßîLpð¡ã—.H}S—] vúúÀ³ÍÒ̸/‹R0·ytfFæQ9ËŸoKžAòüÉó?.ÍÊ0•)¶·È¬»7Ž:ñå"'Þ+‰ü}æèÚº£^Gá]ˆMÿ³ÐtYPaÓDW¡¶st êõùé:PH;¨°î)iNƒöR’P62Fî%Ž7ùu|‰†Î}ôþÕ b•ÞÙ¸”ñ9Åþe“¸9ÆÏ1~N¡3¬ë×Õªžx3ˆ>zãýØ ¢™p5¼¤ŒÒ'oÁìB¼º1qÓéO\n{‚üZil¶²¥ÏØÙáäwø¡Gf𛋭ê"iФ«Ds[e‚èªÛ¼HŒlc–@ñ£-§hž#6¯S$µ£SÎR€úX&{+ÉÌ#àà[Ó£Î@6‡–ÎôsGRݯçP,2ýê´Ê)±¡f´¬Ò¥9w”u}õ.\×Ý£¯É ®OeúÏkM{þÎÈøÍ3Ó*­­X' 7.F†xø¾7u\væØ–“‘%ÃE$¿}÷qAéÆawB¢ØDÆ@öܼª37ijϧ ­œÊô’5sìN8ž×Ž:žSàZ[3Á˜™,’Ò_)ܾ´ì¶èÖ’lló¦Q¯œH8dOö-ã¡¥€DD_~‰Bšd#“F#g„§Èæß©Ø*„ÍU(g‰ôy»Y&,” ·á.®‹¾_oˆ\Å^·ÞëcÙЯ#9²[b!Í+—X[?!q!SßÜý&^ñÆôåc ˆ3夵§XìÈé:=V‘ÕŒ %•TÖÆF[‚r2ªcò6ŒµP°µÐ´­å••Ûbêwª‡s8h–ÅÈß$~™´BÙƒkŽ$‘cÿ& ³nÈ㬳ss˜FŸ…ŒxŠkt¾-#Px5­ tEC‘JGfnk¦>à.YŽ]¶yè}ÍT´cE·éÊÙ˜äÛŽÓ24§;¼Ã8SÔeô¹T’¬ö?ä Ø~®“þ.˜’cˆhÇ`œ…0av)¹ù‚Þü1÷æ´¡\QüqìZç‚cæ¿£äNÃP$ïDo™ÉSòÊgg›2¢ž¯¾i䔎 àp\ù9••šv£}mïK)GÖêxª¤é)]ËðãP±P°™¦49ÙÆ¶/>'›ÒádoõÐaZ/f 7ºÊ|3„)+vÃjT*vÓª,W­ŠÝ²,<®P]UÑoÊ÷§!‘•'JãÑAõ$iHTlOf¢ždMdek§:‹¤‰ˆ¯T:îy!ƒÞ¦°Í^ ¦ÔØ¥ÌéJê¿ÀÊlU¯>‡?iæs÷¸`äß NSŽetÔŒuÖ ×š›•õƒÃµk­ê†ÕÀOÌYhC€ÇG€ÍÕå–U‚Ü Ö¡ù‘ÌÑüâ´ÎVQû#Ç‘1$ËZú¶ðï'kéuÁ±çÒÞ{á‰ÅpžæœU,F¢Ã¿ÒÝ‘šåÈ`[î™lÓ7g™ly#\O@¶°”k)[ бWB?..Ãsš~þ)aFiÄÅ¢Z$×Wž‰ø| Tf•m”d;7€gÊÇd)íì-€…Lö` ‰iŠ:‘­)J]J@[¦ih÷&­ËSfÎpë‚Ô0æci¡•;Q`å=ÚÄf¶Û•wÌä©§Ð]PôRE|YÖ™?Mg~žÎ6’Ϋ±”6¨áE!県õì*}$¬e]3þœ¤r˜*«O¶ Ñ§€rÚ|FHðqvÇ&p¤!ŒD± ‹É}’Ö±%­¤Ô,›´ 8[>ÿH5\9à)â¹’êMìðŽ2nޏÁ[ôW­ °ìe“tÅW—A†'Á­EAÁ‰¾y«%ÚPN«¬àÃÜÕŽ" îÕ"}Ë*+‘ìS‹ç’øózxâ?´gÄ>³ê9™ûŽ\Fp~6mkÐϬ]äé|£½ œí‹þsÞâ¨ÇG8{>?3§‚ÃdM¯ìr‰Z˜:S “M•GÃOÎC~s¥¶çe}˜td7CR@"ôK!Õ<ÁÄÚsûÝX.DgÇ"® ÈÉAÂw˜gDbš—S˜s&,ë ‡Þ8z*+q)=Z=FëîŽ ‹š¶¤œnfÓ5;òª¤×ÓÛ£¬ñÉ´˜ãnl·tN…Ñœ“,ÚãR€l£ÚŒj+Pµá 7JÅvNTl-S]÷OÏ6K†W ¯¯Ô§á°‡tŠoq×a°/'vZ?É­ìô½¶Ó·Cú†ô‹ ýÈjÕ0[ɉ-RF>‹î³`ÅöëÙ<‚§¬ÖñÐüH˜Å3üq|GÄ`C)ëR4Ee|I3éRpm+å²—¦¸Æ®Ã4£k\e~V·”ÓçNXÑ*š!“«‘”:DQÄìvDåaCõøÏY›Â%‰)Üžñ9¥ä¨TˆXîaH}îïpèÈZPv²à9ÒäXŒZÊ:8Ïi XæÚ3ÅŸ§‰'hOwŽ{‰NX%ʱ|¥º IqIÌH˜3ÈQÉTdˆ.w¦Ð_ÄáeÚu8·aÖ¾QÝFu`Ú*¥ÿãåF…Åâ2é2›–-¢BKªKÄùðln™áu¼n†! CÜ1†81D4}G<p–±Äß(Yâ› K`B5 a¢Èí_¼þ`0çpµ¬x±%¦£¬:ño…ø+~Iä®ÇîŠAÅJöŽs²»Î±“]T)±œO•²|JV%ʬ]õ&$9\à™WÊá0Îi¸ ²AŸÉ–óDIrÚ&¦©•••DêŠÔ@If:Þ Ü³ò•»^'ÜÂ'Á`‘ÿŸ¼,¾&Ð-ÐQYYÉÊ/ºËp)¹,=:G+v5‹l.”ûÅ÷k¯Í9Æñé­Ž=$ÿw‘Œ nß¾ Ö¦Šè÷†ˆ)0ïÊ>XY°íœ¯>šà±;ïùÕ•ûz•Á”ì8£(n0vÝQØúãFªÈ˜É\\¡õáÖûi"j>hA‘€ô‰¿÷K””Lˆ \_¬Ý±&óÂÊ7ÔK¤’ö˜"3Ÿ-Ò a À¼ÃUŒˆtê¸%€Îa˧¸æ8õ@L—sÏCv>½!ƒæ(ÍlÚŠhvGfe"ñAPö"#ê|!iK?bu Z·kŠ© ‰O•Ã{dšÕ|W³Ë–ò{\ã$t€â‘#—­ ×‚„’¦;GÈcм¤5t …ÂYy¤ Ca25e§2Ï낼¤r±bA‘¼OúaY,}ôŸ˜c,Ë9¬‡;†SR3e <~ÄNZ"ô?erTŒ¯ZhŽŠ_µ*×äõe­ ߲NJž¨¬Áy_dp³Q2aû0ÇÜŽáBÃ……s!»µ|bؼ÷—ÂÑ ¾„õ˜¢ÐPÅzc©£ªH¯ã®Ú½a)’F:£b`_þ*ðìk%͕Զ¬€[\d£áê¬B7¼ä6ëHLЈ•“¨…X•–lé÷=o¯gMü¿OMNz4¶ÕðC‹r\³Œ¾0úâŽl¹]ʶ‚ÆÎŽôt­ /óèÎr|¶E™`Åpá‚b¬¦ u~ñᜄø›¦5w6Ò/æÙÓ!ßSîÖ̧´lØecí>Aù2ËÔá¦}Ëö[KA]ܳ#¶K+Èy]ƒ€$æLó8ÎÛCRê‚DW$æúî†ó„#:¨ÍÞvFBÁoÏ>W‚&#Äoõªj‹ýg-æ6ZXã…û‡Ñ—S5ööp4¾¹xÕ¶[Ìg¶};¹0¡uðâ2úWô?Ã{û¡%–ž  ±Ì@yQzIö±­ ¸!‘âÖ &JwKÎñã%‰4aJS%y´ú6:¡ºX±©+jÓNâ7²ÎŸ®;«Å˜Ù°O”$Ÿü:/ 3 Uœ îvè‹dàÅŸ»gÂÿkXîpvéЕÞñžÒä·ôñ½![0F_ZR{ØÞÀñsŸàÞç’ðþœ†Vç×°È®û]“èAÖ‘tB¢É`µŽ¤?%™d\è×6Ä;Åõ!©ÓeA…ËBö,k$ fwÆ}:ªMf”Ƥ‚ß ªý^Ðm²—ŸžZ¨OŽÈ’vfpÀÅ$+ ŒJK"zTÙÜÈq†F弤ÈâüT,dÑB$¿{iªl÷~^ …XkdݔŖR9û5äɦë©<È.ϲí¶Ô™d¯¥I3úœãg7vpáð ×Ì6 P L® ܱðØyj…0Y sèÅXx–3X¶ü-àÙžÈ!ga-"Ûõ7g¹²]¹¬H’—ˆ¯ãÄÔÖv"O>R®y91¡“»:ËY:ˆ©yE!ÆC0Uà²Å úapLm¬Ké8 jŹåôÆ@¦h‘·'=”´‰½ò+=ˆ™gxÚšÏg¸ùd’ccD®{Ó‹´ì}·SLIÙÈžåFö ³Æ>Ò–N¾”Þxd|ŸCà‰D¨Ç¿‚“‘ƒÔ–xN6ÌHe¥éK\Ó÷1ôíÞBíªlÎ'd³‡^Ïêö¸nïàAU…t匫¶I:1VR¡Ç”–*ë\ÿ™Tª|2®hªtß´»N†Œ»Âq =ÓP Ý!«Uµ1âïyÿ¸èFÝzÃý7ñe!Ž|ÚÄôùRÉӊl´ok(Õ†¬»§îg°‡SX\oÏÔ{ŒìøEWÙµ¨aÈ‘\ð(-Ûö·J¤«I#í¢$h…‘ÛmoTLeºÓÀpàÙkšÏg?„9&œ,¬µ§èYÅáÆŠ™¦yÍiúŒrøŒM:£§eƒ£$è‰ BèÏ:À³¿ãÐy„±ž°Ñ^ ™›¶r|Uÿxöªl„¡™ =B™œˆ¯õÆmß8?­ç=tœ]/mý,ГuyxöoZ i2âÊȳä.&kšˆŒ›„Œ±þ¨L7Q÷¸¤œœ¨ /±Vò…¤ûضÛÇ%“‘Þþªqw¨l"hým.+闚͑‘Múÿå!TÖ¬†’Æ/f¡6PPpš9ÐÂÞå™8 LÄ!4g™9RÖq _П¦Ç’®°’ñÕèÊ y:kBpk¥ÿá{Öõpï•Ó¸ÿÊøW•XSg¨MÃ$"\½ÞwÚnÈMË+PÄñßf9h›´Ñ%ì6â”ýa±‘Õ¨¿L†U «rþ¦Ém[T–ñAœ–eáöCK¶Šã_×ÐfùúÁáÚµVuÃjà; s9¼¡È‚.‡èqª8ñΊê ñ_qê…1q •"7¯YØ ˆ Ó)¦4»¹\µ[] X­ZFHò»#BRê„ÒÒdq!ù¸v‡jš]¹( óàùý ³hاpéoÄ:↘2¬ŸÒÃH*޹ 3ˆ7”š†‘ #ËH'KçÈb¡UÉöBHày뽟#\…'´»(²×!ñTÃa'•à g°ø `eܬF5G:æù¨d3I^¸Vëà{:v˜AÑFo½QÌeÙ3申¢FÒ2È(Ê6qßàwXmóßÉΚ âŹÛÎpm1wÛa§i¹Úhásh« ÞP´ŸÃBä ¦—õ IY²Çg|yÇxG†_ Ör«~aUÿP{ΊìjËÎdÁ,%[Ù_g)ÿûf{ÄP~Áö†´ i݉#®Šx“ÒWû?ælz²¾.¦ÙK/§æbH9 1¤N¹'/ÈS‰*à‹ü‹ÑgmŠ\)ý³ðÜá&S3¼@'×éÒÌÔ¬qÒrßE4èâ…û "{?ØyÌèa½ùàeýD>Ÿ;jïaŠ4¢ÿÀ å€ýáøwØÅTÜuÉO {o H£7ëËkKëÏÛ6m«e‰Càú¯ôákNìFB:W³HË›ZÇCRÂïÄÅNægF†äýÚFV±ú¾3Šóe“ÞK yÕ^ jA ï¯W4EAðüó៽\»llëÁµõý\Ð_Öƒ…u´Y޶Ë×ÅlÊ7çºýÄŒº K-á&j¨‰Ï ø¥ª•™T¥g4â 2Âþ]–°iíüË‹Yå5Òõ”g¸~g/ͺ›ß纡Wà¼d_ìË/Y³îî÷¸î^6ž±EŽcï!ëe`œœâeŽUÌN±a•Ÿ¨b[Ôx›6 ”,®8¹\HÌ.#¸ âk~Ø Š6@Û!Ÿžmr²Î”]1œT8'5:%Ò¤Á¹;S-s{Ÿø´ÀðdÅN±ª¹åùò’hžìì$bòÆ\‚–‘3'TÎèÔ;K–´_¦¹ÊNßk;}“‰bTIA™(áÖúª:ƒì­‚KIWØÊ‚Û¯gGÙñ”ÕÂ;SÁVJ¥'ÌbøÃðÇŒùCiF{/‰7QˆéÆ#×wG7Ýn _² ÕÕ£ !ñDõ¦dL3`„SKÇ_†q ãå£0I§$zEßµŒ”3ö¼Be#ec»ç”X‰7q}ôtÂ]q]|?–á-Ã[Z¶ëèW$¼M¹CÂwk+³b&sK}¡áÑk²¯pf5Á*ÓõvñÜÅNš×½Èuñ]j¬Û‡ø~°ÀnËaå%J¿ƒ d>À•°n-Z©m/ ž ?Ö}ƒoŸ ¿®ÚW§¾iñ:‰˜^jºÌèêH µ'n"×G¢M$1ZœçÒÉ7Ý0îM†Q×í¸Ž½ÚܼÚZbš¸(!Œ¡7Þr¶ÒN.!ÁÊ ÍÛŸlYö.>û´µ„¾­ª˜ÈIÑBÂ%Ì:À"a!·ëÞvb ÇΑø]+“Ë@Zå[KP}2Aµý¾–Õ|áÅV„lø+AwQ…n»;ëRL+z˜Ò†$IááJH]ñA2Œ"þ›U 3«¶?Ø}ÿà#­ Yÿ€êi».•pÓý@«¹d×Z )”U!6ÔÛP ²ù ­’z2õ²2•Üy™„éJÍ’!¦Õ4Þˆ…{«“~П“ o5ô/B—®í °OÝM9£,Îo‰\¦—g m–˜xßââ”×øpçñ]¹ù¶’$Îéȹ%Låü¬¦Rœ‚¿â­…#O±Ø)öá{“QÇ•\ýwó‹Ü¥YÀ²uy{IÒõ–äù$Ï·%Ï¿ yþg’ç¯Hžï–ø¸5(^Y”ãÔúïàp¤ùæ8K÷Àö[ê“6ï,I>Ðxî&d}Ê*Rù)öäк.æ—8³ïdâ#Åï;ûSXÜA[¶ý´œ-ÈáfÒ¢·rÄÃl1¬E Š=DLˆæÆûŠ«+çañWôÐï.Aý®od–Ya2¥ ¯ Û×Õ•‹ø¹ä.МÉoÊF«4ùÉô5-»ÕR•EÆí~pSf´B°ž’¬Á>zô™a=M®˜ä}áØÃ†xhE<ê¶ïùhÇ(î)OÕ#™ó—iÚ‡Yõsá ŸYÃ~MB¨TªÇ”ÚG˺ëõ»®èùp1}â$VìC´+wXi, Œ’±‡¥ t¦÷h0bCéºD5D»5~É✡K½Þ<\„j¶IׄòÇæâa‹Âz—•Û{¡ãS£Nk½¡€XIâ ¬IÔ>°û0¡Šœ…i…>¸ ûFѽ.•å0êQkØÝ¥è$„rU³ ò9£ Ž¢Cû«Ïˆ£ å“½ÑÀ#KûÈ]Z_DT‡¬1F¢àXqÊ)Y³ª{ü®$“Ä*I%±\ pu~i™A´5WÁ Çkåâ]éj-éó xCùÎ0 §[`g’Œ\I}G†‰+[ã?‡Ö–m+Œ$Eq‹zÛëîK÷Ù¥ðä5ã–³k ªëìAñú¿žyòFîD ß— ù,ìG”†oeЬ2|áðåüþ¢¾²—?z²hå— ™{Q|ÿ#û¢Iy0AàâS$¥ JÚû>ó<@ôY­ ØüIwFö’+ÓWmP¤å^ÉVõvL‰‡è“Q⡬”l¥te aòÍ¿7BÓÍ»Lh> ¡å¯³/' Ñf¼˜ôR kœ8n_&§ áTÍJx{ oKñ4‚æ›q¨ÝSðÚ)JÚ1(Q'—StîeëÊärù(ry>§\>5½\.Åž²8 }¿š§ŒOÖ¥Ü* $R^›ýQÐŒçË'a‚J€"c«)²âŒÿã°7H®áb<3̦ü'£ÝŒv;^í¦y̾fë»%øÑü@r?EÂ@ÿ?I” ¯ß·%ÑØŠ¯ÌjRC ت¶V2jÉ–%•`1ÍËÀx VD@Ë}OÔ¹I«6¼sW§U?ÈšŸ{Îx·€<ê'A·ŽR_ßçÍëÕµÌ)X#<Š¬È¥Uû’:ÎÙ†…@*P^ÉÔ´2ë[Çʆ7Ç|þÑQÌxz*b DÖyîü2]#îöÀ.ÇlÌÑžpÎ"uݰ!áBê ¯sÙŲš©çÜxAKI^ž­ô¯õ“$ZJÜ8[¡V¸I»T‰– W¿T§Œ+q*3ˆ»7ÊÈ™ê”8ØÎs vg³â´[YþÉ/—d±²iòOÎ0c—n?kÄUñ²±³*m<#sk™JðþT]/Ó˜;†|RvªŽtÿ2iàXKRωç"&ÙÒÄsÉLä9'£0D×·¦±¾ôÐ^Èú¥T˜b$kxÏÎ>„ÐO¹f—2éM×y{q¡=Dò‘"†Ñ¨Í¡p# ,©4ÓÀ}Êi+ílü-œ²•äˆý(‹p‰LÕXÃ?i—uË…_áXçó¥„3Ìõ¥?)¸2Úø8GÿyŠúwFpÁy'.^$¡"C~†üŠHh°Fí™éÔ¶Ñ;ÚzçL.ó_&¬ÛÖÁ„Ó<€L¸š'˜á½‚ÃÃFÔ*>0*ežRFAvh“4åí¬MqégVÆe&HVü‰<›üI‡œg“µ”#RQü¹ð_ÓKØóÿ˜MîÚC++ cppcccpcxxc++Chhhhpphxxh++inlipp source.c++-\*- C\+\+ -\*- basic_typeseasm|__asm__|auto|bool|_Bool|char|_Complex|double|float|_Imaginary|int|long|short|signed|unsigned|void before_tag2struct|union|enum\s+class|enum\s+struct|enum|classcasts4const_cast|dynamic_cast|reinterpret_cast|static_castcompiler_directive'inline|restrict|__restrict__|__restrictcontrol_keywords[break|case|catch|continue|default|do|else|for|goto|if|_Pragma|return|switch|throw|try|while&data_structures_forward_decl_lookahead`(\s+{{macro_identifier}})*\s*(:\s*({{path_lookahead}}|{{visibility_modifiers}}|,|\s|<[^;]*>)+)?;declspec%__declspec\(\s*\w+(?:\([^)]+\))?\s*\)generic_lookaheadV<(?:\s*(?:{{path_lookahead}}|\d+)(?:{{path_lookahead}}|&(?!&)|\*|,|\.|<.*?>|\s|\d)*)?> identifier\b[[:alpha:]_][[:alnum:]_]*\bmacro_identifier&\b[[:upper:]_][[:upper:][:digit:]_]*\bmemory_operators new|delete modifiers={{storage_classes}}|{{type_qualifier}}|{{compiler_directive}}non_angle_brackets (?=<<|<=)non_func_keywordsaif|for|switch|while|decltype|sizeof|__declspec|__attribute__|typeid|alignof|alignas|static_assertoperator_keywordsEand|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|xor|xor_eq|noexceptoperator_method_namep\boperator\s*(?:[-+*/%^&|~!=<>]|[-+*/%^&|=!<>]=|<<=?|>>=?|&&|\|\||\+\+|--|,|->\*?|\(\)|\[\]|""\s*{{identifier}})other_keywordsvtypedef|decltype|nullptr|{{visibility_modifiers}}|static_assert|sizeof|using|typeid|alignof|alignas|namespace|templatepath_lookaheadC(?:::\s*)?(?:{{identifier}}\s*::\s*)*(?:template\s+)?{{identifier}}storage_classesBstatic|export|extern|friend|explicit|virtual|register|thread_localtype_qualifier)const|constexpr|mutable|typename|volatilevisibility_modifiersprivate|protected|publicÑ"xÚí=÷c·Õ”ä8‰4‰c'i¦dÇ2O2e;n–,KMÚ¦#iš6M:HZ=’GùbåHZ–}vGÚ¦éHw›¦{ï½÷Þmš6Ýë_ø~ù~ÿ>àÀ w$%±AßÞ{xxÀý7~.!å6»ÑlÌÛ…š“+yvùÓnÍï>'#~ΠKµfùP4DÊ E ®Ê†I¹Y€+Û-'Wqªv§ÖŽ`GHy¥[±Ûv®Õö:åvÇsZ¹R³²á¬#åÍZœrÍnµpƒnÃm»ÍFή¶/çVœFÛ­ºŽUx)sÚ ¹ªÊÍzN£U²¾‡JöÐJÎ&åMÚJœF§nÖ3ZîÕÖWí4ÊAEQ¹§áxn9ªê\R^«­ªn/—œ\Ýilr¼Ù@ÊQ=n³"‘¿1cãyÉð®;GC¼½ïIÉðžBñ. å´/üj6àͧöò¢á\d4Ÿ: ܲ›H¹E¨IYÙ®Õ"à‹ €ÙÀnV2šsÔ‰*ƒV¾5oÑöì:§Ì.IŠÉh½4)&ÃËH¹SÙöl·æ6ržƒ†¦Œ&®Ãipt?Y©„ɬ–àòxXÖ«+âaY?®Œ‡eSèªxX6m®Ž‡½žÂ^CÊ ¶Ö,Ù53Å7š¶Ƴ1©B ¡Æ¤õDÍnM€ÄZÚ&ÉžˆÔ¥_¯5gµo7gÃ?.Íp\”À± Œˆl,(#À’Ô3µ=¡ƒbÍNê X‹;uPLÖs’l†P‡œå¥¦Wiå 'm*£|—rÔš¬8vKC‚×zÉñZDéÛå²Ój5½Ü}]b»':#öºTè×É~N2t60OI…ÎôÒõ’~¢èØ‚mÓ J;ÑUn"Óèp³æÆ¤˜ŒÍ7%Åd¾9)&cîtRLÆ×}J«ß)Ûî™dxŒ;û“á1ÞÌJö›àÅØ=ÕæÌà]O5ƒgôÜbÏFèVÉ! ávÝi-ÚeNðžÈ(~z #õ1€ŒÆÛ$Ž: vÛ©ä¤ë3•êX†gIfš@y΢×$s½n—½f8ôž‘±å9¦ˆ²Dß.yl Äfû oâï0Å`Ä=׃ Þ¦lŸgŠÁtÀ]’P`xdÿ*nË.Õ(Hë—ˆ#Ïïµ&Æ©ôZãàÝ’Ç[“ìļ0e¬/÷¤¬€uá^ɹ‰­ ÕFS¶Ž¼fnl^ÔC%¬+/î¡Ö—Hþ T‰Óˆ·—öXëV¾ÇŠX× ¤ÌV$ËZ1>ëÈtøŒþyRî4ÄW ÚËÒ×Áúa§¯ƒõ¥DÊñ˜:mØ5eRNa«øP!¥ÓE`‹5Á9z8Æ“ªŽõ{”ˆphù†leÔìARnîëö¦\RŠo¶º¿ãày€"&ô}¤¤aÛùùºí6诇Hy6û1ÏkÓŸk’_!.½(T”4¼8'ôÇ)™ HÈMRÒP&>§0‹R8¢Œ‡—þ}?)Ïe¿7P78OIeP°–4 ªð<…m“r€•Ãò¯#i·Äá|ZÑaRî*êŽÀ—œ…hä—H¹Ýð)òR^ K{жLÊÝfh`×RÉêQ«(ê1RNš£Ò8­Â'å•@üÖÅ9NÊË ²V¡ð'H9Àw…Ê)âË%W-yŒÖôŠ˜É€•…}eÌdcêïU1“!6O+z€”tYåØ^m9çA&¢ÕBˆlŠ¿š”×B€¤ >ÈJq_#M™nÜ’SmzŽùµ¤¤[= Ú”f_sE 8éÄ»íu¤¼DSÑódÔõXê–_OJº¤zƒ$úÐ&…£4½Tð4tBqÞDÊË58á“b<,©†´ÿ@QßLÊ‹eÔÖ¢S#ô-¤¼JUmmP¤·J"j²Bqß&YSÕÈ¿]òBg‹þú‰•püŸb¼“”[c1dMú.Rn1Å ?~·dÃ¥p<{Dšg\Àœ‚¼G‰d||Tò8h™þý^R^*ýžS{Hï“h—‚Òìý¤¤N%v%UJì’"’á¨RÎÇ’’fðîà‡$ ¦h–ôCó¼æúˆÄu Ti2?ï£ÒÔ§ n£…ÆHÝ‘ò†£ŠBSèKÒ Ge)Æ'$õEG)ü'%ËÝ ¨•O‘’:±,|I>-I‡ߤpŸ‘*bÁE ðYi¸„ "ú)éʹf%Ž˜ÏK4Ïn7#€/HZF¤ñ‹’à ,å:r˜_­ƒ9Q;}‰”±xnÏÂFY®áˤœJPC´ ¤µ|EÒÑp-ݸ_•L"þk¤Üa‚ÚÝò×¥ù% k¢oèzêÔPsN­å¨Éý&)³F¸Ýô~Kš{"~·^ü¶d™x‘´ïèºñP©r¾«!éÂ…ŽÐ¹ï‘òúTµñ¢•}_r4€ÊDü@RUR÷¸ü”OV!ò;áG:ò8aqðãøVDÕûRnR!¡! ùSц²i ?ÓñN@¦ˆ?—l·Q¸–"ÿ‚”ˆ Ei¿Ôé]E0’âýJ7]€àÅý5)¯qù Åú )·Æ`u·÷[É70»ÁGʽ*p䥲½f§QÉ9v›Hñ®º=áß“’¦v7ö˜dUI¸ŽþüR² ‰'Ò¿'åÒï$DCÁþ(µBÂôç?‘ò,îgF¤<ÿQò0þ,y"$öØvû‹D.“é¿JFÀ ï÷oêÖ»ü¥¿“òI"œäÈüC % Ì?%®(sÿRÓuØö\<5Ü¿%ש à?¤üoFýÁùÉÃòü™’] l<:6ÖªS-'°#Sd 6…ÂySåÉɰ&Œ¸Ž¼×K5Sî oÖž —ƒá ¢ë‡ìÜþ…ÖÄ6ô_Û{Û{µìV­BÉbðÃ]ß Ç‡d «èKH‰¶'I=¹Hè Y§É¸ËH*ÉZPE­RKÕƒš¡8ynÄɼµogQÅ3JÖôl1ú°±Dz:¢†¹ï<Îã<àúˆØÂÝ–€OIãqOÈ «¤-ˆc¢Õ2×ñ‘Õõ(mm ÏXx?ðü§ÀóÏÏ?Í7H÷Ù ¥ìa×C=©ù‹ž{©TT6Û¨GNÅ_ì”jnÍD::›™Yjzö‚3EujÐáH.ç£qÎÎMOO£émÍ¡o…R¾°xìŽãóŰDÿ܉þ˜(”D6À¨Õ*´&­9Çêâ ,@ggVÔU˜;ͧGÔÕs8‘>æï“¦­q””Ø!h/OžÉ”Û@ÿºxaÍdÎdF=šÑ}”¢~>/Êx¥§é’ ¶>éfy¤.Ù‰St$wB˾³¢Ñ›±Ô<ìóÈ©"eŸÖð31â!sƒ ½€½Š=O ê¦H)„K?Ø`ññ £Éˆ)ýƒà¿üàNM\(© ìEóFæÞë¤Ñ÷%í³G ²!eËY¥aZ@ë‚EÜŒÖÛ €âêIT]Â7)º¦%#æ¡5ÒCµc±ý4òy†ŒHÒ²\ÓCýXõ©r³ð…S§'œ¨¾ú,é4"$äÇ!!úè¤þ9|1Õõ‰yfB­²ô;ugù¾ífVc:;=mŽ–ÖË"P”º³Fט¢–ˆ—í/Ϻùƒ‡ÂGîÔx¢þ˜õb(e/FVEÑo>s½LÔE*Rô}~¢'¬1á\>éC·G˜iÜ­lþ@v_q2;WŸ¾Öò§& ǬøQ+(ìN|d]drzwжp –£~Ì—K¡ù’ž,ÜÌzõ¬1q1ÅÑý&h–’\:Üt+¦žtðÙÉP!5‰×¦H* y§_°üý–%[#¦8{¤F(Âþ!IìI¬vŠîïN!Ñt8¨Í šªû—A‚ø`öt^ÈˆŠ•¨×¸»Šy’æôn&OÄp¿$FIç[Sû‚$ŸÇ„…YJrØC5 &ÉCZ¿ƒ¹ÛuF¹ÒD)¼P µøp/ÈQg¦ÉjâN¸;Q¸`hd]Ѻ4#-ÉáüH“3ò aZíJÁ“BödbJãéè+!%UW[ÄÁ{‡We4jp…÷|NåõùécP‰€v=N»5“N@²yÍI ›r +)î{›]¥´kœ¾Ñ±)ê{¨æýpÑaÅoá=l"ƒdµZ&à„¼® üÆ4mŒ’?PX*´Š)8Kú6éG¦|Ä„rjäOÀ¦œÁެpMäõdïdïâ 5õnÎÓõsm`R]/ èmÐ ´}ÿ%ÿûº»·3ÓÎ*3cœ#(H€Ä ŠZŸQRâÀXGÆÜjÅ©âµÂü|y±ÖiáÿÑè >ÏNÇ¥¹ú43ô½fmÊ­/6½¶Î¿Ï)E©o‰ßFþ)9é(ê³ç&T3“z«Ï]Ó~pîÜlL„r-OnÍ*g쑳&¼‰ÑZ ‹ß‰¡+æîzxVG«®®3QWÃiz©Þ&XõúÇ2 ­BÝ”&]W©ø~Ì?¨·Oɤ”Âþ鈴ë¡èĉD-ET*^¨Œç‰2 !ìTOûk‰ê[Û]SÚ%åÄd©ºJ¦Ñ\ÄàDŒ]s:^®æ¶ÚZ±¹Ind§jô¸%±²v®Ž‘t6b›l#ÂtHϱ+K8’7§oØ&aB¬ø„©6»»’Fd:£lùØà[Þg¾d‘:5œ¢¤T_µEqÌÖû劼Rïûez‡{$ 7rÖ`¥$VêäŒÙŒŸ…¦ùCÑ4p‚M÷SC{Pê6ñØí¶ç–:áÆx<ý·øEà¹ZÇúÛç›ódø/h4Qç±Ðð‘ËÝ,ãc)åfÅ™o9 ~Å…ü¨‚ª Qo/ûŽ[±ÂD~Ê2Ðc–zÙ»fÝ­Âx„ëøâb¥‰¯Ýà»Z©Õ€þæ ¾Ýç6ð1Ä–[öö!Ôh"¦Ù-TºšÛpЗð ô¥}Ðk.¡òp+ŸÄÖ|o$¸ÈùmÙU§Ô©V‘Žö[N õÅn,û ùe\n?ô0'ñÞD e$SëWaNÞd¾ Å‚Óö;m®ÿ‰µtªcE©UüH&F]÷a³MP„ìöÜ<í"¿…#ô_äšç!×Dܯ’áýP¨9<í¤0>Ñ£v/{Z7÷¶Ÿi¬Û2×ÔMúøãÀ|ãxŒïп z*Öôšˆ;}¼Úi†ÐŠé ž.ag&¸ò@vßuÙ”üóð¼ÊÓ@oxÐ¥ŸaÉÉZr4S¹“,ï+šå9'ÌãªÖ™µ4nýÇE( A_ƒŒ?ѵv:ÎÄØÎá$¢SU)Âþmî*H[íWܲ¤°y5d©46ÍžÍî*LXSÈÕœØeÉ»£äîY.Œ 9¡[£Ýr3E+RäAšcF£ß w³å ½vÉmFö«2å"ÇrÁ®MuÈ¿ N€çÊÑ•çÆh³V6}W ™Ð…7 qËô‹¥a§ûÁ]={Pqí…F³Õv»ö·û­á´Ž¨bÌhçÂûGÐPÝßi¢êîÜU`çÜF¹Ö©8ƒî™(±ô˽è’nÅ»"Ï˨š™éw3wÉ-ŒŠü'Ü—!Îi9²ÝˆÔ.«Í£ŠÄ„ ²Z;·ÐNDÑl©Œ„àuQõÈRA¨ƒÄ0dõ8l¢gâs?"ò.ì"9j=Spž܆.ð‚LìG…v·X`üÅ‘Q£njÀúX×ôs€†’OÆd•†OÔ8ô®8­3{y7¥Y_š*žûLY²&‹j¡º',Þ«^×Y„}Œ¾cMFOS}q:}ÉêéËÇÖdñ4•Å|:Y,@@ñ’Á݇«ÜK,½‰…!­Ô™ºkÒ˜R¤“ÆùSM×õSÓ:kRšRJítRZZÓ™™x×b`!¹¾…Þ‚O”,‚“+ qªÑÿAæ éèåŽ gn„»²f´—Ùç”oaI-d€Y v»+GŒ¯†ãPÓT¡¦Ží=žvcá&HYœ3†w„ü¼`ñq@>þ˜†û‚ê\ #eºA½KE\·s8‡•1¿Cž3£g[ø}½ðŽ”ðútÑúNʬ±´7h”b)€Ø¤äÒ©™dwë¢"¾.ê½!>Š=Ä&ªUØÛKl]%TCÀúÀbv¿³ã•»Ü!ø£Ò‘‡tÀC*å;“›±ú{².cLÅ`2O†’·Ÿ§ÇuíÓÛØãI6&aS4õÉ‹J}üÖRËÌ}€Ú1i_ögžªÁò°þÔu‹¦.!—ï\Öÿ@ϨyÈAè ý_OÖ&H¼žà}䃮}"¿_!_´¤£o` ùÑÃP¼\Š+YŘÃYÜõýÄÖឤnj9£–¦`´{¨÷U•ºÔ›S‰¸<]¾Á^ÈUÊ]±tl]¨þO<æŽhÀ·õãËÖ´M÷'ZvzUj”]`‰­ú@è_!A?1WXšô§§ Ò€¸ñ„¤~u}PÓOÃ㌯šcXÊ @‡Bt qá&Þã¨À÷4à%-&`_qbÖBuì³ä„!!%-àVµé-Ù~ÿ`¹¦<‡…A3ÏùÚ6mÞwº$?}Ìà^=.7Vžt‹ì%àù¾ú˜3{,W¬—~ËcS%&„ å•ÌäÆÖ/yŽ}(ðzÐ?íòAŸ¾6Ó§Q¥&Ê"ôší¦ïVýù»ªÛ>9³ÐZr1jxp¡í-ûKÝš.Kûbùùï5Œ„ÄAùf‘/Þ4âzS‰¦ÈÊ·t¬)FI1Ž)´SÀ,c½x4¥^Ü µlÞXbµx4­ZT Ó)¥ÏQMbüéÛ-yIýI# r5¯ŠÓ¿éÜ DiÖ€Ò LŒ;¤8áË2Þ'W)tN„öf€¦Ã·üß¼s¿_rÛø/T ZÐîÑb Ÿ‘Ãÿá_ѳ¦‡¿Aߎ„_MçHÙYlûA2ÿ<¢‘²ŒÆ-‡xŽÛh;Ú ¿â÷;ÒÎê@ÍAú‰Ä }¬[ðw¿Ñ©ÕÛ¬ÀHEȲ:ªÖ=ê4«~§…‚WAe.ê>,‰%>H>ùT{÷dìb+ô+ì~­¢_ï„GYÌúpUšà„oã^S73ãÏì±àu@âžHiÙƒÏì§Tƒ¥Ét>79±kûqÿÄØþ™Ù¢ÏþÞ?†þÜïÏÌìŸóggÑ?ãã~ýÏ/L&ý\Ù•ÜlabÎ/d –_ÈŠþÖ­¨Î˜s*âš1W³Ä©'Pá}R˜Æ~ÄÿZàl~´Ð.Núù‰ñ"^e£be°êÛ @Ü5´"$Ïà*9¤kR¨LZnb1|‰ávw¦ü™©‰¹Yì÷*jo–ÞÐ-z ÃÉáŸùÂÐTWDšz"ø˜@p}¥že)˜Ú} ;©O±‘ÿªž‹ö8 •64;7fbÜ€TJù2F¤`ãB=‰F_ùö›4‚ò玻0º®éÕùïeüž6y›5w"þ¢nU¯º E¼Ï7ÉÕ¿i_odf8èAƒ»ÿI‡çÆð­)–>’mqoª£“ÚëþW욆 ¹ÂÊ'ÔÿñÎI‹ñ¸9q…Êe¯´Nrýµ¡+ñìx‰ˆfˆIw@9P?“¾,cÄ–„©/¯ÌHToôãÁÖ"6™h7™iÂ.ã˜Í+„‘K~~YѶys‰£6"z‚¨ R§TÜæÂ ðâ~T`‚^—¥¿ÇåðÀoHœ&@6q)—ˆfjýÐZf‚0~$IÊh oEZñªA|aêlLoM“$ÐÐsŒ<·ý‹Ë1É: ÃáÏÏc¶µ²Ÿ®\ñÀÌJXdâÔÕ¢IŠ=Qª@Ö†ø@(á‹„Ñ™Éð,Uºd¼@´„&ošL3cÂ;Õ”o¼pHï?Àsxþ(dcÇ'ŠI'? _쯩ß!¼æ®d„Ü2öÖHé­m›6oílNL|µÒújjqÒ½WrÕê«åªmJÚwžCúZàùÛç¯ÉÀîâFç#Àó/Ï? <ÿðºä³ Š2ú5=m¼×Y÷¼hC"‚æ–©†ͨ¼mí†5e Nšdwzu-»{-»{²»©»×µ[Ió1dD÷ÿrfdòB1Ì꥞‰ àŠl« )X‹«I g„ÇëÃmÄ××òÈûé=r¢XsZ)UåP?¬xö.aüW,÷»gºß¹:t'ÊY§;©'wvŒÿ‘ʼyE™—N,TªëZ=oYÑ^œè_7¶Ÿd’¬¢qÜDj!ä÷d€ÏJxÔk©z§`ªÞ»1YKÕ;¹Rõv£³–ª§]Ÿº²4;”?P°8Z§Ê¡Ÿ¬08«²§É•†§§ŒI]Ê£ÊÆ ?P¯ÅäDPìÔ ÑEvpœÑ<ÍäÁ$ô±a€2ƒÿ*=§Óð…Øw6Ƹ—!§×´Æ«!ç"&tçü!S¦ 'æLÛ©½“Z7 ÿ÷ ügR1ÜŸ6¸Vò*™ªð•„%´FͱKõdäí:ó^+7kú3múd~V`›šbüîû%ÏE³;bg¤–(¡ïj]m­¼µøÃÞ\}*’¢7ä^©çy;A&:4ñíã#©+íÓÍä2IÀ)ÌUM\½A%bu§!V-mõS€¢µ´U%hL¦ã—‹7 r‘0+óã òÝIΞ‹‚7ˆ„יĄò5®FÂëÇã¤=IÂ+äBÿ0 /ÑÔ%ø™œØ’Hi‚õšÉíÒ_ªÍ Œ<‚ìü¼Ýn{n©Óvæç‰·}Êôê©B¯6ñ½¢á^ëÔéÍ-Ù>ËQOƒp~p!‹Ý 4F×—û ß¡âÔÓö¸ÑŃnÓ‡©ù};‹KYÜÄK#G{EU <]'*jOë¸|Ù/ìiQ‡jý™&‚*+áJ¸`Ч˜¸÷}Í©VFAµ× š> 6x%!:´éVñöž[m ÂZw$B6ùË™~ rEñXÆÐê&y¤4y?d/ý3zSß)Ñwý¹øÞ9òÃ8ŽœžSé++3•Ì™·®7!0»¾$°‹®¡Å÷…¢Ñ%opOüfߨŸz¦Ÿ.CóÕ>Í·>4±*G§„eœ_Ï&=§ÊQMÂ@oQqr•ßÚœøUÀ¦oèÕqCæàÝ@]?àçøŸ¦í_Ï<ÿ¢nü®ë¥{¶ÔûY¾ºÝlWî/†g :±ÁRó3$NwdN × båU v9ž‡lí’í5ðÖª CFõ-êØò\-“ª!l”kŠã“r‰IÛ«7¢p«žBR­ŽÆ;!Mp4•ÎnÃ#6iw ôôk|8±|ÊÍŒ15"¥/ÉMAÜy~f ð‘Ž3‹ /2æÂ5&öœ|xé‚OqÁçeÆ|èuW·wG¥| ÑZÑÑ mqüxþ àùoMùÁŽðê_ÕÞùvÂ(É b™ âH+9²2IÊßIÏ©{s/¯‹MB9PÿÚxД¹ª3[ò">— “1èKðáŽPçßWŒÙ4îׯ¨_á-Q· 3ì`o¦™ÿžÿ±‡L{¶…õ,Kv r‡¡Î¯XNª›I>„ä^Šî;f9jvc¡ƒûct>S¼B)Èx*×eOFUÛÑ0 ð¦+)YcŒ¬ð"GKó…¢5ç#N:KøÍ7cE+Yµ·G½íËÝ%V·–ß1kvA¤ÉØ]p y§«ýшa˜ÛGadFýðÆQ?|0~XsËnÛ?ìzh‚ÔÐè.¸-Ö±+ó(š„žßˆ–çADÅÃï¦uËmˆ§_Q>ú£çK¶…ÎþÏ0UÊG¬ Èûذm´ZkÚíVp+Êtø/Ò9|Õ^¡²× Š×OIü­]Ïð¶@þN1?™+ÎÉ¿á‚|õ¶ÚEû<ùj­8çôënÃÏ×;â\ËŸ/,MXxoჄàV ·ú¦ÕJ¾Ž¬TY„¬.šúTpM‹ÆÃm£'ó4•m£È" 2¿'wsQhƒµm´Yn£r7þqwîFô+.ŠÀAçÈ¿øòŸ*v®zKî6RWøÆa?pˆ%· ÞZ*æwï Pvï Ø‚Y"|´Õ©VÝ#'ôÿÚ±=;¯;îßV¾sâþ7øiwø.¬8¡¡Ü€Ev ÉjìÎ>]:Zï´Ú£H+–œÑj³Vk.9•ÑÒò¨ùåÖíÚèbÑ•ðè™n±Kn½wø›üŽ5÷+»5›?€ï–,F‹¨K{n8n™˜íKUfOýÆ‚j-¶Ca§¹À2AŒµÕ÷eLÝ8+R僶·ç†y¤ÞЗ½×¡/Kø*‰ŸçµèŒ( upÆ9.ଟs"ñ ÛÒ¤Îw†«ê×-²$)"ALwþYUs}^XÄLöZ30†²“úoÀI}=)ÿû]VCchsource.c-[*]-( Mode:)? C -[*]- basic_typeseasm|__asm__|auto|bool|_Bool|char|_Complex|double|float|_Imaginary|int|long|short|signed|unsigned|void before_tagstruct|union|enumcompiler_directive'inline|restrict|__restrict__|__restrictcontrol_keywordsKbreak|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|whiledeclspec%__declspec\(\s*\w+(?:\([^)]+\))?\s*\) identifier\b[[:alpha:]_][[:alnum:]_]*\bmacro_identifier)\b[[:upper:]_][[:upper:][:digit:]_]{2,}\bmicrosoft_types__int8|__int16|__int32|__int64 modifiers={{storage_classes}}|{{type_qualifier}}|{{compiler_directive}}non_func_keywords<if|for|switch|while|decltype|sizeof|__declspec|__attribute__stdintVint8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_tstorage_classes#static|extern|register|{{declspec}}type_qualifierconst|volatile windows_typesAPIENTRY|ATOM|BOOL|BOOLEAN|BYTE|CALLBACK|CCHAR|CHAR|COLORREF|CONST|DWORD|DWORDLONG|DWORD_PTR|DWORD32|DWORD64|FLOAT|HACCEL|HALF_PTR|HANDLE|HBITMAP|HBRUSH|HCOLORSPACE|HCONV|HCONVLIST|HCURSOR|HDC|HDDEDATA|HDESK|HDROP|HDWP|HENHMETAFILE|HFILE|HFONT|HGDIOBJ|HGLOBAL|HHOOK|HICON|HINSTANCE|HKEY|HKL|HLOCAL|HMENU|HMETAFILE|HMODULE|HMONITOR|HPALETTE|HPEN|HRESULT|HRGN|HRSRC|HSZ|HWINSTA|HWND|INT|INT_PTR|INT8|INT16|INT32|INT64|LANGID|LCID|LCTYPE|LGRPID|LONG|LONGLONG|LONG_PTR|LONG32|LONG64|LPARAM|LPBOOL|LPBYTE|LPCOLORREF|LPCSTR|LPCTSTR|LPCVOID|LPCWSTR|LPDWORD|LPHANDLE|LPINT|LPLONG|LPSTR|LPTSTR|LPVOID|LPWORD|LPWSTR|LRESULT|PBOOL|PBOOLEAN|PBYTE|PCHAR|PCSTR|PCTSTR|PCWSTR|PDWORD|PDWORDLONG|PDWORD_PTR|PDWORD32|PDWORD64|PFLOAT|PHALF_PTR|PHANDLE|PHKEY|PINT|PINT_PTR|PINT8|PINT16|PINT32|PINT64|PLCID|PLONG|PLONGLONG|PLONG_PTR|PLONG32|PLONG64|POINTER_32|POINTER_64|POINTER_SIGNED|POINTER_UNSIGNED|PSHORT|PSIZE_T|PSSIZE_T|PSTR|PTBYTE|PTCHAR|PTSTR|PUCHAR|PUHALF_PTR|PUINT|PUINT_PTR|PUINT8|PUINT16|PUINT32|PUINT64|PULONG|PULONGLONG|PULONG_PTR|PULONG32|PULONG64|PUSHORT|PVOID|PWCHAR|PWORD|PWSTR|QWORD|SC_HANDLE|SC_LOCK|SERVICE_STATUS_HANDLE|SHORT|SIZE_T|SSIZE_T|TBYTE|TCHAR|UCHAR|UHALF_PTR|UINT|UINT_PTR|UINT8|UINT16|UINT32|UINT64|ULONG|ULONGLONG|ULONG_PTR|ULONG32|ULONG64|UNICODE_STRING|USHORT|USN|VOID|WCHAR|WINAPI|WORD|WPARAMÁ xÚí=ézÛF’²ìdrLf;Î9Id+ŽɤÏqÑÈ:,%´Ä‘D;‰(s@¤`CGÜž3sÿÞïÛ7Ø}‰}}}­¾€F @”윴…ÝÕUÕÕÕU}áß#ô÷ Ç ÇuMÛmm5.¼8’ü½šLä­-3ðãtGXøz"]ËðÍRÛì¡ÄiGSa¶Ü^ÏtD˜G³Ó]ä鎱ðl"]ÛŒ’xa+=Ó/™NØÃ¸XŽXð>*æ9ê™Ùém*€çY¨eÈ”šÿg,<™Èß NWj¶'~¡@âˆ3<KO#Sjºí½¸—Xx:7_ßðŒžPg/ï7g„ëÏYx"‘³k»MÃ.{}3.ä•ܤÔ_°ðÍDÒ-soÇõÚ>FÂtôÉ·É{nÛêX¦7˜þÕbé#t^+–þO<µ¶³kf»$µÕÍ4±Œ2o¡ï%Syfßs[¦ï»^i°)žÜG¦ˆØ7X¸•ÉÙ†LX¬®ãzf)ì÷Mè ,Ê~iÇ 6Ý0(ùfÏj¹¶ØnÞÌGªmùFÓ6Ûq&ÎùSêL=£å¹TT¡{{Ÿ#6¼S4£Ü–Þ•¤dtƒMÓ‹süªh޹÷ŠæˆDòý¢9.óÍqEÖW—Ô9¼Ð6£ê-IÊ6æÈ©ƒBŠ8uú "ާv8¨f‹‰úpH-g†‘ð KEøh,I©œ=ˆí@"r8.æ1q›8  ˆ¬ÉŠH;—jœ¨ɲV.DHy¸üþç%:òò§ Ú…áaDt\FDË%©õ¨`m8P—%ËÎÆ‡+’•C!€ÔXNWHöëÌdG®¦&Ãæô€1´%+¹Ñè–Ãß^“là”cxý‰”ÙhaJùÛë’ÁCß–,ÛÉæ©n°ÛùÄjâ/o²›Õܳáïo±û"­O>á¯>• WÑÙái¦$ðÜHâïã÷Ð/$˜–˜,µsžì¶dÜÉÎ6ïyÚIýÊi£‹³ר¬Ô‡äg76Ï<'™9NÏ6/õæ¹ÎÏxG2(òœ²%“•Ûë¦áÙ{%sZ›ïCºˆñ‹,ä~OJ’ÏXȽ–„¯Æ}ηäD’ÆÓW$‹/-=S`9¡ÉóÜ•ì0µWÆs,Iͪ$þv™…'oÁ˜Ýkš%œ'®J‚Ì3ׇ'û­ÄOÁ©ãIV¤Vo9 g}Û ÌÜòT«RËã.¿&á#¹„‰š“EV,A©]”›Õ€yK†× ÄõYøë¡ °ÆÅ=bá{ÙÀ’<ð$cB‘i°^|¾Ÿ–‹'ïq ±ã ²j“äû,kž>dáÛiéÅ&ža;‹ B†„³“_JÒØeáñ´ Äåà)÷Xx:-%t P¯P©%èm· Ï ¸Oþ:KÉg®p³ê6mHƒgD,<“ŸqP0ž°PWfV¸éÀï³zÅ÷˜çûCVsV¸£<ﳤyÀ å¹þ”U¹©î'Ïùg¾™–s0ù_Xȧ"S|#©=ê 6L¿e€ Úhm‘HþU^–´o-sÓµÛ±ðþM2˜×Ë_ÿ]zͼ]þú,|Nxåý§d\mž…+'Jð/þ›…|N;˜=30ʤ³/sS‚¤á¾)ùqÏJ›ºõ îOŒÃŸ†û„û„UMG¯7õ(ýèÀ]ýÉ V+cªÕʾIô2Ãà.£“cyßHTü2As³“„ŒŠ„Dèl‘e. 0£ÏFÒEó¯‘e6Q2V`ç'3€Ù[i5yDÄ‚Wk}âüY?xĺ½Ì! áß»RÁ¸Ó)·Ýd¯äÛ†¿™Q \ö´z]צz×?ÔëN”øˆDáY¥³Kè$Ë­£ƒî¤§ðð²(HxÀ ÜJk!jzrtÔ f$aãX¼"D{„¡é( ë©P’(ˆ ¨ MHQP‡J‡¼t”°?)îG…ô"¼OE`|l¥Þ\¯÷Wž46h—%x˜¨7HÝï¢"ï”F¡¥²» T¿Ü:•Áš„ ádQˈDÈë=¢‚³¸’†Šº–õ£C‚ü —º}(ýÑ´î(f½Jpe î> íKvØ¥OÄ95ªiU+;][ Ýؘ¤j•'êu=µeˆü¼=¢hߌ¨{×#©ÜÓŽJ&É=âÀ¨žç§‹ÅÁ…þç*¡!\Äsé¢_Ä¢EY…ñݺ/DÊfÛµÚ±já#£>t·F×,c34¡U&rµH ³ú::‡êº®ËJ2ÒZSxYfìSýªt_†ÂÉR™‡ªTDYUÐûùHÖ/Õþü®‘ËñzU,ÀÀEj†™_Mªô"þï"Ç":‘Ò¢?ú”9N~·¢V©6Œ‚"}·n/j¹m³á›]ÔŸÙÄQmÎ3 {( ­6èÒ\µH•HãáqI9ðù„rkT¢ï`JW¡ÁŽ'Äþ?’ûý¶‹gFD"Û¶mõú®à;úÄw-;å¾ÕBޱ‰ØeøZöm?†ñn‚MÏÝp;ÀÚ ±c/ºCßè˜Í°Ó¥Ž|ÓJ gA.ÓÀL•%žÏÏ–É(GB§¢çŸq»­iW¯ÄUÐ5Ôî|uŸ ü\Q‡y0ë-~Ç1Ù„\™ÏA• õî:ÌÁMð]„•ÞRsèYòK­/.¿´¿ò†CÒ*;­9˜!qX# tø˜\½Î‡†ñü…ªúq uÄ¥=KTÝI±éÑNÖ÷a¤MG柽 ä64¾N· 7Þ*rxB$Sfü’Qz¨Ðiñïm%|ÆKÑjϲQÅøPß18É“ÒÊÖ±hQ]ñ‰a<ì•д‚÷‘àÒCx'Á…âÃieG½]Á²wF2äEáQÌż¹Ý¬Ò6W2û¿ÑýˆLB4xû¯—ñ?Yy ô|¤ô¶ÕJèLQ‡èiΤÏÎ×'ô2‡çõ¯4Ç jãÑ!ó¥t«“_.i9Û`èµËl} ‚E"zOöÀÄbÒ ÍQ/#RMºx93:a+xè¯IU; ϵeìßWbß¶Œ®ãú ™ÃÖd™¦cJ]qÂè¼TѣЅ ’ {WI˜å´ì°m>]ª2zšßœÉVF’àߤª¡FÒ ¹y¸…ŒÉðßOòqZ>é<=’É‹ñBhJ¦ƒ˜1‰u—ì Ô öͧCc“ÖÐ`Í×(o)Z5uaEðÕâÁ•8`éïe—ŽKP»å§GriÙÆ³'~"EXžë8­+ÚòŒ„ÖG©]ZR·ðÅ=ô;ƒxjûñóeÈO˜dÜ™á$ð£¬ÄÇE…ª$sù'ÉüAI¦6œdêßžnüæ' üAIàäpxN•HË—a‰rʤÓÐ[X*kyfÃO2¸O,'ƒç¿_2xì0epXÃá'Ùܧl^N6/ý¤sM‡§4€vHeä÷BÄŠä¤r¤ØùéËDòãXR‡ˆÔ ÊghHÄì¯ vý­Â>Ü˧®å8{èç6JîÃfMùLá–:u놮ԖG¤&.NÉ¥\lר’õHºØB?½îOf¡‘[zú"²Ì%^iü9¢¨ì/RÒŠrגTþþ´ûµ‘¢Õ¦GÕVÖ³gëNAåYdóFŠÈÑÓ \op–„¯–ˆf™èpiÏÄ›s<¿!-,cËz14Ô‹( fûË2xn1È3þž»… 8È* UågJJzéëÙsúÒ>“<ŽFà^ˆšîæ^ß ´²õ)äk~Ëp:hÏÌrú ¤‚jÄÙMÍaÉlv£ëÈ‚ÈMM¯]G3lÔ´xxš¯ê;:rZZêõuÔÒü¾ƒ6=äÚ6Š£W³zÆ.j£P³5 žt´…AkmR$2=ψMb«g"Ût×X»¯§#†´h{}´Ý !¯Û2lÁ­ŽyœØF,Í #°«Ú€¦fj†×܃8–n7ÐwÇðÚìÙèÀœ_ăóÓ¤Y27¢âà½ëã—Ñ+ ´ËÒ&Ä2ëÈÕ| žó=ö÷ðÊ$»¯¹;ì…ç>䱦fÙœˆ>´5Wkm¡n”Èð€¥@ˆæ`ÏPbI„× "SÒô9\Ï4xá͘ ”RW#;­¡bvLO yÐ XD×èõ vßëkÐ!¡Že›Dô@\ûFË„:s½bÖ3ÆFÔkÛêZ’æéáÕ‹}\X_ÃM áJ×éM, PK#¹q·£óüÑD&‚5ꜰ‡ú›†ŽºžÑßD»4GÓ6œ-Âgœ ôžf> ».p$s!™W#ñ4–¯þ¦.Ãr»MÎcWk[ÛÈhú:ÆQÛFÒtÔ˜ÛÅ;]ýÚi%Ä" 4èƒ9k,ú솷&ÖLÍëh­DMìj²¯]Š#Qï"«L,þÛ×±¶ˆÚ”ÜÄ¢ÆÙIÄ&“›¦ÑÐÈ=  ,ÀjB†×…t|¼8 i$¹©}×Gæ¼jÙ.8& úÅ탆h[=Þr´–×õuöSpq¨y"6ý™»-³ ˜ijÎ6"ÛèB:¼ƒÛM˜ 2é­Û¡iC•šËÓ Ë7Ù`5Ô· ˆ£ú›õVÛäò@J±¸WB¼¡x˜LyDˆ©¢A§´…¦ßÃú‰ær#m†C¨æ¸JAÓj `fœÏÕœ.V¦ E5¢rM|t¢]ÔX"t'E¥ÅcÈTr-±~Å´GêTñBT±x`{Èý êA»è]4ܽ.yG{€Ô„´€0ŽŽÌ' $74—‹ í¹ÛX]YË0k (ûe ªÚ"¸QM›· +/%󃎠9è¸^L±µc9Œ[|*‹tFƒìc“Ÿ®G;´´žø#p„¸À@¤ØÿiD\'@ƒhms°òŒí«` Ú"Ì Å5I 4âü>æ,:ybÕÀouøÅ®lä³®Æã6Ñòµ™O>)lvžÂèEË<¸ pÙ÷ÊX+’•-Ç´ªO ¬F°îÏØã§Æ”¨Ûƒ|/âÞù$óˆÛ+ñî¤Ä;²\—±BÍÁw³8H@¤ì*>þÐøw,K”Ž¥9– È rr£–j• 㡉:¯[[©Í¡ùéÊêœ>¸94Z ¶G7Än¸ÈëEðó‹•97µ¥™µÅå%òPY\‚Xòq©F%ˆ€ã=[ëÓ¥¯6ê;šÈ32nÔ[œ×žÑ*Ñ^=¹`ñã[Çó<´µdÙË}Ìtm-R)[œE[÷¤ŠétƒÍiÄM à}ªr³Úz=Æ)e$Þ7©Èy9±~ëF}}C/¼+/r´›—Ü }ª¡¿;#©ƒMLÕÐ@çÓµF“0lh¨ ¨âšÖÕ´5­R]ª6”Yb“1ÐÁ:)#¨ÜïúYþDÎó1¡%ÛÔ¦® ¾šil‘®ñ³üïÛ.Ý~Ò—¡ë.²:¨Q%®!¶ûÉß±°v6±–;!ð•ç/Eœ_ªÈ{H¾ ?Ïþì䟋ɿ¡Ø‘r>C.ÏŠÅœNb¬Üêzc`Ç„8ìJ V㡇RÛl%Çæ‹¯'?®‚-‚ËàLâ®þ8uç³!Š¡©Úæsr»H=gâÔÈ©®±â¡N^WCÿ.ÖÊór­¤šñ *e,…m´ôC¨“JàßÅ*Il.‘•Þk ö÷rú9~J]ÿE|M¿¦ˆWm"ÝPÄÿ]¯Úä}KSÿ/Eü´ÌxübC*ªºŽâ“°²}!6)0à I©NXTÄßϪDW:·ƒLƒT˜¹JpI,ô…´ÒðOqÄIÆlÎÓmt/ h!»,O«ŒGZL#¾¸†!eÇåcŽÛ0 ã…iN×Àž{ņ®Çzjm‹8Wıœ 0èh‰eiùˆ¾¼oDEˆGsM¢ˆtn½¾3™/è¿¢Ù½X„?Q ˜ë`gŸâÌ”*Š)d£ó¯:€‰RƲw9’iu÷Šž0(¹ÇiÐ΀vK‚–s.WLÝ«VK’½c9µ=Tõ(PQ°2’!Ž/?q$¿ÿŽðܽþÒØXÊøÄ‚àwS·àŠÃSƒn! BaCÐï›-¤RK’9¬BÅpýñ­Ð?C—61‰¡ê/ » EÅ÷j‚Ùï •–6T$z×*ˆ·k ˆOÕÓ;?Ù$ù|oÖâvþ À_Pסæõüe2gà=“Ãh^IP9Œ¥âß/T½Ë?Åó¢í*ÖäýZ,a{ÊqKsZxF•¿é8þÒB37Ñ˺Œïgí¤0°j}mº8÷›*MHaÊ:I ØÇqL9<“fðË‘Œ>&AéeQ|@³úÓ³Í]Çëæ®WbO>·¡^0§ðærÇþ÷ÛqµÏ>— Ä¿òr9ëÀôzà>®ò0)yAd–'©Úp°\´~÷IÃLtŠ0ß äÃЛ×ñì˜Ú0t]×ÖP•W·Öñü9vŒ¶]`Øx‚œËºÕhð[2IÅöë1e)žXµÂÜXtFž # ó{pRÚ« ‹ôDÕ÷Ž×FŠJßð'«Ê>Q¸ìÿˆù«]ÐvÑúú…Ò'F©3]šß‰) “ýÒT½=‰WphŽÑ/O‘› ˆ¢i7&ÁEÒL4•4‰Jú‹œÒµõÎüÒìÇÏ]z‚*$Ð×ÃÚÆÂWxq¾ÀnR­"šóÛÓô²ç;_LãpéÓ}/æ¬OÖo¡üÕ'àrþÎÀßG8á˸|ú)\nÞ¬G‡ºUõr¡nFØÅ¡ÙNоy ¢>Â¥ ü³â<+Ø)–Xçob1²·0žèST?UÏ?€?Ø—F¡£ÞÕKè<:ÐïÑ©añŒÎºœ@íËi‹ZÐÐÇéEþSè:é·åÝ€pÿ`x{©cY9ਦâü(•®x½°®c!µ‚ðÖ+ú¥+ð\ñ·®ÈÖ‹ò„>0óOçÍL>Þ&m‰aÞ‘hBÒ$ŽJ»æ(Z±A”½‚Fø\—°é` _(úŠhw `Î[0áê@ ?å­Š*¯Ì9œî&ó„Ç4ñù.íÞžìBûé~b þùy,ù¡5­æ³hZE™vì[—-›~—`ªO=Y61§ê´¶‰íC7íï•´¹Jì§\%¹ª%MÛ&|ã§±¨ød*Õ‡¸êö‘ òæÙ´(]ÑJ564ÏM<¾tî‰4n­Ãˆ•Í“å{ÖÜè¿–ìUdÚ©~³07øÇÏᚥéп!òýüDˆ¬œäS3¾õ\r;%ºI¼àá²2tGñçÀÈB:“†ÂÜyyiÊVP‰Ð¯¨+fLÊÖÑI"gÚìžc9ÝB¬x?»<PÍ÷ ™L«:úù ÄÂG€(ðBøeã—øºE†ï«Zý×#鿬á´ME|7–z=¨6Ž¥&¯/$8qóÔE…HÖØ ]Š ÙùqÓÿáœþ³…é?™NÿÄÅï9&~ô(ýè9p¡0º®à fÌåï ¦W²0U öÿQÿDÿç!Êø‹"þž"¾ð§=Ÿá ˆÁBü]Ùëõ:Z7šfÇñ‚íúÙÓShýBéòYEKÈ®_)}LŸ§Ðî:]›KÖØ¢Pxz|å ª‰Ïמ胟‹å‡ Eß4ý–!Ï}î.v·ÆX8èrl9îŽSJ’%ÝÿËž´©]ý ÞXWoOÖ?Ô§Æ ýÆÇ:–i·Ç4Ãë†ØiÇ{ãÖÇ/ÔKc“g7& ±®ó»q½±Q°lÈÕïXÄÅ1mÚ¬{t矦ÑUÓ¨>Aï0eJÚÆÇzàöÂ#jÇj›„%e 4PãcøSâ–‚†ónn¢MdÛÈFQ€¾FPmo¢mm£Møo‹0ÆÇlrÕ_/OJ__Pߨ˜¬ƒ8½ ­·-7Üýbv¹fÎuæ»wŒé™ÖªßwÎlèŸÍC"Pü •Ï€“ŽÐêÛ0jGλ,¾Ïj^C!ªéSÚéü• ¼ÏKl†d'¡ô[ûþfašæüõHÚg¿‹h_)Ú5Åü³óÙsÅR•ùqV™‰ÃFžDej†ßÃ#ë~¯Ñ@F¸¨éº6jÜÆWÜ Qc†lÞÛEôÈÔ±]#@Åž 0¼=ðˆd»Nù›ø(W¼<Ülà »Ùv­6JÛúZø€³7ŽD؆ ‚SØ e… \xØ Å‡,ŽF= v#@<0Úm¯Ïƒ¤a›‡ævŸÄ°Ûø¨Þ­–ÃnðüÜu-œÝr,ÜឞܹpC®ÐÔqb¼]i ¿Âyúäêv: |m×ÿ‡;¹qlód-<>†_Ñò|â35qBŸÓÚöñá¾x [²ÀFnšðïù%|ã'ú_qõ÷ƒMÏᩘ>₤G)E¦avåg)ë´LáÑÛa´&#¤LñámÆ!¡„B–8A_=†k¤²‚‹Wixù ¯^iPa¹ÆB’ ä)Bž†m>‡C84úÄaÒ§rœ/Lf “9ÃdVüÔ ìˆåuÄâ:‰Ò:baDYDQ¡¤>a~ÝÁMÏØoÂÁ;¡RN¦Š]ж¤ "‰C'1× .^¥áåK4¼z%O¤{Ìøn' ~ü¹ütuqnimåK4½¶|Ý^^®ËÜôºýåÚš™®TnOÏ|Žff¦W½,W–WVææáfiu ÍÞ_^™¥×ÊòÒzר®­Ð;@–„W¯ ùÊòôZ˜ž™™«@P™'©¦—f+sháöâÚÝé*„+µÕ´@JY­NÏÌáû¥{ôZY„fj+«Ësvþfçf§×¦áfnõs¸®,ŒÙûp™[Z¸;·6íD 캼ÙïÌ..ßþ ÂÊòíiÀdayr.|¸IÓK¸ÐÏ羄 ¼®,ÏàTwç–jH€xwy¶FÃ¥Å5ŒMuº2·<[¨Î •¹ÕZ [¹ƒVWÕÕ¯ÐÂ}R„K³h?¯á Ô1\ip–U¦—î,Î¢Ê ¹¬}YC•;+Uü„y/Ñ ƒo 7pöêôÊô]HÍB€ë´RjnWq¦êÌ ï-cØÕ™ûô™Vn¥Ê*©RÅ8Wª´Ì*Mò²œ,ÍϘ@‹¯rÉ¢hT‰0QXù¬XVj5–©j,TU.UU.VU*WÕH¢8¶UR‡å*çs•0ºJ9]¥¬®R^W —)mÕˆ³ÕˆµUÆÛ*cnuòÍ­4p»bWï,ÍÍFµ%±º°¼­.~5×Àatƒ‹X£¬Y£¼¡L©Ñ‡ZL_T‹hªQ¢jŒª#«ÆèªQBj1Mµ˜¨§ªÆÉª1 I…VïÓÒiêù-¹_i06Ã4‘ÏÑêÜʽř¹È÷Zm5zK€1"9±”LJ%%/¦ŽÑFIc”1Â]”¬˜ª˜(N'©¶{c¶²ˆRœj«KˆÐHI„– Úâî“v“×âóÂݤ¹ð£±nmú® =ý>òÛˆ¦á Û{I.3n¶¾[îtðaáø¶x›8Ë=ÃMx÷¥âv­–aOƒYãQ4n5ðæ-Û\‚ÙÙ*ž£bÁàÆ`fC˜ãhÞÚË’\qü<6I7,¬ºØ$XCãðÚ~rÍ»¡7Fä Ølh;œôŠ-NLÜÅÀìQZ$,é±Ã·­nWñYÄË««„øq ¯Z¡UÝÜóŬU:ð¶ q†½âOô¤Å‘¬Í0Á+¦O`³G­bK—2!¾%/ˆÍM*du‘ô®8Öà˜ƒkêkx3Q³2c~ã*»ÞÀ7+`}zmr»J¾ÅWht‡å’[£ÅÖh±5Rlͱ0ãyH9,>à2Ù3»mA%áÒ –QØ16lG‰8šº”A‰'ñõ}üq†ÚÚüÅ««µùË—øÝ5|#´•wR-‘b'G'üîøˆìîàÙ|ìYú ¶owðç#Ê]ÛmÂ0‘ªà¸?pzrCðÿ™3CSScsscss.erb css.liquid source.cssabsolute_lengths(?i:cm|mm|q|in|pt|pc|px|fr) angle_units(?i:deg|grad|rad|turn) combinators(?:>{1,3}|[~+])counter_styles#(?xi: arabic-indic | armenian | bengali | cambodian | circle | cjk-decimal | cjk-earthly-branch | cjk-heavenly-stem | decimal-leading-zero | decimal | devanagari | disclosure-closed | disclosure-open | disc | ethiopic-numeric | georgian | gujarati | gurmukhi | hebrew | hiragana-iroha | hiragana | japanese-formal | japanese-informal | kannada | katakana-iroha | katakana | khmer | korean-hangul-formal | korean-hanja-formal | korean-hanja-informal | lao | lower-alpha | lower-armenian | lower-greek | lower-latin | lower-roman | malayalam | mongolian | myanmar | oriya | persian | simp-chinese-formal | simp-chinese-informal | square | tamil | telugu | thai | tibetan | trad-chinese-formal | trad-chinese-informal | upper-alpha | upper-armenian | upper-latin | upper-roman )custom_element_chars`(?x: [-_a-z0-9\x{00B7}] | \\\. | [\x{00C0}-\x{00D6}] | [\x{00D8}-\x{00F6}] | [\x{00F8}-\x{02FF}] | [\x{0300}-\x{037D}] | [\x{037F}-\x{1FFF}] | [\x{200C}-\x{200D}] | [\x{203F}-\x{2040}] | [\x{2070}-\x{218F}] | [\x{2C00}-\x{2FEF}] | [\x{3001}-\x{D7FF}] | [\x{F900}-\x{FDCF}] | [\x{FDF0}-\x{FFFD}] | [\x{10000}-\x{EFFFF}] )duration_units (?i:s|ms)escape(?:{{unicode}}|\\[^\n\f\h])font_relative_lengths(?i:em|ex|ch|rem)frequency_units (?i:Hz|kHz)ident*(?:--{{nmchar}}+|-?{{nmstart}}{{nmchar}}*)integer (?:[-+]?\d+)nmchar"(?:[[-\w]{{nonascii}}]|{{escape}})nmstart&(?:[[_a-zA-Z]{{nonascii}}]|{{escape}})nonascii$[\p{L}\p{M}\p{S}\p{N}&&[^[:ascii:]]]number5[-+]?(?:(?:\d*\.\d+(?:[eE]{{integer}})*)|{{integer}})resolution_units(?i:dpi|dpcm|dppx)unicode\\\h{1,6}[ \t\n\f]?viewport_percentage_lengths(?i:vw|vh|vmin|vmax)«4xÚí}‰ŸGuðZ¶ñ…1ÆøÀƶä³Gr¯eÉøXÇ^ƒmaÂe0I€ÝµSÓÝ3ÓÚ¾ÔÇîŽT"7¹C¾Üä ‰!!  IH>rA€¿'ï½:ºº§{¦GšZ[ûûíLwÍ«ë½W¯^½ªzï»KâïuòûNÅÑ‹,·K3/ñð•KÕ¿›& ã"ʽÔÎòqà•ðÉï'à‹,C;ô\Ÿ•àû:? À/–ß×ÕÁÝØ)B/2~ÉLP]ê¥òûõuÐAÁsŒþ½J~_[‡õÃ$Nú/k+tÓRzY {ùlXÝØ+fÃQ°WΆ=ª`®’߯­ÃÖ(öêépºWO‡Óm|M[#l_RAþ5µo ›°¡¦ª¼¹– )øÔ‹ \ÛÆ,*G úº™  äúhžÚƒ"rrÞ×i4 X—|}`áä÷*ÀýÂr?ÒðFoì˜A7ç¦F„7dÐU¼¡k]ÇÍ]sè~ßÒ5‡oìšãA•ãÖ®9Þ¤rÜÖ5ÇC*Çí]s<¬rìïšã•ã@תwtdMŽ;;VqD3É]]sh&¹»kݪ{ºæÐLroךI¬®94“ôºæÐLr°kÍ$‡ºæÐLr_ךIìŽL¢‘»Ü±Š£šIîïšC3Éá®94“<Ð5‡îÇ‘®94“íšC3Ƀ]sh&ySךIêšC3ÉÃ]sh&y¤#“hT=Ú±Š5“¬tÍ¡™ä±®94“|_ךIïšC÷ü‰®94“¬vD®ÎðdÇ š©ÞÜ1ƒæ©·tÌ Y꩎4G=ݨ9,p¯gj“¦Žƒ8µ™{Ö!^Ú¤%›/Ÿæ¬·Î—Oó׳óåÓ\ö¶ùòi^ûþùòizû|ù4½c¾|šÞ9_>ÍUïš/Ÿf®wËïò5°ÉsÀ5w¼§¸fŠ÷v×¼ð|'pÍïë®)ÿÀ5Á°¸¦óu×ä}'pMÕ4‹Œ8DSÝbg³¤éå÷-Uà4Î20¸^ƒ”YëœE³ÂzcÜ8d†Ô+kØè®KA~W ;©ÍâîÅnðºüî¯9™uƒ×¬Üï¯yÙ鯙Ùí¯¹Ùë¯ÙyÐ8•SæúÈq vÍ¡i0êšCSÁïšCÓá¸ü¾¡’ÃÁ"ÓÀ¤›] uûƒÆÖh°R6”v͡눾2‘ª,>nl~àY¦ÐÔ†%tÒZ7äD#‘µÌ>QxéØüÌ00¦òûº6ø4› ª[‘7J‘ÐB¶Ó€ï¢¸.}«ÙI'^š×;¸Ýˆ¾$ó 7¶€e™iCÝé­2î­GÅÉ.ÐzDœê­åï­¥Òé.ÐZ&}¨ ´–H?ÒHËÔz;Ié´¸Æø5¶%-Èn÷c×àØï­Ëþ‰.Кš?ÙZSó§ä÷µÍÐe“?,¿«ïÌ <'Óî§§ÃéNýÌt8ÝŸ•ßUz‘ 4û¹Ù°ºþŸoÔX6I½ß$ ~¡s]Ë/6¶h‹5™Èi6¬.÷#ò[í×¼ø"êAê×_–ß—é_³œ¥¹úùÿÉo­›DC w>N<•ò+u½u¦R~µF¾ú–™‚û5ù}gì})°_—ßW•`j#Kü†ü~u ¢7°ÌoÊï+J±q¥~k²½Y¤`>*¿//a*mýíÉ2ôfŽ‚ùä&Žúùwk3üLC.AB i­@o²5ª[ûû“˜S[5 äjÓ’¹U„Sƒ§ÿP~¿®Xì+)È?’ßWkHcF}¬&_&Ì ðk¥UÌ èO–ªJDÛrVÁ|:üDçÿ´Æ­µõ”û³°-%]^š(* ™íz¢†¤À>Qï¶¹$S@Ÿ¬±KúJþyMˆÈÁ¦uäTûµQîúPufvô/k¨-·Ø_Õ„A}Y à>%¿Õ¦è õ@?‹œqEøüµüVÛUª;Šs6:RNåùtk'Uzù7µ6T•sõ·µò&Ulùw5$ H³?Ÿ©—8ʃWGÔgk|åƒ<"ÍÒ>Wc˜Š*¯€þ¾&/æ£J9Ÿ¯á¡ª·+¨/ÈouÜÀœe¾X«ÄP¸È?Ô£®î+¸/Õø¬¦a+°¬Õa¿†ž/׺ ^ê;µÁù•Z}06à–:å¾ZÃuE“W@ÿT“1ˆª„Y1‚É7*¥ñ×êuWà5Ø?×:RUkÔ¿Ô P E¡Ñ`ÿZ+ìDÁà{n…k¾^+¬¦ì*°›Ëâ Ó@Þ¿×æb­S*€ÿ_kTUEUPߨ ´jR üGm®TÚ¤úý?k5 ^G冢ñ_µ†ç +=ûï[‘ïÄ0¢SP¤4ÐÿÔ°TD'Š8ŒWØ7kCÞTVÌ·jâ¿AãT ÿ[+ÎÔÌ·kÍßò"¦/Q¢úŽüþ®ü¾¨Æå¡—³e©‹,KÝpÙÉÔRœà÷Ï—"ò÷ZÒ¿P«ë¶ÆºL-³^ãÅ-%²%ý?ZÒkÖÿÌ^Ušú˜zP–C“[.•Ú[ xz=;hYOöLŸ§kØW«J}[å°§î2rq%¢ŒÒ°Þz9w4´Ôˆ|zÔÅ _dLõãjúÇ[ VkG+./7°±úøcªN¢/Õê~CSÝj Q¯÷r³^ÕˆõSª¬{¦£†t³å¾7ô#]p~.]j¬æô¾š¢&‹B¡¸»ºTC¶ä¥®Üþ­–ôÿmIÿ«–ôkIÿD$Íýk¥¿ZËñ×OÏ þkUÝÜD}½<Üm1Q?Zi…X€Ö›pÉYÈÆ.4ýÒR»»xF7+c@Ê&ËÞöú›~ns;ŒOÂgl÷VõÒ¹”V·H«»fH+UÔÙIªzíûå·\Á.ã,¾\*\4ñM“pWTpw™’õSeŸ/jéóÝ íÎ<š‹—+ªä´&\µÔEЙèk`WT¬ÑìÕ˜µN=¶Ñ›` z¯\ê:_^U-¾Rzã@ÿû|ÖÖìõíµõäÔ;NÃÇ;ñãyüx×é{îY{am…eŽï¯lÀÇé}}têû:½¶=_Ö«|}}í|\môz‡¸½JžÈì“o¶?¸À¢w¡µ{Z©ë°*öó±ÔpëÆï¹°"O%õ KS&˜W™ ŸÔDÝé­÷­+÷ßµê¯x!÷v¸3â©ö •SêÖ6ßñ-0”ÀÛ)pB†ü‡’œ'Ovø -w½!Gs?Çÿ¼H£ò§Œ‡YùöìI¾ùìI#câs7âÝ$ú ÝT,cØÏ÷ŸháÛ¯µ¤¥%ý¥=*#nš_F\z¦2¢ ןé q˜éŸÚ£¸¾y~\ï;S\aâèçGßÜ£8ºm~ñ¼Þ6f¿Ü’þí=ŠÓýóãôU‹ÆéW[Ò?ÿ ¡Áç¯Ï×{ §ËK{´áwŸÃ‰àWö(ŽîG/ZhíUÜõÎ!}~âèÐ9È]øëå íó`Ì~y÷š@ì+ò¸´ŸÞYC­ÞÖ®žu­böå Æ<´‹Ã€þôfpÊŠÜåê~EÕdÝ Ám‹Õ½„øGæG|gãrX=ïŒuú{\ç´ò8á©?å¼çyòÀäOž{)w‚8ó²ÜÆË|’j¤Þz»4²š_ÿ[È,GËk<ÀŽ¿BûA,e}ß±ýÈõØ–aièE>‹à±ïECøðä°°»"ÕñS'ðh Ç9¾i»žã‡,o"-Ûý”EÎH&Ž<¶åEšå^i2‹xÌE9ÒKc*¯,Ëõ¶XĆ,ÅÚ]?CÊ©g…Üj`=’)TŠ—ü8.É<4ôât(š?,ŽCsŸÓ°ØáãÈë§Þ6eù)T1ÛOã3àñ8KXäež=ˆSÑPâG"ÊØdQÄ\FO9Û4KS ø8‚ö ø8õXdX4,‚²ð2ù8kIUÕBzÀƒxôK$TŸ|+©*†©çmê·Rþ–Æ!‹¨((˜á©ÆÑ0Dá˜E!Ká)Ný1VœŸù2W應íŒü*¦*©le' –zð³ÐGÐÜ Ša#†ÔÉý>ÈQx{Œ“…WR+…Ã(5°!ßJlˆÕñ&úßãQ™ÿ®âxüžT]Ûí‰ôúR*¦QpäDìºçRÚî5²<>?Y.;ÛÉ£žþ–ô³ÙG9ìg®ÎO›+M›.ün¦ÿcKúçZÒ¿m6ø¦rãòÃøAÀåSnŒâÛk£X)k©—x9á8«©lw”%ã5Dy? –‘‘~ÆzÎVRì%îzóüÜuÁ’·Ç-yoYjùÛóMåüÞ…ÅÂ…ÅÂ…ÅÂ…ÅB§¹ééùç¦ùŒ?Ë¥>àŒÀw¸°œ¨$‡Çl ’ø;ž¹ŠØßF ‘ƒ®–·/!f‰ËiGÏŒˆ»K¬Ï.MýÛ·ð­ó3àOŸ:§Š½Ww”Þ¶‹ gWœîÕ'o?p·WMïœwg|Zg¯âèÝóãh¾ Wí«À„›û|”|´Ý7æÔú-[µ(B?\åÄÆ õ¥9è^=ãúžù‰´ð5ÝËmRz~ÿl©½Üpýøwá8ý¡ùqºð»oIéBƒÌOƒËÎ ¾='mº™Uó¹ônÙ|›ú"³—J]?xG¯ªìʽï½Äëçc|uN˜÷Bå^½÷Âü´9ãÕË w?ÓúJ:q|~öX¸ÚvVlpcIL–s±iν ð“ÌÜTìÂÖ})]¾ ?ˆ=x:çLÄ0b“4Nè[0€“¡8$¼y6šôùh¨rfúÊW ó³à/ëçÕø_šS¢íU-7:‡³Ä¢pýï-éŸ1¦ Jט;½.N+[]+ž÷Êo.5ÿMØ Ô(éáó¾W>Fg»|¼:°´ïç)KÇvyjP{®¬ûF—g°ä ¬ÌÇð:<_[÷B“×£Ùž5ïžÞZÙé¯^ˆš¼ýÄžï.ûAà Y°yÛy•n™tø¯Z9ÍÝuã¢ßµ»wì…î6±ÝÙù´ý‡)%¿ªQX-Бä'Í ¾£…ÎNïJé¡­tôŒ.žEš…nÙÐ+›N!/Ðê…> ëmùŽ¿X#´ÂmßÍGœe‰çä6g‹yâïxxîõx™™¶ï,<ßçíôV{<Œ£Ø¥qèñ2Æ÷®ìñaê»AÈM ‚ý|âQ«&¯È3=(·] ˜9«¨ Ö Í'ë&“;Fiæ%LtzV¢wOZª·ê#é{°5WYÂÜZŽ…–ûg³˜9”¾kÏ̃tcÇëNˆ÷ sŒçgŽWœ_½SçGÿ¹GqtzqD7—Bƒ`¢$‘KEÑ·Õç$Z´˜¹ö®íàGæGó|{^S¢oXòêËyPK‡u}+kö¡ ¼Òƒ:Ȫ2’Ä4ø¢$Nòí\¬Z÷Ý슠©W*« ÷43ÕµºÊpå.TƬÙÌ>9k¹õ³Œ›.Ò܈±Ñz®›©ëfHȬWç2µjv=XŸ8Œ®”UCŠÒÀé¤Lk%”KŸz9Jª,˜êÙã4êùaR¿4ucl(Ëà5ž1ÕvƒPš²0œ6´~¬réêë4ÇÁ*[¬•]?K6–‹ã>s6‡äÏŦ%0—Kç$ÎhLsÈ Û*ž·=Ó€Îã„9~>æN‘fÝ(¢‘Êý™-?óû~€€ýx¬ä'1!Ý<Êðŧ.IA [!KAŠØ”"Ÿ±6´šØ£² sérÁËw/÷„ä›h‡x¡¬[€Pd£ <6Œ¸* kÙù¹'ÎòBsSo;1×/2 el¨$Q|SR°ÁR´^ØÝØùsãm®"?ŠªDPW’ ø(2êé®”j¥×r f/“€hçÞNnÇÐ_@í65FO?Àê=Êð*˜ )&ÉÒ3¢4ÊU¥¢ª,{Ì)&¥Š0•XŽ6{;e‰Î…<HaIè` õd ØÑåì(HÀ>ÑRâÛìžÀ¨ù«™I .‰ÉÞ`ãdŸ7å`DqhfÃ1ûƒ±^·^ž—M6‹ÀjˆÈµêeÑM?‰´’R‚Ša ¢H0‰Y€â#§h®vVoÈ‘¥ŽÊEș̔²9KìÅç¬aMÙ8.òŠ<€]8N´ì§ÛT÷ ³Ø`ø‚‘„Æ1d1u™rcÐ;ÛïÄE)Ø™¼´DèŽ- gœ $I£eª™ædª‹D;L¢É7ãÐf’ ñ`y9gHV¸RSZñ‹*“Š)“Q´šU× ¨KšŸ`°JÛ=³eW±Zû¾ë›¼;QÊ J`Ws˜iɧÉÊÖ((©L¯ À† ž±@©ÞNéUޤ rÓ@ :0»ªÜâTE 1*2½Lày\8#›‰r©àžm³3ÄÉEº¬š‚? Mï„J¡:ôÛÙ"d5µ˧%²5 û4FÜ aäƒ(« ÈJk„ܦ¦‹bUçK²ÈspHö7jÔØ%TÊiQ ¢ÌÆòœ9#<+*j$)Y*Ñ0u5Öœ”b)‹F(aIy Œ¿ ÛãÔÅ€²T&J<@«œq“0OÁìGÚ6‘Ãõ(…I"۔ĦvbÅõ¾(F„YvAâMÏžP)4ÈNSj½@Cð‰L(*ÍFЖMñÜg™Ÿ‰Gƒ¥Q„ ª ñŠiD;ânz`Ã…ØôV¦‹Fètн4õÄŒ© 㤸)ª 8õrgØŠPò+÷Â43Ç ‚LÎ, Î ÄÙ–P÷‰ƒ §$-eö!Бq_åD–ª¬Êü†7øÐ9Ð&y´Uªé+îÇÍŽ/Ï=PM™ÂĘbH£ldàìQΞTÛ¦—FJƬïƒzŠÐ.!MA¼)éPT/5¦dÈú¶cŒf(þ0‡µü¥RI¥RªuKi_ÔH4Ò`à"±D9‰É‚0õ8( Üx‚©×åR“@®RÌ1-’8 !1ÇMµÿq‘:ÕîÈ9÷;lÃîN5Äùè"÷«€5¥ñÕ¸#(4ñƒ +È.̹ñ.8i&¹À\/~œ2ˆ  EXKÕóöƒ,AÅ„­H…[ë6LëÐ^Xƒƒ.)ZMVÓZ5•ÁÀ«¥ñ4&]6¦¥¤£±ˆ´VÌ0PGlˇQF5^qTUR`,• 1&pz‡fšYð‡(½W°j?°¡Æ´,/_Uçäf0 Ç;ãdä¡Ö¯ÔAÑ åz‰/†;¬§@zxܜѣ~–,ˆ¨¦Nu¡l¿Ù7BF”²œôÄmÂ@W’VâZ_†9žü’9™Ë .QúˆåX[hòþL2®¿’÷òAtºtåü–¶nÛ°ê ìÔ[hèÜ88ûhѼ[õK-ÑÞöŽ[¬ƒ?¹4õo_½‹ªšØ`¿FÙ9³ƒÖcâÜióDLÛ>Çí ØfBÑAAcÛÎKý³Ù€öé]š Öu°®ÃÖÔ¡ ¸; »usZ§ ï«Ç2n³òbŽA´ï|DÓwÊÌÐã’ð cs¶?ç Gln´Q­fÜz³Â«Ì ¯,+\»ÿÉS½¦àïîÓ;!k¸o‡‡tWw„o¿5¹÷°ýèúΩÇßòðé š[€–éaÒŸ:|Ú¦‡§’"ýéGdú±jú1™~äØ13ýèaYÎчŸ®¤?|ŒÒ8V?S:<<]I?zL¦?x¸’þ°(ÿÈTÊyJÖ{äØ3f:4çJúáJ½Ç•ðÇž~ª’þô1™~ì˜Ùž–ž9&zc;€ås€eC¥QÇJ¤»NÒar6”»–5ñô‘ÒÏ%ã¬ßû)¨’Ñ8ä UáùMܯ кˆê*ÃÝ2Ð&™X²®ó>Ç8}ÐR¢vmÒ}°„à5{’©`9pa „Lä`y`°¯›qiã°6DmT¨¤ø/,’ʠ岜Ñ îºL»ð+ÐòÜA„»#ðÏ‚x_[Ü…_Á&á”c¼ç°ï¹\ì ƒÌÀ÷íB+üRÀÖ Y`m?HqG€>x´ö€ýÐ삊6MÁSÜç¾Èã‡CîG l§ø¨Çgb[r³ï‚.>zXzxC\%>®Á6a™IkÍ„Vöš_p‚øuEl‹G±h <€Öï'ÊÜÇqq’‹ÖÄ¢'`\À$ç¦tn­¨Uëó¹üO‹–4w8hʸ_ Ë•ç¹Ü˜•‚Yº7—X$“Ξ›Â, ±ÌŠ>ü‡Ð 0Bƒ²­¡Øcâ9qBîr½<ñWŽ˜ç°ŽÈ Á°ù?ú9fJÑÞfÛ<ç/ëaØOv½˜oSí@£å½1\¸?‡6M×dê™ÚšÂµØÞ-6äÃRâó½Þ€«H|°ô­¸“G9•åŒd1…\ëÃfc0Æâ›2bèŒ)a÷r²m\ñȵ õ™>¨­`QðœYTî¼]×6–+ƒøÕÊuñúrï‚’'”¼úŽ©áæÕ1¯V•êÀô3O²pãX8¨'Š(w^ I&wt ‰ï.š ú$›Vÿߨ2º`›ÌuXZ_¨‰l=]=zš¯}è!ëÀÚø4í–Œ±@ˆÃ¾ÔÅ«\ßVÁ©#÷®[,ê׉šJ­ëÙÿj`ÑLÿ—&ÀúÚÜÈ^j³9üL}-t‹©á—¤oÓõ/miø×+k€ Ük ÝúŠpª¬°âµÆÚsíCù wm¬>Þƒ·™«O©wòþL+•›8ægMÊ곡Øo0d¬ùoƒ®ÎlKë•ñ©°1?·W–¼&»V–ÿj ¤ÉÖ7Ö×î½c£³ýaªú«Ê5/˜wøúFÓ1؉Eüy|$øçëRâ‚“£Î¸ûÅ ¸;cÜ}äâ®í:Yå˜pMœ\Ô’ç‹ °KÆïb‘V—²íM¸ùå¥ £?åïUÝŠ ‹×—×]´<¯yÏl¨+x¦'^y‡YÛ_q=X”ÁÚ —QÖªQÏX íÖ͉™=Sãdh=ÙsF,cÀz¿2ÎÚàQ @›lÖÁth K¬(­iƒg†ÃA]bû,ºÔ™zÏ]Tí£™zzˆHꯀ¥HQQ€4.©qõÄýïõS\\)­õ—´ðGoÔcdœ9—Ôï,×ïX”K £J­^ÒÂØaªYÛØó¢Îìyƒ!b³ƒOÊt;p¦Û×¹¢«UE0ÜØ)Ђ8{÷®DT%íÎ(¿¤sïT%™¼×áxíl;Ë%F[uÑ»ÓåWuîòuÕ.û!îów”ÝwÌè¤(lwzxY笎 ”ÅÚ…zÉŽ4 Ja8î2^.ï\ù5ÕÊ;ÈWw®áöêÌ„2…nåМtaâ‘O¹¾ø G¬Fìb'™MÓ„®«ƒ×‘k:sÊ£Õ¡ŽE{ÒÓJÏøi&¯—ÑqÀÙÜ“õþ8Ä*w}3­õ&7F훸×Ü‚ó×NÃy³ë‰Çæ<~`î_”2ä±:)Ú,WÏfÛµ%ý×ZÒ½%ý7ZÒ³%ý·ZÒ?Ú’þÛ-é¿Ó’þ»-éÐux˜ª<ï–½j£JÚYðu¿žçû¸Ja°§Æiœ7ìŒO˜&aßX,#—º-wÍqmçî^ аJ·§­^ý„’:Ö¨Œ/d„Ú‚×OkÁüXKúŸ´¤ÿyKú§ZÒÿ¦%ýo[Òÿ®%½-Üï·ZÒÛÂ|ÜDÌkKJˆmæ-ni£…€žJ+$0¢ÉuV­ª7¶U%Á§Öug¥®×MÔ•-²²'Û:&Ïî.²®§–ÚÈ…±/óZU·µ’Ë\Ñ´Vö†Je×”•1>[×-•ºî-ë‚^¥þÎQWy?Š×30A¼vmƒ¾à2µ ·VÚ`„ÄÖgì­£nou±•Þ^©ôƆJ×ÞÿÅÖy RçíeâvTøAP˳Mo{ñußµÔ"ú±ºÅVuO¥ªý ¨ý y»l±•[m"Hài¡Õ¬T÷z­8Nˆ¢‹­ð¾J…7"¶ÀÀÒ}ï¤ß}úwÓ§Öw›0Êr/ÉXÑm ŠçŸjõÜÜV]ÉšZÍѶþø˜ÐWϛڄZÍ9ùÂ*|¸m:”çËWÓJÛd˜ÇÃáÄäÐÎ=µ¦ïk«IÜ쪱⭩õ<±Ôò7Mg†îtmÂNmÁ3ÓZpi‹º€ð3ÁîFÎÈsYÆ`±Âì[~Œ÷-úi¼ SC‘0@c—; µr* 䩇jQìÄt†¯Tãʼn4ÂË¿^* á0±ÉÔ3¼f1f‡mÒÏø S†qàzQ 5Ñâ\< Þå“HÚ±MŸžð¸|D73ÒM¢D -I"‘/ŠEÒàwFý+sÑúB·ÞtKä›lL-'ŠØÏ¤Ä™ëyI‚·(ð!Û‹’üP”ߘ;v‡?°#àõSŸ¼Á þÅð’@–‹F h–ý8ùpg¹@Tñ_)Ø‹S £8òÆ®· 95Ç`S,ÂÎãÓ0æþVœŽ¹@dÀ¶ÈEƒ~€¦e#xÛŽ$Ó{€+@á` fRj<= ²‹G¤$=é¦ÉF‰DÄ|CI<ÊDj'=IÚˆgEñ&1*^4qÌWU¬/¼ Ö =U^äá=Á?¸iX„ÆH ”_³]ꆡ¢ ‘ýÐl‘ííä8ˆ”È–êM݇ï嬛=§HS`ħ„K \É',­úl°Ãl&ŸÕšk+“^ =Ý£§9|>tÚ¨H5MW`D–_=˸/<÷ÿJœZÕtóü[­eRË9Ýà¶¾­el·š6MËUq'÷¾NçÓg^ÞîV±‚º¿¼N2G|à6…êƒÕ{cYãÀpÏÀZÜ}YCݦ6d­sCT“-[83^øIŒ^}ó}ª/Þi΀Î ÐdQgïxÚ2ªkðÅ¿nIo ÚVë¿»ÒÔ0Ö¸1^IíjÐS9kcg]Ò²ƒ™d‘Ûj/V*~ƨ'Õ– ÚçFi8Õ‘Aóµ·cià€ÑK|¶Àæ±JóÌÅbŠžBéî«s–Z XŠlay_`m^gÉ¢,Xgs üÙ“|óÙ“çÅ)ò2˜Ö¾ƒW¯Ìb«©êÊVIS@‘°¿¢µÞª¸çlå}åom£³‚ŸJéáR·6ˆ+Ó»Ó¿3·™» 8=.n.Ýì܆ëjm°çØÕ˜ÝŽpZ;Úæ¤¶£‹:’ñ­ÚH[LðÚ‹ZPð饖f´Ti;ò•–ô55n;ÿà¡9M¯»vÆè³Ù±<—WŠÕ.b´ã)ª×˜{/œã­ŸãåÞ©z™·âÂ|Ú‰ºxù+³ÆéÌ¿è{eì”` ñwek›oøtÜÂˆŽ”è€™%ä'8º®Íyâðd‡Òs6m«ãî‡ñðà»Ï’É=èÝ[¿==–èìaœ,5UsÇ¢«9ÑÔÃ¥¥¦K†¦ßõsZp03ý÷[Òÿiiþ)¬qô½å‹ÇDÁÐÅ ´¡öS†×ŸÐS¬¦Á7ãÂÀ—â¶!¬îŽ+8Ž0q%žŒ£WÛ­†S¦¦"ËÓ`›ªÍѧVyc£Ðým“†8ºÚTô„Ûº3 1|.æ¤liÞ9IÆY}¡í¶­ø´sñÆÊ$ʧES(:·á᳓»g'¼.nDÙ’þÕ–ô/wííÊYÎ2w÷¾ç+;S =5›·—ºÎÀ×Ý  ÞY B7±>ùé…íDáÞÌú nX¶E×NºzÂEµtL±’,1«aluŠôZmÁÀGæé¶ÁòÛ™Q,uãÎ&ìs2”L8GoÅlràRNTÔg©*`+ö]Kú æ69n‡:†P”„(=ˆ[Ò£´t‘_ú‚&çÖø6lÈf¼Ï !¤½Â÷=ÜaêC@–ûtžŽcŒí6WaãDz.ŽMË6âH©òÁÌ$Ö®å©~ý– ï"b—Ș!§¥·j‹u.#ÿȘ4ô2äPô¢'¸QaßÄcqÞ ‹'ýjEÛÐLȼ͡m°Ç˜¯‡GÏ=ItÊÛ™†tÇÂH ²*í ’Žsú™r ZØ3‘KÛÏç)¹Œ¥”õvœ °\”•E ”ÏP˜ÉŸ†[¢@±vO½Ðç€Þ”õ?(P‘qÀRôÅ_ãàUKC°ƒ ¡Pþ@ ý(oHiŒñj€qE r?O¡˜¸ £#Ô÷x9ê8°Œx :^€E‚×’qÇUàýO§$’ÅK‡–]êçÈM£ƒ½¬:0!?—ÂNiFžæÑõbÆ•)¯´µk?ùVUBCo€õI9Ç!ʰ23P AoO8LJ€nü¥átœR´?ºù‘qÍ´‚#øõ$ŽFÀxÞ—‚ œ¾µ0BÆ£š:rƒ-6‹E40&W‘+’³´ß`$/àx!SAÙðÑC¨«Ì‚ƒhˆ“¤'²͸9kTÇñ([Jg ¹©#rœtËp µÉ­§jígˆ$4X™“¼vè÷ã~f~?üä(ô°È$ƒBÐ8–5oz^b«&K‡ÞZº±*ßÔÛ†˜zD3Ë[‹Ò ®ãyôtô2j.ªº³#Іj¶–kK›ù{ßú–ò',”‰0e"ŠÓøÄ“tFÊA¿µA ´æ0BEδ~ U1Gý¢ÇC’2"ÄH9¿i&u#‹¥BÒe:ø 5Ž.s‡¹¹•ÂQD¢iE@Òi<¤âÊá!ëyÍ »£îàÑ4!"? Æ *· ‰œA¢J1Áh–µhB…].$©pÞk‰ùŒWd>/T¯:Ó©é …7—§½eU ¥á㤗Æð '28 âÂ3Å5‹AU;!Ç@ %ƒJ¨xB´ a&0 ›ô9‚TW[tØ CU@·¸!Jµw€*C–Âè=ÐfLyöR4‹€32L|£qM•”á´. I]Qɤö¦‚üà¬m‘º*X;`ãž?´o‘MqèœP‘É9g2”LÆ%X $À xhÇUQ2Dê m˜S\9U †•K¡¬£²øL îÊÓïŠ÷÷é /ïôQ͈ù²õf’Œo-šh/=ëú¼P&ui©RqëVÓ>©QÐ`äÚþùÔ¹XGÀW@¡B$ñše¯íŒ7d/Ê&KH é¡·§ËS`xŠËåKOÔQ*ÌB*†­€ÅõŠ|Ú¶”†Y[<¥EdK Ì§9€phôV-gG/1Ò<àå–ÚWVY˜›DÀ1Z`Yåâ¨\kÉ#,r3ZBÃD ší¶ÌL¬ZÈ# W±hO‚Ju “pìž*Ÿùaø_2^à™1צa]|£E¨%OwT>åY„AÖb w¬#¦o€(ŒwW |¾§ÀVÕ ¼‚¤—ñ×`=hAÅZ[U`(,¥À•‰¹œØðú“m¡ "D&úΦ ìZ§\Ò)µKE|#µY'7‚ÀI ãÒY"(ž=nÆÓa°*B‚ä–…À廟é¶xOâØµÍ%8ºÄÖ™Š5Çmh€ ,GëéÓœBòr-.}œÛÒ‰9øéÉ0&Õ ?(¬€y]ÈÖ¼Œ #÷X¥Ì²ŒÈN*ÎVO/ëEaÛBÈ)æ2]ˆôžœì¥Ì˜P>Qü §íªM#ßI*ßè&œTf·e’óx-‘ŠÅ(EŒ¹¾3ÕPo–”˜²pjŸÔ?PlèdŸ”†‚T-0J%¢HJé€Q,Òk+q΄OõžŠ:Å•øÓ– ÈWYóÊ1§„†Èà{ÛÈjúå¦-V ÕB}·|Ž8†Áùž““ÇóÄ»2Ã6ÝÆSõÛR— ó˜¤Ï ~"þ.Îu«Ñìp9 Òõ@iˆ¢Tdn”"!¦ÅBeI›F;¾ˆâ /Eâ‘iI)L½`!@ƒ _d_s½+RÅÝÉÑv@Þ/{vOî'_`dÈ£ ƒbÏP$nŸÂ5r£„øæâ³å›}gËpSc·âJŠ{«ÜJvcÓÛ4›®\(Šc¸µŽ'­5ŽÞ<^: œÅ3}¶y 4Cñ”IÍ€<õª§Э85íÆ O%CتëzùA@O=ô£KSŽ~TZñNù}VÞôŸ»‰ÂG²s~Ý8U¿QU%Ÿ@hs¼Ñ&¼~x^ÛŽ4UΚDm :ûÏW öFðçŸêÌ€ê˜=´3¸¶²Ç\„Üש ×M²¬,¼SHÎõµäùéi]ÝרÕu VÕ{TÞJ…f:¬²ìm&ØHC…¥¶P»ZgIË—'”³öB» z2"…é¼ Oè¸ã÷„¦X¬’Ok‡íGÁÒ´ºAèiÐ_»'é½ÕÖsšh¹qÿ÷9§ê1½ZNˆjíSÙ'( ¹h»­¬½^ù­SÏD¦nãÃMÍjjfÁW—ób‘Ö=YÞÔ6)èTÉýsÒë+õK]¢ÖŒÛ§4£æj¼±5¿Ð¹56¶XÚ:µþ_ê\¿’¨¨Šõ—«Ÿ¸gϧ! úÿò#÷<Clojurecljsource.clojurexÚí=icÛÆ•´ãÜMRçN8–僔ÚqN3V”ôHïû®(+ J°A€@Y²Çé6mÚôn·÷Ý´Íöø°_wÞ¾7€!ðP”M™3Þ̼yó®y3ý«Æ~wñtÑö£ãú=×ßÜ8{{-ûË{\€(;'À‚=!Àn({R€*{J€ÝXö´»©ìvs!سìžÞ“ æì ßZ *É|OïÕƒÊjo/‡•õ¾§VŽá¥èJÐ;KAåßU *‡ý½¥ rè—‚Êá¿»T²À=¥ ÏªÄ׃ž ÷)i4Úèá á™û €åè>`,ÇìA…Ê ¸?ò»± ‰ÁC¹•J¸NÐÛM€ßg,Ñ=ÂÓG €»Á`àøqÒÂà ɖ).4y±»1pâ­ —´t´B!ÙÒ£JáÂB²©cUJɶª”’ã~¼J))¶‹UJI >Q¥”æ“UJI¹>Ua¸$1NW($iQ¯PH’¢Q¡¤ÄR…B’Ë IU÷X…BRéY Iõ×,V¾=po^FÒ¹e^Fú9ó2’ÒÌËHR¯˜—‘´~^1*²Œë`ßî:¹ä^U¼2V̳ž@½P%‡áEžÞ‘ØÝ0Hªz?OoW€R¾ïr½ ÀÜîÙq «ÃI¼>¤x' ÜÐŽ&~Š(/ñôp¦*hˆ„”€.”(|DqÑTÀ¬gôQhY÷ÇL %ßœ§wg óXã<}@™Eú“¹ú!>î.~*óT‘ [|º¬m;t펗ŸÏä2[ä¤|ÄÏæ2m^x˜}.×´0 hèt]ÛK€?o,ï ¹$P€eÕ_4–uÉZ2Æ—M ¥*üŠ ´T‚_5–êïk&ÐRñ­™@Kߥm-–uhé­\4xIî ƒªÏÉÙZ¼m-1é˜@Ëïš@Ëï™@ËwL åÀ÷M åÀoš@Ëß2–ï ¼$à%`I¿ËÀ’|ž°¤ÞÀXÏ7–´ €%醹žE‡™€ã+EP’íÃ"(ÉîQ”¥¸JÏ(jwÐ Ra»Jb¥Jb¿S%±ßåéCyP—ìm{ƒ9íÅ«°¤ eíþµÊEe—IiQ×ßrB7vz*Â×sé°ítã e·_å©ãn€Gáúâí×yz³|Åv‹×ÿÁSx¶=O¼ú†R’‡ÍÄë×·#Ú¾©¸™À›ú–Ò U‰×¯óT„¼QÂÄ»oóT„œ…ó%ÞGi?@o(’œ9ÀßÕ§§öø{ºæÑm@ß穈“æÌ5èxzo T+ Øòô6oŽ$À¤ Âeg÷JÊžüXa16)oÂS±Ü@'CâåO•ñKóæ*Ìž°xõ3ehÅDF¼ÿ9O+ïåDGþ‚§b­ANÀ/!ËÎ)Ô¯ ø£AÇ‘ŒøkÛ`è„6©xÿž¾Wy/L…€û-OÅjÇø@ýާwAdÐý½ÂU93ú¥ÿÙ™‰€ú£¾B1# RFf"âÕŸN‰ÒÒü¦".c*€þ¢Œ3Vâí_Õ*˜)s¢®=”øýM­‚ªbñö-…±Æt¼ü/žÑ&Æ@ù{Aň"ÿPeÊ_¼ý'OÿÅS±y2%M ¨B§Éõo“UÒìzÁ%x\Kc–i³¾ºÒ^oÈÇeîf pa¥½ÖH—•¨J™ˆé—éßTަñOX­ñ[Óm Ûë¢BÛ™d#ÿ7{Nßõ]šåõ:~OÖ}0Ï×5øÿ\óüO¹XXËjÛ¦P M);ÜŒ$2ɰˆ„zËŽõÕ…5Ûºú¢õµå…¶µ±zÖ:¿ôêâ §_>Ó<±²ÞÍ,êšaü7Þ’Úßiº÷GÍóo(Ãy¼˜AÍ̘¯•óâ ¦¼x"¼Pži¦Ô KîØ_Õž*æH¬t¾ìØJqi!i@Ư»ƒw5Šù+TMÙ¬ŒQNš`1=£?š N©Ü”Hj]˜ªÖ›Õ—b\x ‰ää‘âÆtý«)‘.BÊçÜQü±†Ç~£yþkÍó·jù¿™²Ø1žºþ¶í¹½¦ëyΦí ËåïéÆ}×.¶××ÇÛÆß“…lŒÓ»f7ðaéÇMÏö7Gö¦3S¹zMéôér„"ŠÕ´’uK°¸Ú®—3û:òZ3ü›Å GûØY<ñŒÌ8Ì¿£!Ó÷4Ï¢yþSÍó7Ê4Êåàírìß[&¹Ž=Îïœ(J9àejdn޽êQœ*§õÛâµÞmJè#Bk°>˜×ðL}Õ ( ƒ©(¬¢ðgCÚ ,Ì»¿Î»}æjf·TÏÊÕ|úòÑBÊD•èј…Z| ¦5.ý{°¦ù¨Åb{Í´Â"J” ö}éQóåÚߔۅ†J’ɦ¾ô'F·-eŸ©¥¾¯©í»E&û†!>ð‰{޹ý*¡éï•vßWÐnÏ»Q±YÁ\Ûõ‚®^ïåZãªWÇË¿2 Ò ŽpFXj;þ¦TûPš"òodÚÆã0b+"_èiêlœh¥Ù_¨4È»ôzQ©b2e›×óÕìtÊûÑZÖ¨¦?g…Òé ĬçPºVëêËå|{“Ùå;‰§Ø˜…§¸PÓè4UÈ÷½§hJæªîbcBwQ%`Ó¿ê>ccBŸqb«;Žsô“µ|6 Ÿªh´›æ©ZrñšA|[Ã6U]…ÓåVÖK5ÊžPüû¹}RŠT]Œùmº!1¯¯·ëí¹v´×ÚëdñÚõÄ> P\u† ƒ²yb”ÊÁÏ¥ „tQÖTµ]™é8›nvv×Öcùm]°õr³cÖбLC7§hbbsg Ž$¥7²P›%-–,/¯qQ£§S«'Ô—ç íÃtÿª:å1S«U5úߘIô¹¦‘ìß× Í˾7›ú Äœg\±2·¥K¯7Ò3~]Mõå~NçñÓÌ„MÂ9°ï2c]½¹1_1Íq™ŠþÄÉJKÕy„YÛ˜CÛwwšb¯e©Y8«ucßj&zK³Å4Ãñ¬©Ë.9;10Vùއ™ ö±Sˆ¹ƒ¡ç`¨%2{¬›7_4“¬ EM*¹ ¬€Øõ±GiWhŒ%T¾z²fˆùãf˜7#wÓ·©žž”¶ SLçhgÊò•"]¬Íû ˆF<´ «#=? {Á C÷Cî3{±òµM-:’ê¡dö7è›2ÅT´ q‚AëDEdö©óõp-9³`'‰Ìes œn÷)‘œh™î/†;’‹ =]5Ázú~ZGŸfÍ)'X¸Ö˜ëÊÓ±œ:+-7­Í}µù©‰èb“¬¨l×äØŠýL0Åß~ÝD¿—£Ð 3’ö™Äè ⯔BûÝ£”–ç[ñtÜÌ6Ìü –ÿ›¸Â_U®pݬÂɸå(š6ؘ­íw4mÒ#P“AÒk ó`Óì¬Ë_cý7ï¼SxgÒ“„ùŽÝL=Ÿÿ¯'§8}¶'kU÷p”9КØÞT›¶°ÎÊ®óÝiéIþR‡êVIð °þ:«YÔÑ\©ó jäTQØß2jH«múÆI›žn¾Fw$ô_aqÒ,÷P7Ô—õÜNü^ƆÝí:¾ß!Óî+:“ý¥Ú4r¯«õË5CÝ'±,õ7S×es*íÿ@iÿ´®ýä£83ÇáG ÇrqèÚqwkz}0SÈÆ¸Km²¥Brǘ4§‰·…+7Õ—'s副°Š…jjÖMï'âÐ-c˜ÒÂýj×M6”ºêËãzÅÕÔýÛ“…OuEîÝ0U½<†1]ÿΗ:7ú(ÝR? ˆêæÇ®»vÏ¿í|þò+3rÏ&Z;SoŸP Ïj9ÓˆYyÚ!×¼‚Ë>æ¬ëV^%.YËàT^. ,ÀðŠôG&ç¿Âz_–p¡³irfÖûÝje¿Noîk®ybf`¦çHæjnxùqžÑ¡³Ì¢ÙZcOÏž©ÊVý¬{MéêYÅ™s<¹šéøzðÍäæ}ŒR7û¶æù›ôÁhÓæ|Odgs<‘Õ¤âo Ö[°€KZW¶¯®ç˜~@«Ô«ìUÐàš1ø3‹[g&ÚéÏ[FåVù–"¹}BöÚw_2È|ü½úAîÛj{'7wí•ÜÎ4TõK÷d fñ%ƒ{ç"÷M!wÔ dã@>K”VzQ¥ý H\î¹Fs ¯,’ÕöWÕãMb¶çú0ßpn7ð/Ø ¹cû~²Þ£•®’]>¢ ^M2c¼+‹§ŠãI#çÜÅz.r'Š‘£ in¸Iï0µ£Å¨Í )…#oÕ¨ôªûÖt¢ú§æùÏ4Ïÿ\ÑôLòÍ£Œh‹/Ó(è·­ÕF;*5V"¶Ÿ™†ÉÀ¦zÌ+OURÓðÒ¦¼t¿ÊKl‡1ÔòpÔÑš)ª³²¿gŠZÔM_~˜”K9-þÅ #ZUôB¼ÀîY8ª–‘dtIš®„÷ˆ8~oñÓï„§¦{ßgù-„"5\¸€Ýã…‡Áæ[øæ<ŽÏj¸JÐxoÅ®U+ óA-v8O‹íaV‹zðžôƒ7¤æ¿°°¶´¼°±Ú¶ÖíN½îö-?ˆ‰ÛG±è‘^@0ÆâÁ„Nw’x+ ®„‹nZ%`imÏÛ%°Š OíÁ0@'ê"õȉHtÅ.@eƒ¡:–í÷,|Ü $[V®Šžq˜Z'H¼ŽÿÕõ`€BËÁ=½DÞí€j]#@»Bbû²ƒý„ž€’ð‰ëÇUЫ0ŠIßÿ#éCÏñ†^CzJϾºkaa–Á‚p¹Dì+64BàÂ!N†$·Ç÷)=f#?ÞßÿÖõTà˜×=¿±JXg!àuà?zH3>¡Ù¶C7ø ?àF¤wZsH<z¶eG[Þ±€Ä0tÝ(íZ1hFÍtÞz\×Ë»¯f¼ÿs@Ó?ëyÒn¶›ÄF¤°AÀ£7ê:8šNþaÂý@ζè"ôÀPÕAmK FäÚ¤çibPÒø^)L™e€œgï‚4tá_伂×]obwÖÒ)ÛŠQ‘‘,Á¨{±¤‚4p o‚Ú&'äæ…Ð]Ah'dyÂ^szÁÝ Øv4E µÏÒ,6I3(Ë4>JãäŠoY®o!ÓÐ<àe{ðEÄî!ÞéóÜ(NÀË®‹+ˆ{à^Õ²óQE‘¥>XdÏ÷ëÆ=¤®<03•Zî¶Ò™‚Ñ£ÚFÚóp¸c°ø²¨; ¼OG xÙ…¦‰3Æ»”1Ht . ¹ú¶9 ݈.Œ„ÛÃU ð7Û†C}ÁlÂE“Ér¡ïlßõÚ.MYÅìÂ’ CD„ö ÞE.L}²üa{Ð\„_N290–ì/œZ,ÎLØÄ‰ð;àA&¼Wh.™nßoÔÛ«ùŠôQÝ8Ä ¾râDƒT¾¸™ á“:Õt©¯4(Ýêm>7¨ëÿƒ:|¢7L¨y‰CSãÇ·iˆqÕ¢TC‚,´3ð,ÈÒ™‚JÎUùèÒ—| !ÁÁG»IÓMšz^Èy4„®c1…ÁoÀ  ÉÈG™ù=XÖñ¢n9Ý˰¾:`¬A>’GÀÕè,'¨Z‚iOH¥îzî6ˆNú“~mƒÄ¡ãÐÆe‡¡½këÉÍÀŃ¡´èZ–'!ïMH/¨éÐÝÜ‚6hBB¦Ì™ê@½Á``Ã܉oŸ¾2r©U€Îvqð0gwiêÀ}ÏÛåYHÐ÷g(°¼0&~Äs˜0{ƒWJ1H 7·¡³'®–hžšWÌÁ…£eñ¿»Yªð(Éb­ÖfŒ†ô!èJ, ºKÈ`ÔoêQ‡… q؇Ñh²¶ ¤>3‘0jCüs>x{ é î›%]!/“giŸ%É 4½´gÃ?=$ÈÈè¡‚:ì»tÉ}É›ð%Ü9Îe2”–ú¾—0¦'–…_ä HáŸO-N§Þ$r¼Y#ŸÌEì³b¨i¶Â¹!„ÑÜ.ÍÒ„”—dþ}X ÍÒÚaÐÇ+ÌXQ£ˆ¾€û0]Aÿލü^Í 2 ¦„ê§n:LÆh,⃒±‘æÎ`úí&:Ê({®¿Ž¢< 8ÐÜ– ¾rØÝÚe·LI@ |3•¥ÓxÙÔÒs¦¤yäGà4šï£JÁµ@KÌ~c)·zN?Žè\5x!¬<•ìÏ¥ºÌ¼÷ ¤EpzÀ1¡„†Yjzƒa–ó{›fXt,†¨P&7xX{~CÑâù.¨ÆÜôœ‚ú„Å/P˜ëƒIývYéÀc†lftÞ1ùaÞC'Ñ €‚¥‹‰|ç[ò\$½£s7èZ QZ³G¸‹]ª „"}iÖ÷F€uµ89¸Û²è|3tÆ):ØT10AÄVŸéC:»q@v¦9è;À}cîéõ`æ…“;nRh–0*rÂBÐvI8Â70MüFÈàd’Kpéƒè9lFuA£Û(ËܨBB§[]ÒÝíBuÝU¯ÅÍ¿£3ÛžpÛÅ̵XæövÙÔ'Ê,0%æÌ<¥ˆY:Ӳ羞³“yô<Ç“8¯aYàËY2Ë C vq? ºÜ \JÜÎ.´ÔÅ”„ €J|˜sÅÖT‰)µá˜‰¶Ü¾`ãäžr2½uXÊ‹¡òÁ´ïÅÄ Eæ©ÄkTwE$r‡"@õf[8ç¢sde›ÚHj¦i–j šÃ*h†ñÍr yÚyš£]f9Þ_¼!Ì}¡³Ð!zEpE#ÏÄ'  ÚÔB ŸF­:½…+ &2µn{Ž¿ êÓF¹ËŒ›lƒßÄä‰ZFÔ2;3ÏY€)64¬ꘈIÔÝü¬ÌÏNÍÌÎèÜz:aS(°Šº–Ê÷q$Mé·‹LRÛÓÄ[u°ûÛè&¡šá¾çf)¥xÈb€psc3ï×6ÈL0«8ågáÜG„æÈt˜äÉÎñÆäO —ꜙÌle Z`UI ml L š¹ˆ´„ém±E º WxÃõ`…gGÞ“»ö võªßwÉ_EÿfÒ¯“‰_iQ§îÊÆ±ü FÒ@ú¬*’˜ån™—jýa²uŸþ²Û‹|X»ì˜khÕ›ÌýèhÞ.R+™OÞ]”ì•]i‰(X C¡->/nÑy?¬Ãv½DØ7ì|owþ¬t8CÇ–œPïÕ"ðGuœð–æù_ÓT–û¬êc£¡6ô±ZnÁòݱ7sx¯[¤½ÜXmwè)¸åú™Ë´;ã{<ùü€ÆÜn“Ήš4ZPºè!†hló?ê¦-P¦P_¦¦dÔEŸÖ¬åõÏz»Ésk·Öé;vßXmämcU}}Õž9Ívmœ?›‹h®±ZµO®¯¦è|®HɊѬŸcyÖzf}™ÔמÌèíyX¨MÚ:¥k‹¯Ð5ƒnœ´¦]&2ÚLMê@^=Ș‹ÆÓW% û'Ä9VFœñA8:>k;_Y§õ¢õ’mõÓ œ,k»v©\Õ ˆŸ®HëodÁ|,1©B¥£2“>Xq$gHûü¿Bà¿Ò~þ_!Vûù”HQgßcøŽ“ó‰$(•gÖÚÓe]nÒ½% Õ78¶þÄþð“õvo™œj¬ªö?çÃSœ{Å;Û~[`r¿üð2yõòªîÃb·PE­‹§É Ì3o3l§Eæ^UT˜ù¦Î\ªœ´“µÚ”// ßÃ!å¡ ÍQ•yœ^úD­`Øtåþ¬ú‘ŸOµ¸‡=ÿTu®«úsEUg¶MÚi¾­ãß­ËÝ‘b_Û&v¥¥6„%³t¯øÎ\“ £e%5]ý|¦Ow‡íd›ýÒ»ßä~8º)Ä(|÷HžZ dkýBчÇÍì››?>—2øÇGìÃYtt!ÃZÕ÷;éºàeºpÏxpåψ’¥‹H  .ŒcP‡…Ä€$k]~qo©Ý¬³wôS_ Ùq9989ñ3˜¾”ƒ)úY«\`+}kjn81ƒóƒã8'¡ˆyòWÊ$7³±`®¨|5ƒÊý9£H·°#s•¯ep8“ƒCî »bÕMòàÏ/4²Èœ ¹ê[ uݹ˜éνyzÖìŒFuB‚vjÖúúÇ ]A~5óG^É´-ÖÚíúgÒ0†Éôúµ'¯Ë}U±Ý!l_UÇî^f9Ü/ÓwÜA‡Ð#ë õ«Êrb€[ì.'êÚ¹ÓñýŠz»uíñÇÎ]oäù~†‡|U¹$û-Œ² 3’®á\F#*bŠŒwx^?RËÖ¤OBrœœ&í6÷OÐØ3딘¤ÞlT­FÑE…xñìH3‹‰ˆuMÁˆo¬_;÷Øõ$šsDE™É½fÉ"eŸÇCæ¸Ã€« m,åÅÕV–÷Ë|-M»ìž|k¥ð“X:vØÖ*ݼŽ4óšY[®Ë—à‰â¸P^ÝuˆLhLØî+#`—¾ëT Ìíë˜W‹¤/ƒÛ¬Ngÿ`ö¬¾ÇITSRymn$¾n¬àäôw §¿ ;Í2òªhìÿs®VœDddisource.d^#!.*\bg?dmd\b.k!xÚÍ]é~ãÆ‘q’‰;‡;¶ÙÎ!Ž,y<ãx³>¢IHB†$hÔááHPBD Ž$ÞGÙ¯ûm_c÷)öUvÿUÝ 4 R#{ù­b¡« ÝÕWu] M~}Kü¼,Ëwý(޼a<Qšxw_¼UþYQïUïY¾Qª7^DÃ4à'I0'Hcýì›ä½<'ËKM¦~lŸ_]'çóÕuî)Ú «ëÜW´ï®®ó¡¢}ouß+Ú÷W×ùHÑn¯®óOŠöƒ¥Kš¤~Ð~mΪ? æÅr½xã&ùêýP–/UšÌÃèDÛß][-çöÒµÕòíxùÚjùŽü¸²{¯zû“ʾy4Ñyª^ÿ´²þd²™^΂DUøYeOÕ9Pï_©ÔBzS?J½Ùħñë¨ê¾Zét‰à«ª?¯ˆ¶>¥×*læÁÉbâϽàb6’Dgóz¥ê’MVUQÙÃ$çþIÀ«±9ªÊLÁvà ’¡? FÞðÔϾYYy¹qêõ[²\S¯³Y RÙ?»tF_]e¦OçµÊTKð),wRš¾RŸƒãu/û¸68¾²mÕò'e5³5Gá8 梓eëýÒz7_©O?|Uûzsû•>7]XxšÁED£äš5ýN±M¯Uedù~V©õÚŠ!pMß·µ¾³÷ßÏ>©]Ù꧳߽õÿgUŸ­(@‚2¯[£7–’ÙTÓjÇó壪ööóô×n6Š_,'ßî ž¹~ßfOE½¹BªfþÜŸnNÂäºÃòB!RƒÚ”ÄMOhz:ÏÿÁÚáÕü4’Ï´õ·EÌ3^O‚kzVÍß¹rÜ«5”±ÂjÊ~q`5ƒ®øÍ ¿_\7à¹~Í Ul±NªüÚú;µìbÙž]¡¯¾î–Œ•76˜ÎÒËMY]-ðÒ)¿¾b+§|ìÏÒðZ¬4÷¿ÔÖÿRËþòÿeî«å0|#9üÝS“Ã[Kø?ó5V‹r¾’x1e÷úg™iüÉu•Ÿ[1¬_­ ¿»‚þÆ úà…¼?¸óÄýX»~?rozÕÌË?EÏÿðžË|•õ[ÿýÚÖõíéÇ¿® ¢íªW®¸NÂ('`3»rº5Zé)Ýt Ï=I.ùg/7áÇ¿Y¬?ô7¿ômÀZm¿»}w{°¹ýpíÑö`c{ýáÝÍ~t'Ü©­¶4¬¶ýð´õh›þæQ­j6U>b+NOáÍiY‰RàQbé4«‹ mɲ§šm[µT7 ~Vlg9\»ÖÛÒ9&ú{zÅŠÈW5{¥"¡a©IÃ7Ûçô#üZ¥Kþ™<£æxQû3Öø6ŒÂÇpàgóð1–+›ÁœÀ3Ïfs(á!ôp6ƒ¼†Ã y¤2ZT`èÚŸdàÇA–\FC¸+Qø%ªûÇP§þx öµ;µµw×”›{½ô,Ïe`—7n¯Î7h»Q1a²*†µNBððσÚ#®0¨e²ž‹›`¸k”± ª·×Ö¨îÇô0³¤L’;ïÑ+¢Ô¶Ÿ ­¶!"§Ì×x¾ùn¾¸B‚W‡EÏUjVòf[4ÿ­Ñó•Zjçi1!W‘?•5e„ýJýŸ/ãšÊ5Þ½psšä*S|FP!´ŠïVšþ²<2¡.d‹`´)Ç÷½oÔêûߨÕíoÔêߨՋߨÕ¿Q«U*ïù’‚ù¯[OIdl"–+š~+º ?jÏ?¥£öúª£¦R,_ó¬­Ú¶JÛößOmÛ‡þ(ñÇAB”„˜h– Jžw" åÛŠñ¤§aR[¶ŸooÝù¤¶ªŒñ¬…ã5rŽÖNýdÍ_ûä6Yþõ'‡(7ßÌw–lÓêͲ ø^iþC3£°ÅöamíÏkOúywí88 £Íx¼I¿]~› >ðCÞ&IEÁyöYm­Va±Ï×ÈãYÛXK°ãxŽãy°F³+qÔ‡(%eûã§$+ñã`>ÇÞ/•‘ÒÊý+K ÉY•ÉÕi°‰‡\\»®|ñ¶vŒ)­Â:µÌÿª¶xû:ªfÛ–ÉÓ÷KòôŸWܲmÞzv.6ÄÔ¶†ãÁqíö·²‰ÿËËo²“`=‡LÆœ¢RÛºqåìoü8GÙqO?ÊŽ/1Lº¹ƒö ÁÌÆ“ØO³Id",ÊΗà‰ÀÃCäAó<ßlÕî<46¿xÄÖXŠ_ñ_õuáŽÕ¶kdÉ`<‚ìmg¤nãñ`}ëÎ6LŸ|‰ îlKM%œÊ–èëi®çþÏ‚¶Ü Uù¾z­8®’ÁÛ%ü·R?(ÕPv†·¼´YªùËyàS exXM;¼¢u¾,…É?¿)úÍÏÁrùׯñöª•÷‡¸[ÅU°Œõ¸õqÑ‘¿Hcušò!ŽϬ8CcXôpRQ–|èÂét‘ú$ïUKZ:[Ù<k#¿æò¤ª—¡H]ž‰‚ÅO+,ü©¯ã;»Åt•cR„l™á‚h1Í„–ˤLèr‘Õ:ø·¢ƒE¡ ô`e°à§ÐB‰òXðS*Šã0Ú䜟‹!i¨¡pNˆ!©lÄï Ê&Y(ž‚g(™ ™8Ä¡$Šlà×™Î[ÚzÍ/³¡ŸO…LL.3¥%Ÿ”­È? (±n¬çAº˜CbÌgèn5 £Ö$û‹IеÉÎOIäàdÉyHãÇm?^1½ß7Š~%ƒ‚Í_c÷Ö v(Gœžðˬ_/XŸÄ8LrBr.ã×V0†mÇ*ñÔ4A±X r‡üáéº7pV± Û7à?f_¾1?(øL*“ÛEÁšDýy¥–Ñ}z– ãÊc¡ §ŸL³ixšÒÊØ´Ip‚£uÙX~ÿ¢®þü“©ƒ¹‰Š%6?Õ”Û$ô6‘£’æùù n\Õ˜ÂiE󮓨¸TFÈZ‡ž[L8U„øoí“GÛµOOóMƒ¨ˆ4Ú*÷nÕTÃj»_^gU¥Ë¥§`_ÖÎåØ/Ÿ¼7ª6pâG' b"½¤Ò"|Zpó¼«ez EËê i¸p­v8®Ñî‹“Iíªâ¿Ú³Þ£>~øâç°–pai§{œ¥\NôØh³qÇw×/²Ã¥“ýͱ±¹óhÝÓ J^üÝ‹»ï­Ý=¤ÇÅÝ»w=ü‚QFÌ8$KÎMo>Äa°%³×Š´-Ò×ì­ÝÝ"^ž(¶0›L2Ûª2»>Æ &’Gm}=ÈL$Ë7²MÙ!:¾¶õÝ`ã÷·±2[“qÑ=Êú-ؼk›©¶ ¿ßÖ‚€Öí«îA¾Å°ÐH W¹Xo®p±Þº¥ý(ký³Ï²·?Ë>ý,û#žÌ>ÍþX[e üD&ii$äbÓ”ó¸>ØlfƒÁFÎê·«X…l5R8 $Tâùã‚'8âÂ"¼Ÿýkö›'LO¡>Š…*òíì·¿Íø_­z»y…Õ$> ‡k§;©xÖ N²xÖˆ§xvã$µ¢¡„šA d<3F#<űxzs”íÅÏføX<-‰'cFD˜MàaLOçt"žžÀ䓱¾@û oø©x2fþ ñw¢éléC5’$<‰ÄPsÃÍa · ÇE} 8‡íybðËÓ‰ô¾Ž`Ô9lE£àB•Z /‚@•ùK,¿˜ˆZgµš\Úb}0(o~¥Îe€b¸“£’¼WèUJåå‡'+BQ.àâiïaP1&dAŠž^ªö¤‡MU­MÜÅ—#‡×—r`7~s•í÷Ï4ŸB¦蓪ytüDµŠôÿª`7 fó®1bÄ iŠ âx¡{Ú¯,Ÿ+Õ*{Å¡ZxÂÿ÷„Û¿ð8’ðD!i‚Qyi¦ 4š£Êr¤Êà1žãðb–¢<žœ # $ˆß„Ô<Œ<Ù¹/ Åxbìx£ ÊrgôŠÚÌøÇx&ÁIò%•çàìÑGªÚné•è/‘eN©X$9Ö ½)à%»#¿é•ÉèËD|p¾5Ô–ñßµÍBªD‰}­Ô@ \TñJWA:?—3,* ˆWT›á«Ëf(+—æ7(Ä"ðÞ¢ôƒDyÿž(?úÐ"òYr……ª±PUPzpÑÅG Š›ÀO國v‹rÃE¹å¢Ü”°±ÖáXïo¬w7.õ6Ö;—ú—ºk=Íxñ9`ê_èÀâ*´äè–Å.¡jiO´Ÿe_ÏÜ—ø÷n-ÿYýÁßú•z·*ŽMùë‘ü#h©/ó–«>3x²]Ñïo]3™Òÿ¡fæi¡ÄXËå ‘±P©™aå¯:Uò¡HX>ÄÝÙÖ£Ú×Éh\·ây, ¶ƒì¡K‡h6OÿîíGàû£¿¿wï«ìBóðÿ|¡ã~•õuü_e¿Åp?©­Œ•hW#SÃRpþ-ÿ`«úÍç“p´N(Þžl-¢³(>6—p©Lûùeõä¯U2âú¯ÍøþgµÐü¨Ä:ÿÂtN_.殊s_Y¶¿ê ¼gÿÃ}iéJüåé¬ÕËKYÿîétþãŸîŸý0?݆L;Áþbḟ§¸‘iÓcÆNº>’Uó¬î#¿Le_‹Q#˜ŽäÚ!ʲÿŠ»‚øOÖÈŒ$C‹^Åga ‹¼!!N ÷ð‚òÞr„‘clú©OË%Þ)L{Y¼ÐˆÇ”·%àdîOÕ(šÁclWŽ…'…†Ü„aÕ>v眇'pA1pÖ\L§—\Wî+DI11i?ü,ù ¤‹“xˆd¹@U£ÇàîÁ™Î;'–øï¸] = DVs'$Þ ƒÉ(ci¢‡šÁ;üY ƒ»óx1ËŠEÔÀ®Ô*ÎÐ'ÆÌ\õÇøO}µ6»ó ‰…pñâ$¦Ü, ø\žž½ÀG>»d@œ•=œ3Ç´45&|ãÉ ‹C¢Ãû!Â,ÂwQl0§D‡ó:]ú ñŠ}„päÆgA$Þºóp†¸0³º?D4Êkõ…±Êxfb S¤¤y%‰ïû–Iùæî$Åj0”Šè”3è±­ø$kûR +ù_¹RíÑ=ü~˜A5ÅóKqâ,w¢=å]…¢q:•Ï/ÂidVàg*hS|uø:½NrˆÞ‘“@ ë̘@e(Dýµ{¥°xz+¤å¡V¢bøéA­'t]#q×OβNœZ¸ðâüU©@ìãDè:¬\±VrCºt%¤‚}7œ‰‡š1ŸYzÒåƒà`L7TÎH' Š•P@¥(GèÓ. |§É<Þ•úŠ»åM`Hªe†¥Rdx$ðsú¸>—‡žBU¢>¹#±Gr=ĘóŠób& —Êà¢`O&¼%ŽÓ"µŽB Éé+ ÆRkâørôr!¬9hVN0õg§d,ÊÍ‘“!„¬ÒFåCàS¬++&T5XN,i0A•pÇòH0(…IyŒµ°õADSaÔÉ«)Ž3…q‘Û5æs_%A¹}Ê »Ã™ìÝ &Óï·‹œ ? ª09lBY)^\½+àVŒŒ¥„»tgÊ)sá1òV€g44Ø×àc jðHƒ kð‰Ÿjp¨ÁÕà3 žhðTƒõ1Ï4øo<×al€†&:œÄÃUUµVªÁ ~¬Á笭û6ÚÔ@y!XPLºdϱus˜S¬üR>'u50ÎBNpø³…ÊTq‡Ÿãîb6Ñø¹â2° h[¯í¼¶ñÚ¾k|4Ú¦k{®m¹¶ãÚ†kû­-жÛÚfk{­Í_[vmÂÚöi»'6o$OòHõ{V0ŸãèöGê\ö£ÜÅìG!ŸJ”C¤á¸+O¬4çÊr÷çaÖOÇ¢²‹ýpNÀI3}0‡RÑcŠVRcÒHN'ÊMü"œÉЂÀ:eÙ¤VW¨lÔŒÈ*`7Gôm x䲪ƒ18@Hû/Arv9E6„Çb¾‰ñk™‰µei¤ü_2Ø’ÿNÃM‚öêµÖÚ ú/WÐß^Aç¦áÞÿ<_„{b¿Mõ‰GÆg°Žxb”˜,L:¡¨Åÿ`‡¬ àü]ÄG6©Ò4‘]c'Á¨L+0<™ôç'W¨;ð14b=C!Ȇ‘Bê¼ ˆÏ"ôúóùb/Jٺ╠„J~ ~Å B±…ŽNÃåRå…Á‘ÜÊâek°H !èæˆêÊ Sxƒ]ÂðW®ÐHOD6­.Üâ-©;‹áéþö,ˆÊXïO¾Hí±ðÀ bwâ§cÌV£³ÅWÈWXª³+Ä¡¾ÿ’xà‡ÚXI›è9‡%<¸(¡ìqRaÆ_ÀµÂcÄ Ö^¥j8ÒÌ±Ž’:¬âeiq8·£áüq“Ø ï.£a‘z×0vœD; çïúÑq|¡£l4B:.}ñIP;L¦~iatÿž†’Ò.P(üÆmœód1-+È©OG|T¢"øq„Ú-½€š®*¢é"9ïGça4Ò—Lè5M³¿{½f/þeœë”{IÁž×;*¹¥EÜìöZ"è± '‘¡˜ ²ãÓ§Ù—„‰ì’¥5ä”ñûeVS Ô㋬.þ\¢$ôi×Nι?ËàaÑwfÔ¼ÀZ–ãfºK«´Üq{ýS¼FÏá ÓÌ{FOôÊ`Ïèìš 9¦«J+Áž€Àóðè Y¸=«ÛB³–ev\Á[uÖ¶:ûö³a·Û4.no·ìžÑüSßqÛ¨/pZiªÔ°;;Ö.ƒÝž-hR Bº–Ý5ÛŠ?(Üž!Û±hñÄ2Øm”ŽÙp›­Ý¼IDZ±Ú~ϱՔìŽkò»}–/íÊî‘À(.bÇÝ–(K“fÄÃø¥´×û»žVÍs÷P6Ë/0ò†7Y¦¯Då ƒî™ÆÑNÛÍÄœ=£‹¥?èöLWõÐUlµˆd ù£ðûFpå…*ÅÅdFssº¦£NL³QÏšMÓh<ࢉCiħe«CÏvËk;»Þžm?ðÔ›.6œÊ~7ãQÓKž¥˜°¹O»¦«oeÓÜoÛM“ÊŽÑ6<£ÙÀ¢{{Í^…b›í ¥k÷Ü ißnõÛ`jÕÕÊ6-0²œF!Àx»¦Ý6ÝÞ‘Àº¦8¨¨¦Ý£·ùÚ(ð^Öì»tÒD•žq O (É„ÖhcB=kßìå<4ì^ »/0¯eAìKj<ð gÈ §Bi+š—4Zf6-’Óhgf»ëõp!Äf»G¿F Õ5Ü=F:»-Óè5ÔV½å$¶Þë;{Ž/Øhd>xN—ÔxNÃBƒ1Ôp‡uµêm»c3± u «5ïšBÌVËê:L7í.­~Ó„ŠéªA`aE£œX5ºƒÒÅîÐ…™²›Ð²-‰;¿†ËìvUÚ*,¸A(UU+D°¬%U%AØRSRw›é)k`ÐxfÏ•¯è;`×&¨m8äªBέ£»×jºX‡èöÎÔ­6¨nkW6éÚ­#'þà#…Q/:\¼©¾½ZCŸuÏ$«í . ]“Å¢g÷;Mµú” µy@‡,ÌC¦æËªORJ¢"hvýOŠãZ·Xˆ¢ØQ{Aª?ª^`U3"¨?’|(’}KuF6˜tËØu§{ƒBdç`Ô³LU«kš­}‰,™kN³{»9íê¶ÒAt{r'%&J¶6Pêv¦+±&Œ9¨ÑÙƒb2¤ !1už;°d¨h &a098–.ÃŽ±ÏÇ¥n\³ßnÙ»tTt˜F V¦Gë¥|'VѨ¢º!j>Ã)4»…9¶« vm ,{ŽFR-w™AdúUsˆ5ÈË äC׫÷]—ä2!Î$æÛQ{ÜhÊë3zÎãˆý9Z=òÀ ˜G@àn‹ä`¹™zdtÀg«\ä²ï@šûºVg×£µõ° F¶Óv`:\VØGÞG‰~C¬Æ•P5ïDÝ §‹¤¸FD*# Ôtqì ¡`ÈkÚŽ’'«ÓíçûN“²šì®[AìLüy]Ì—Z“ƒ÷²0±X`žRËèc@G&¬†Ñ1›¦² Õ”Ay¤ØŽ2êC6¹VK?v-›”z!‚Œk[tW§´Ív’ø¤7÷ñfW˜}šP\–†P¶@ý$Ã`xp-z”ôbkßks×!N›Ø~Àtx¬‹P”PMû #rÚ¡Á!ÃEzó÷^Ã=Di•Üú¶i8ýRô‰Ú½#©3âÕ Çj”|6X§¾yè¡6ÆÍUJ•Ìc#"‹ X!ªÊ‚Æ©T§¬VÈ^:êZ<äÜx À/̦’WÚÆ¡è´ Ú0ºŽ@`ÙHõÖiÔÕF˜T`f¯W 8qb¹vîú–Ð{„Â%yPÔ…©É‘¾cRü ã¬ÊªL ¿uûP:Ü@„òÏÚPRÚ‘vÈtM¹à¢Ûàì‚lØAô‚ÀJFør68Š$TޤcV0hB»ßƒ`wÌ$#¸ŒÁìtÚÔtÚKr%SÁý.I)@,3ÇÖj§:Nn±E?}:qÚ;R!Ú;rh6m?ͺ„%ì ³ø­ŽJ‘@½²ïZ RZB_€9BQíZäb53{A0Z"5Mœv«¨J!¨^Ïêàt"ˆ»RQ8ŸE¼»y¢OMk²3#žÂV ðP”-Q8™r¡3ò•€ð½ ñ i±‘QmÛûZ÷,5ƒ ¨"(:z¯ŒÞ/£–Ñß稱GKh"^¯¼°ÙmsVåzÑ;éÌÙúˆ÷!K°s”:R¾TTWn¹¤”¶^®³gš®ÔdÜëp•tï*é~AêÂЖ±A`® ó¡ÇÞ·šÚTœ=yŠºýNÃíËÁ"R¿äÒØÃ…{÷¾ÔBØÅ‡B¨Ó…øräó¾ £ «Ìn•‰$­Êñ†§b´ëTÆQeñ"Ô"Ÿµãð.IŠÔZÀx©ù¤éÂëæÀ¡„:õ‚°¹Pxy¶†Î!Ã/á8²ôhe$²°O¬5y¹àAS{§k6Ð9ÐÏEܘõvëŸ÷áÛ¢”)Aı,e²”ÛŒw’Ó"¢?˜Épèì–P™HÓàîÞ=ÒM}NÓŽgNC-*íµ¢x×Bº’gP0D6j¹‘Æp¯àfA‘ã(ED eÇTºP9 ‡BˆŽQwÊTõ¾)É'µ¥ÝQ¨\o¹töHC‹!1h«äR2ì8 ½Q·C”«î‘,$Þ!Ö¶Ýè»{6­^PÈÓ\CÞK§Ä½ÇbàPÜïÈwpܾðµàW5‰Åu¼¢¦{Ô‚yØ€'<$““¸DçHOqú_»öú ëâî R'<¡ÁÃùkë¯ùg6Ž[Jßr8³`ú“<¶q¡x<“΄”y"¯¦…Qù¡—½QYeAé’ð÷$Kg%Kg%Kç Ëlƒ‰€©‡cçÖ!ŽòâÁ­Ëh×­KmäÖ)ð”§96T¤D$µÛ(¹½@Ùµ”¥8`Ê ÖL| ‹èÓU¡rÆÃþܼ’ˆºö.$ˆåÀEê·ãqÌe·$&MÌMC‘8NPµ1Ã0"Xˆ#Q¡  âH?K" J¿6Ô[¸…ÄÍꄃGOÚë·ªµ ¬­V’’5H‰[q@‰jšbáø(wÀuKKë’õ‡Ú7%¼ ¯W.ð¾ÕCM´èÄ-G$@á  Y(OŠ+#·ˆPÂÆºðR9ÏK{ܤ/Ã93wÛü%X¿)®àú-¹(Œ÷.FÑïPZÙÁ=B¡¾ûe±-›pŠDžŒpÛð= ¾¯îÊù¸AÓQnß`M’¡Wåg(1ÙwV¸U¹•¡sn³á¥Hx…st±³ŽŸçÜ&Q»ØòˆïËÇãKôdßK^Š£gò»çÜ®pôíç«'˜›í×o…5·_ž vx}j×´/j‘0CV‚7(F,Š+z¥Bm?r»I©ËRÄHD-û„’ò±Í"”®akÇ3À§üêe^æBi£ß+9¾‚ÏŠýƒ-Å! ¤ï¨5¹ßÞB'ÑeØ¥Íÿ‚†6įGˆSJ|‚=e1’üÙîä+’‚oÞ¾—²È5’0+ ›4 ã¶\“Ý %®D§üìšehÅãe^YYͦ^nöëbL7¢ ?2Eí4ÒäxÕCËC«ã¥ýÎ-(´­¥mI*I™­óæ»,w}£™„µë·=uï1òòðã(4}à¦þÔiÍ× j5 ¼:,4³„fŽÁUiÀÌ7t­’Jôiíô͘R,jëÔm·óÝÑrø`ÏM€ªÇ{•¯.~BËí²¨ ˜?ö{óe3Øâ‡tcšà˜a¯º´ç#y±;²Éò¬Hë´Ië,Ïc|òTY¸÷E¿y»'ÏyeÇIÞ’¼æ°º¸<à½âî‰KæX)Õ·óúõð#¸†Z>îú©œöš‡ï+óy‡¾³˜æøŸùéðx{78ÞŠj7) ¥’ÿVjÛÀErlangerlhrl Emakefile emakefile source.erlangcxÚí][Û6‡”v½®ëÖmÝú](¬$»ðÑR M·Þn»¯Ýíî¶;LyœØß‡Ù -›º?òþ¢“?$KŠdKiâµÏÊ8ȯ¤Ÿ^½_úäéTüu1yΛ^Ï;0û½îÁÊ¥)úëEÓr<Ó?M©¦“çûU»×íÚ^?%+%Ï«™ewÏÖ,Ç·Û}çÄNéÏÈѯ"ú9ú¢?›ßâNoÐmÙ~Ju›‹²ÚÍ#;p~²-gfîp-]ÒHŽˆÍ2¢FÑó ã"ú¾ã¦Tw¥©úƒc—(jž±Ÿ]ÓñÐÛÆfÀJ   ×Ÿ1V=tLèÝ=¦àØ!¡·‹Œál™¾Ù†½ŠÊL͉§B¯+Œ¾³Ñ-1õ ,3&Ì>±ýÓþd¤f»&«2æ;íqD¡1Niz¯3½ANô1©Ãö,Tr —…LMÙ0*å½ÌåùAÿÄ0ïñ¬²÷X;Ø{+ÚæþÏ«ÕúË †A"pÍg6ÕÚæ1jã4“u!»%TÞ3cÈ›ª­aÏzcšññŽwbºŽ¥;®kš®zÄÅ3díȹwí¾©C@ ¾­Ç†Ó£3$çPìîJv)*–×¥¨Eåj”·Òî*1üb»‹¬*°¡~‡:A7€-b13+äÜZLh H®£Æ³ö“M¯2u}D;]Ý…¾•Ã×i’¯ÈÖÝ­…Šá5hŽsû[¨˜ß¼:Jd±U*F°´\6ô|žW³»7ä ½ ÑÅlYe.óÛqY¸Lþ<.«²bæÍeå[ŸExµvÜÚ¤ åø¹gj?5µÿÖãƒýåeü7ﬠyKRÐZö¡ãå(YXèЬö}hH½ÃšE]š¿$ˆA/AÍsú§ºóè(ÖÒ£€„²µQgÇ‚„,”ܳ¤äaë`„ß[à¨CÚ®œ£%üL–®Lqüå /Ðz q!ZmÉ"%@ŸŒêˆEeó z…o[~SöõɃ4jÖN^Ô‡•¬Òh¡¯ ¬°ÀV%Ýî à¶د)äÛȰËl¾À½¨¯ PC+;aÄÑ[•;„[›Yßw§ršÅ3’”^£Aoù Sa¥1öTµ§ª½išÚ®9ì K%ë’Œïsãö×ATn ³nóMÀüãÀæò¹4AÌ™F™šËc&öœTV%ÃkpÝÑÒÿ!•(ǯb·=*²D«l>ãQYø ²ÃÏ·gÆ’6„ŸÃù«CÛ?†sOá3žÙ ?;Vô€3yáÓ·;6œÖiÛáÑ´GœNɳÛµÃÁ8²€k{‡ý#àõ,ø½gÀv; î¾ àØk‡É3 ãX­&ãËpÂ-Tè Ðã9+A„[Í´ÉtVùñ-òh:' n¦o "Úe¹Î– g? ¬åc, á¸cŸ|,-3b!¤xø~UÈ÷‰süòT†«¢´œô•Êò™HüüºãC…~Ì3£²S_†ŽŠ¹ÇÁ±t¡É Á±§­D²ü عjA8Â0ãG1˜ªÏp;@"xúh*Çiæö8a&Á“^@Ü´#]Ïòôé@)^6šÈhOÙçNd¨W“ãC¼nöâÃ<ɇtf< F²¬?ÎÚϞ͉ ‹ŠæFX¨OÄÖá~>›%LCIÊm!åÃ!'t‚ýÓ·õé(Æ£Ä5ÕØxìç¹Lü1¿ó'AxȸΠ´Ó$¬–vd›ñîp‡cÁ)¿bÁí‹kTsÄVÁ#¹9Ç(´S 0Þ‘H1ƒ`Í,oä¤Ï}É zÐV~ ʉeÝ^Ñ, 4G©ñŠfDZ]Kßc³„D¸¨­÷ºN?\ì%s³a1ÂŽF¶h‰Z‡A¹sèE `Ùfâ%.·rí^µÒ6|l(I¹$Bá ƒêoe-È4m/óM›2ÂÒx6vªp•bw—'º_""4xGöñ¨¶,”Û/þSZÎ!p¡\Á; “¡—†i8Û Zþ" HØäPD£ ¿Cï2¤p˜í‡Ñc(œÖh„0'´@Žé9gvb(gØBÁ@1{pÊìåae/üºÎ7N„¯Ë·Å¯­ åëhI þª*»cu§²È·±s†ÅÔY„ÐZŽBÔèYÞ³Ÿî_i„)¼­Ù!¼5NEÙ¾ÓÖ#G›BDög)³Ù‰®hdQ¬ æÄaaÎhc›—Ø´gÑœw­<_Ù[ÑVá:0kí‡Ú•€¢·QŒh‹ZpÉECŠÀÕcp5%paÁõÀ­ÅàêÊàÖ ·ƒ[S·^¸ܺ2¸ÀmÆà6”ÁmîA n“÷Y¸^»oº`{c{ Ì¸‡‡¼Îê Dšov „fAÚ(ãÐFåÕÕs†e6÷ðEE¯®NšS^­%ø´VS{¢Ž±VÆ:ÂØnjŸ«c¬q a´šÚê׊À¸Ž0ÚMí©:Æõ"t9ôÆQŠm9Û‘ýœ¼>cn"6µ/Õy¸YÆãQSûƒ:ÆE`|ˆ0:Mí+uŒ ÀX[AÿÛÔ¾VÆX[)#ò/ÚMíê‹ð15ìcܦö'uŒEø˜ö1ݦöguŒEø˜ö1^Sû‹:Æ"|L û˜^Sû«:Æõ"0n ŒÇMíuŒE`Ä~æÇ¦ö7uŒEø™ö3~Sû»:Æ"üL û™ ©}«Ž±?SÇ~¦ßÔþ¡Œ±^„Ÿ©c?3hjÿTÇX„Ÿ©c?sÒÔþ¥Ž±?SÇ~æySûNc~¦ŽýÌ‹¦ö½:Æ"üLû™Ó¦öouŒEø™:ö3á"–:Æ"üL8m2ÏÈö²ç é‰å„¢Ä'b胊h žÝˆKè"XB-_©-3Å«îÉìž® S(Ñ!òr®&ûg8ûhf ³.-·Ã#f½ˆè‰–Œ•ìYücÙ¾³Æz•dy:;¯°¨¼,)ðu>NIµ-^LJÇщk«7hqO\SÇËð¦ì‰ë¸Žq¸FµÎ²zo¨`NU‹Ðæ²t5ëlµrFáÁê[ˆXÆÚ¿¯»~©@mÖâEȦ¥J¥Qµ¹œ& ”ð Ã?÷~iwìÃàùñwß<ù~¾õÂXöœ}¶MÌ1õc×lÛG=×ÂÖxúGAž2*Iæl&±«&Í_g!PûÑJ97–RÎ¥” c)åâXJIEï&!zP¢åx-{ïk`hóÀl»#Si\ÂT_s¹‡ýR‘Þôð2{Çql4’"¥öžÝÍlNy»Ù dž-mø… ‚ÞÀoÛœ=Xâ/Þ.­…,â/÷bÖfˆáK?¤¶1Ò_h3g«˜p•ºácà%ÎuȘ ˜OÉÏö¶d “-R-œÎâ3µ­p»ç…БHûè {˜Œç¤c ;³ÛË–Ãêÿ¬dtð*÷¦œ}…¼Ã«RÆÌ ‚¶éSœ£°¿Œoå;az<À¨-¼R{dTÄøŒUDÚä®”í(I[!tcÕH×eTßÞ–¡p[†êŽkAßÒ’…Îf”;Qjᯘ!á'£þ¦û.NÏ?Ô4#-DžIb<31±™Í›qÊ‹ˆ‡ç¦^OzEê¢×‰ªóBky™ñêìÍŒlzCþP® Ò7éOé÷éŸ Ò7é‹‚tÑQ½² }[~OþXÞ¤‘aΓ HŒ–ÓIÏù_È}i O¡Þ¡ª;Ko/IË¿!(Ÿ½ã„Woì3ZÉe#i%·•pn%áÕó;ªž¯p=eèWb0úQqòЛÈ3‹îZH¯'Å•2GËETåh9‹\â˜;2Â1=΄W æ_RÁÜëÂëó TŸ§å÷ýÓüò™ëKxå_¤ÊÇQy+²ñi 75H¼ÞÔÝû‘_ÇÐõ ¼:.MeØ*‚ëñ{Y6߉À( ]• áq'ÁØB!ç=lU~ ÷~ *Û¦¸™(ñ9ïáÑ€àÔY®á)bH@M—;3ÒV¨˜Â >¦ºò&¯çâ“éEFÝù=C–CψØsEZ ñÉ|m·¢ûªù¬é³è®™äBl”7]§ òBlþ„Ä^Ö„uÐMÊi|’Õ«O$©W¹ÕQ¹4ú|3;Ÿ³å„³ú)ÅÆëÒBþ¸¯r³/qJTá¦4´ÐCZ³õDMa õÛGZ ÀQ €N8àÚ}Ðë€(D0ÜI( žÙ0&ƱÅ'+3ÚÜÛ˜Eý–´¨7¸Þ¶ ÞÔÛOôMµ•¡Ij­‡p…ahªàÜÄ,ÿ½|ŸL™€Kžã¸dfŠŽï•wiœ“2Å2³ùà*¢›z¢'/q‰ä­ˆÍÀÀ³x¯‰¼••ˆ ugÙhw-ÑJö<ñ?Eò6*Übú ßMB²«4*Ÿ¹ÿé‚»êNN²!Ø#AúŠ }W¾$H H_¤ë‚téPñ)Oëãq£äP[ÞþSÃÑ_Õþg^?9íç­Ó ËñF·7É#+`t{JVÕnÔʺ˜‡ãŽ4îäS<:z;ù¤ äÉ€2[ÈÇ4 5›Õ»ÔÔ"ZÁ -ç-{ d·0 wäܹºÌ­à R WÙŽ`Ϻ9Láª2b‡c—q•~5&‰ÄiNÚX màÎÛ=ïF–2Yw¥Q èÃX6–üÖ4 c Üß÷Áü½³à÷6ØÛØ»;`̉Ö×1§Ñ¿Œ{q¼¸³Qÿƒ~ë÷µØ)-öß{ËÝ{³Öx> ß¹(G•Gogo source.go-[*]-( Mode:)? Go -[*]- identifier\b[[:alpha:]_][[:alnum:]_]*\b type_chars[[:alnum:]\s,._*&<>\[\]-]ÉxÚÝ\ëvÛ6–¬\77—&mÓ†¶ë˜”E:qÜ4u-+i·ÝíÙK´ÝÓ]Qq) ’xL‘*I%vC¿Æ>Û>Î$A‚R²’mª¢ ƒÁÌ7ƒä¯*ñëJò\7×9ìÚ®ytø`¥’]ΙCÃËhªÉs%OãŽFÀ üŒnIL÷·×’ç8{À÷-×ñUÛ@Æ÷\9ú”ÿùäy+Gߟ8f©Õ®Û;ɘ_Hžï³‰Mö‰)^,C òNêL})y~̦ž1òU7bm–gè”Êõnò¼Ëîä`â9jp2&ȵ\k4v=Ò®ÉR ®&Ï›y2Ç ,ö~ÁòZ1mÊw¥˜6Õ÷{Å´0íõbÚ]L{£˜ö3ZNíãÊœ¯çhýÚ>åˆïQ¦úº]D™jësaýÀ³œ1ôB²tܙ؄,Žàõ墇‡#ÃrV(㽘~ Åö‚Ê!pgÃ4!Zào?¡Ö 2r'¾Š½ %½G9M×ð-3rŽ”D¢€'ÂXüå*݉eVÆr0ÓðÚ}cb§“Y§á3þîSŠ?Æ[üý%?›˜ä>å$´óO0á&åf4ãv™ZÞöb"…‚<.bª:eP´a²-ÊI˜ˆ‰”ÒÄÑCuŒQ:!•òSVbZÂó)‹Ú¦Ls`»]ÃÆß> ì:ÁNüõCÊ\H¬À4;”I“—®×K¿D-Z:•&Ú¥lŽô½Ï(ÛA[µµM»’Úƒ¬ïcÊ/·dÇÏ)½ºcà›Mû µHcŠÌaö€0-ðxò=Ê™|g6()ø—T¬ÎàSìSp㥠|ÓƒžJº{“Bì„ÎÕC×îeV~@RÂøëZ9D{JFô¥:ðÜÉ“ñ÷¶å­çNºÐ¬}Ûð‡"1ÒUsòMô¼bð ó~)3èT©˜Ä3ÌT¤îû"ÓŒŒ¹”LJIÓŒ9–ˆ"§/ " Ó—>T›‡ßÂî.kô(ªk°ièö’Ip—D°K¢~ _,å-þŒbikD’áÉ §z·­_ýíô°?áÛ?àu½[¥"Ø Ã³ è‘ä¦cj‘…jÙ(£–(b!ö¤³“S¹4³R~ÿëË8‡¾(ó#–Rè§ïѱ,ÚŠ'ÆÃ²çžƒŠÐ;Nðª Ñ#0)5¥9f©ì„kñø#YÞ„Á­†œh¨¶·&Ü ;À®¿å¶P0í"‹(°g[¦EÃ1/#Ýx»…o²gPÝ”ÝE*Ñ>ó®`L8:ÿk…»ì5q'\eOJ‹®Øe:Su‰\ô‡%•‰9—¶²=1çÞû晿ªRc ù¤[,ÚÝFVqè"Ûd›ú©2%-<"I ö  …Ïc+ª+-ØÀ7&]S„¶†˜´š±Ÿ„ká/™ñÕd|7xv”™Íš²Óu)s•™Êxƒ.UJTÚÈŸ¿(%ÛïQÂ\&--ÙÔ†va^lä ö´„`dû#Nûn…qóÕÞ¸°É’\ÿµÅU{8"ÓUà›L‘=ãe™êô/‹——‚WÍÒá€ü0¶eÕÞ¥‚!Q~Za¿ª”“}>ã¨×…|w♀J\ù/Øß­”+zaʉE%·V!†ér1TÝf¨5> Ÿ©XÓà…êÏ9í9í_ T•󊶬®l9üðqø$|´>ÞUZá„l^ÜÚ·]#1MW> @躶Ïs½0v›Ð›8 „G%p›~,?Þ î§ogCdC¯+e©”¶âN¦c<†ÂÃÍд]?Õ,|ŽO°aÕ1´FÆ ´ŽŒ#:àe86Ë ÇpA‚øÝvB6|3]xvK( W4ýÉ8ª¥e»äö…Pq9‹ºž‰\ÊÑ b,L³¸¿ <×ÎOYåF¸§ÌVš+ÔìÔAåýR¡ pm«¢µ=O6à ý|[¯KMT0×ê-”P5%xRÝi{r«“á!pMÕ¶|ØÍpˆ?¸w¦,ü J3û))O9«`Äâl9/àÖ¦§Y¶ †Ômœ¨Éj©2a?Nu·W]”WSš[§47}j›(E Ì»"eF Y»ºííÅ©²V)çt Øä´ËsðZç´?ðºÌéÃKp?á´ó2òO9íO9í¼Dy—Óþ„Ó^ç´¯1ÃG»J©½(3+D™sæ@rÉ8E^òF9_Æä¢—hs½²³Ax.(믊Ó-ÞAÝå3ÛÏ¿ye³ ¥Õ²™ÎZœ„F»h¹¸0c *:¯QK´€CpŽºrå–EÐv‡_=Éeä\û|G´¹@|5o~2u>];£ Î{<“~é;Ë´ðŒ·²Àrr‰X{…\n…z¹R@r°Ê7¨hs½Õ†'2 ¥£Ð—1RÿHç$::~—'Ó3–½6æË[¡û\Àš„j€Ê€I^¦üZ¡‚Ÿ¤ëâ½4Ê¿!|ƒÀ” &z¨¡ø¤K¸ånBA@ØMx‹º³ (ë5‰¨V|ï@h<Å—žò‹—3™7r±ér…­Nø'µô‹€ZŽs-íqÚ¿à´ß#o¦Z•Ñê*ÈÎR»æÊg2ñ”xu ‡œömNû¾À?r €Ó…èÜ:¾C¢Äp±¦Ü3áù5þe ½ÍÏ]†aÙוœ¨7˜’ås¦¥yEX¢ŒñõeBW+‚¥ÈEÊ«™©BHŒ-U>³E¾þ^ËMk%›Et~ÿöÌã½Ü<4z]tö'F¥õ:ñƒyB&½$5›×p3_Vº‘ÓîwX|qf2öÚð©êð뽦RJ.¦`·J;è$3 _†µW3_Z9TBS†c9¢ŠghÉý0,X£íËÀ Q9TuYóê46,åöeX57l;Bë@&že¡á +.*´ÃÂíѬEÔ2IËJÖ7Ш–ÊôýéÔ¶l8ú­{ŽMÚÇ?w}H\ÂÞ¤™8“ð,S³âR½6ÇF˜°Pm‹‡*öbÌ5Ï-²‘ Ù~ ~ÑÙÒµèY“[ŠÜßtÚ[j§¥÷¶”V6…UÞ¢S-ŽPÊÅt<È,cµ^¤ &3QŒ¾K@ÑÐpB”H„ÐÀCä›°ê?žéðãRÊ-’0ëzƒê:r{VßÓûîŸè ðÀËrÛöï14´Ž•å8i[ŽvîËëR´CPV‚ž7”Œ@²ÿr ¡zª±'É„N„’¦i°'L>e nGè’>á‡kb£]YT\Á¿RC3¢qoi.6%A•WzàA×V¥¬R7¸J•QpŽò*EIÚR.~“_T ä5ÞL9Ãyªó —D/œq‘5Ñ"çªax†z¨‡%n1Ýî·ï?ïÌÖuîËlÓ@Ún®îtšó‰¾¿ÌÙU Õú@tª+‚^P°{OÞð}kààŸŒ¶Õ¶º]¿¿°>ßXq DŽÿW†ãC‡XŠrJÉíKØ—e‰ŸfI1’F%Zqé„D~.v}v`¬UyúgåÀ‚‡å1#]PlQ’\ÇâpŠ—åeIB° ðÚ6Ü „¹HL«Ã#Íè’!zr»d»—ßìº^<Ûº2ºv„¦á;"£ºˆW–뇻0¸ø¦­ú¿üpßjBƒY—â_uÇ Uš3!ÓÓåösX/ßÒ£?"óB¾€v&Z̽$»J!þ½ï .rl—2ai°¯"pÓÛzGMXKR½óéàב[`…/Ê-ów±oOzFÚD™ÓûNû*ÉËGÕ¹µš\ÄQD»ì=t®Y\¸É0ZÛèF‘wŽwî‘Å.|÷6HëEå ôu|×]ÉêáÜ£¼’ëz‹1³ôB}­Ož ¼Ÿ[øÍÙf[¸&%'xƒ1Á¹ïT8öVæIôÂ%k]—u=lݾãM‚›kðX¾Ú9 'ð±{þONC¸Eÿ¼óêÑ©2ý’4ú<þù,(½h¤kô®ž¾h4qŽ÷¥£²Øˆ¦ô"Y؈Ñký®J[›ºTøZ—ú¶1ð“@ßFEƒŽÒ*ÕÏvO’ o0A ¤´h»ñåÞa§‡ˆIêRªGI~fÖ?™d*²ÕEÂL:ô›¿Œt£É(î¥Õ †ÉÔ4£iVpGþŸ ú¿HñŒz–;9þùOßÿ¾é;ø³ñÌüÚÿaü«ó"ø±{ò¯á_Fÿíߤ/4 ÅQç(2ÑwàR»‰K€Ä?~açðtê@› —ƒÈf¦®Ë/èÎáÖ(¿,x”+wÏG×3h‹±3Dõ.¯U¦ ³ø=tHÖOÉ"ùœ¸-ü¡ÒL·}je8ÎðÓ§é ,ô8뺀ÒAmŒõJáoxÊ™õ>/LÕ'§cÝl?*˜ÞÓÂu«“H g fE¿€˜çžËä?ª°ÌZÞWQ½8*À¢ ¡?“ &xE ͺDia©œNj³sf^øÞ=Û¯ë¥K¼k›ÿápx'Graphviz (DOT)dotDOTgv source.dotüxÚ½WÝnÛ6¶tMÒ&(lÀ†K¶Ùɬ¬½\×äv5`WqaP#q–H•¤æºepoµCJ”)Z–Ý!˜/Ä#òèü|çã!}:¨~Ïêñ QFç!Gó_NíßɆÖKGoØ©±<ÇÔÕõë½´zýz¯¬Þa=~ÙÒÃyˆãÇÓTæÙÚùƒ=”›¾ØC¹ ãa=¾h+¿/8‚0ê päÙŸÏsD¨]}äœÏ…D\ÚåÇÞÇU¹ìêÏ…-“]ê­[8íú±7¶’=õøb9IZ•ç^qÜmA}âX³9–(H8+‹ fràh¸|´<š}²Îë±(i$K$!  Æw„#V&1ÙQcÈÆxûóë·ÖÔצ.G’qóý êÐIå¹—Ò 7%$%'a)±Ø/¯&˜I^ŽÝÿ5¹oÛ 2B1|]†žŠ ‰ÔOsè¦ii>¾É=ŸÌèM«ûM—Z-ùT„Þ‡SÏG˜±hÑkØlvqeç¿ï/’µÝ®Žc÷«z¬ä‘ÆQvózó j´¶òx|=¹™‰‹ ŒÑÏú¾^F \K”œõg †ƒÚ”Ây'ë"361Ôn%ºù9äö›õ¡³í^Ù\Ň=†·°çÍ5à»Fw0Úëûãõ÷‰I7›²ÀN¦Ið®dÇõ^êm û¬ðCj›}¢aô,ØÜßN àn”B‹ˆ$æ*ðºU˜Ÿ=[o?~RM¯ù±·×ä8g|5]o¸ƒm¨ºDv«y²¥7ˆ¾QŸÞ º>õ);{÷Ǿü7Τ'dÝɺB|~·vúrïãcwþ8:±«ÿÒ!·¹uÖêì=´ hß®f÷èãpïbÚ—ßú·“×Dw—ñA_ÇîÄØÒ)Eª˜LnŽŠt2 gâr<޲R@K€#hy s¡m'ÐIÓêG äªj$¾¾½t˜D®ŠrÇZùÐãCûžE)“ua˜ü®^úq‚t;u–ëØ]÷ƒÁt1e1V8N°2ž!ùj j¶N$!í]Ù9¼úgm?dR²là@œ³eŠQ¬Œd²1’DÄÈçð¯°Â€-1€Æ{‘Ѧ«´¤c4‚ÎÆâODÈÕˆº ˆFõÛ]ÆPh塚µnš7ã«‚<3Ùd&þœÐ S%@×ÌjÁ,Ôà‚XE¡%œ Ô¦–Ÿ‡´f­‡t°F:Lj4J³ÞÑÅÌyÁJk¼µ²ÁÙa¤‹q€ ¢õJ‚s¾BF¨qèR*2’©43à^ ¨¨ß«ñ%°6ÆúÎÒ¦/ì-óÐ%WBêe®Løú¡'õ¨íqýPÐ8Àv½ù±F¿ÈpÁ€@ÀqŒx”𰫇©@ï`~¾ó¦=u\Ц·Óë·}—4[Ò܉8PPψ”ž1ûý+Øæ¶À«%µ6‚„þsÔœD›&^û\ê¾  V™æÞùÓ^÷ÎÝ'ÓÑ`ËEïÉ–ù§[æŸm™?î8ñº/Œ}×Nû_ø_€†¦:Groovygroovygvygradle source.groovyç xÚÍk“Û¶Q²?Îvl_¿ò›<™<§éórgÅ“ÆÎxÜnf:=Ê7I¬)R!©;ËFûcú)3ýý/ýYBIùìLÎ>Q‚‹Ýž{ÒÊÎÑç=7ŒÂ=/p“%{OÖ[å5Ø— ¬MŸ_”Á¢é…©5"ïMó}^)¿A‹ƒ(ZŽçîðG›ÁsbŽUÂG3»iø?£Ï_•à§(DCËsƒ =NŸ÷U CrÜ~Z1šº~8DÂ2'VŸËY:©Ü†|®°[§*Á8¶5ú\/…(I÷¼y, „§éóódŒÆèí¬€:£Üý„ ûb¥‹™¨Qgéó†ûáØúa¥¤Í Ÿ7ŸÃ™<×`NïÅuÎ+sæ^:E..H ±·Göl]š‚›¤nœ®KŠÆä–™“ þ‰<sQBAMn]5“fÉÔÐ%I{(GrYR/ NàŠÄå8Ž¢ýûöª¤$ù·– ¹&=kê‡óÄšº3 L“/y]â›šíº´›çË_s/Àànjà˜õ3¸[’Ïwñ¶$>™ÔŽÄ¿à1ȉì*kgsîJ æËuR2âÂl×%ÄóéÅÁiSskfß>”œYñ4ú#_@óHÒÀ’¹3 CÒf•É2X³67U»!±˜Ãòe»’Œ fe6ç³Y§Öhzd[8 %Ikß æ[² }7ö]à‰lÒç)P áÚC4òCŸ,kgfnçfÒæ°X¢ÅèM·î›- 5¯­ÖDoSÓIºÆ®k½{fýã‰õÇ=ÇîwÞÖ6ü £;}³ûÔìôF[bTM¯NPìÃ6ÙÔMQÚG$ÚÚ’iQ¥±™vÙ”P:_žÎtœ˜Ÿ.ì(…e‹Å-Qx…ÀXð0üé,@™θÔÚïêH,ÐûÔüˆœñ7_U ‘á1úð\©tረ W¸.ìÀvQñá\3°óžk‡0‹é¾A·½ïlØæÆ.l?yK¶¾1› 4Úµšl gK³¿OésF¬pžùGQN %hæfN]Üú¶äMhì³³©j[*SgcsIOäM}PM3[W`¸-ŦL<7Au{Ý–ÌZO”UC,fü  rãĉJ|]Â|§¬Ã<ŽÙÄîãìÝy/SΦl74ˆÛ,ˆÓ5ÁiÌÀµ'$šÊºÐ:Ú„©["Sˆ¸øœ'QèÆ‹ÏÑot±ÍÒe‘%!3©ã…혵JöUµ’ÑE ñð2\“dø²ÇìÍ—ÕX ipÄ•r¹¦!ÞÐøâœj[ š†²VQ(®*¨ÇÕ,ÕHè?\»Þ×¼Öé𠯽­AÈ ñ`‘"ìMÜ'Èb08G< "7ÅAŽqžg7ßrºŽàê‹þÎDý ¢>Ú…uœ¾¹aÂBf^èº$ZìõÉlxCR˜Ò¹×aYã÷QCÙÖe 7¥LRË¥ÙòdV•0¢–&ê>`’ýärüPÉ´#™£z#ûuclæ}.­f]é$޲<¹.ä-ÒE2Òúyr¥´9=¬± ‚Êüå®F’Y­Nªšbgt2dõé{ʳöÊ^LÞÍ»þ5»ù©–o)Üé¥ þW­ î(v#A^þô üVå@÷%då ÕÎ è¦É[}F¹YK«ª"O_[柵xlâå\8 ”x.ç¿U¥|B²†Qêj²½c"Sìƒá˜ËR~þ®šóbUËÇó¼S à4_”šüN½‘_•%”—0¡i œ G••úãPÈú•.ÓVf r ¨Í‚TÛv½¬ŸyÅΣWÝ~ÉÜéÕÔh¤¦ŸD?³–9÷!ËdóèÏ QÀ4‹—b Ó±ÓûZ¶ïUx¶á kçZºÍc^ØòááW ¾‘'TkZÞ«kêý’5M>ØÊªTÙIé‹S°³óïÚýš¯ª'½ÀpC‡<²¢÷r^0€,Š{( † Ý«z)“’±³³ƒáÿ¼½ƒŸ’×§xþcøÝ®×Hƒ  öÕ¦±É;«÷,E§Òr,ìt®)wœ{qv ‚Ü#ËßU˜@†;ØÙÄêYvÓ t9x¹£"ö~ø;ðϬÕË Cù(]kes`)•g½6îÝ1í.ˉe½+¥ÄH…à¬>Q:Ìb"© Ú3ÈïX½î|Ý/¶’]øÌºG®îðó†2P•'Ës‹v\éXPœRM$ÞŸ’ëoœöû@ü×¼ÚXÉÏ!ë¨W‡ÙÒ\yê5ñ¥Ê>úÕ–úg©J²Î‚±õ ß^Vv—°®Æ*ñpJäÁpŒzJ{W:°“gü¶šôåë4öÚ€s¼U±=ê.¶QíjJW$ñDi‹b˜73=a9d}«m •óK !'ËêÿœHÚ·ËZ‰Ð*{‡â¨ÅÐQ‹o«%ìºë:Vtö>¼¡—÷(ó+ô喇#¤!P¾eÚ7»¤÷'œcozb3•±µ#jù1à×÷kÔÁkÜö;2½,GrìʱæH_¥)§JêñãQ•6°Mg ‘S×qÃa'b}fâb‹VtÞùýÚ¾]³›wvyã·h‡è{ø´ùCg`ò\|µêÝ'X–(05õ É*œ¹ rÃ+ÝøÑ4ÿµ‘t Z@8(™qòÃÜ…‡òL °9joì#^ãÍù" v‹ŽŸ&(1ƒ×,$Ìd! ž$¡s|Z7wµ°Çô´¥ã‡£híð².|œY8(‰‰*gáQå¼2ŠPG”p¬£°#g>‰7û¥ŸbÜWåyyc-û㛨Ÿæ@ì›Ë•"8¡IôµÄ“‘“Òä{u“ÁœèÔS‡`zí°LŸ> Óg4™¼2dU‡©µVÓÜœ'õ÷/:ŠäOu“KGÔéÆDMX–e<1Þâ¿›»¶¸Öè™õ\ 6 ª¶ÌDLƒ|ÑÕËÞdßÙù˜iÂß™˜öLc÷Eð|ôýüOÃ>þþž‘|u›á|JüØjg»ŒÏMðB»¯7ûÝÍú‹ÊuÕKéæY“ÜúL•°KÕ=óZ$‘Sœç$BWh5©nMÓl¦@ÚÌq*ú!€,ψ \Ü©€ê÷ªÕ“ªËjŽÙªv„_½ý:F¿a½yKåk–® ʳÿP­xÊ‹Môïl‰EÆÞ7Ϋîjô "H€BsÙlK˜Šˆ >PZ-¡Sý¦+cBC¯ÑüúßF#_Ñd“>oì‘›_ûxÔ¯¢NwŽljÆ74ãW”»µ"°jE@o”5‘Â…&R(iNöç*ä"Qª¦#œ=àó!ùãÒeýÍÿ·È.²Ëúûߥ&Ñ<>wýàF^FéwʉÙÃÚÀ8 çˆðîüz±?K1¤2&~ £l>âµ—äŠÎ^¾… âÂ1þ|;SŒ^ejƒã9ÌûKH.‡¥8_?Ï.(¼@á8àµg¤l ˜«·u¬¦(I}Þ§˜}´Äl€Ð üC¾úp>á9¬ §Í“&2mt÷ 65ã]ÍøÍøÍøEÍøcÍø¦v#3¥?Á +N·ù½aåU’ŸN-‘ôHTMLhtmlhtmshtmlxhtmlinctmpltpltext.html.basic(?i)<(!DOCTYPE\s*)?html xÚÕÙvÛ¸U’“™‰'™d²MöÄvKv(g_Ç:9“¶}hÏi^ZÛñ¡HHbL.Ž=E?¡ÿÒ÷ù„þE¿¤ ’@Q²¥xx$ïî~/½­Ä×Ùä¾dzØÛ훎·ûøR%)`žp˜jr?§€Õ €DOs@O9Щ gètÐsôMÐ ômÐKô]Ð+t¦è5š/zþ×kEˆé¬¾£§B+ç €„V~(Ã/Z¹ §[Àü¨‡Š»¨‡z»¤‡j»¬‡Z»¢‡J»ª‡:û)¹ßÊÁ¡ïx]ÃÆQÛEÆ/‘zßµ"œþ(p®'÷›9œÐì–ka†€ÞŽB”¢Ü("lâfia!·´(hy¡Š°Û¥QawJ£Âî–FFz¯4аÙ‰§¥‹<ä;–J‹c ,$„p_2¹ɱU”=(/ˆzX^㬕p‚Ù+Hª—FT5J£ÂVJ£kY-"¬å‘”¢vY4á_ )7íBL0ýnJaRôo€m:¡ƒ¹&å/ùûc)ºóû},èy"¥æ,­O¥X«Šxö™6é8ìs)Î+bÿôB*ù)ÿôRŠúJ¯áÀ¯¤´&[3‡{-±æ£N‡¼Q(™ÿ´žÜß&÷ª÷ú(4›€ßøhàc ö›}·Ù ûn%ƒÅ•Å.^ym·6«RDžFfè`¯i£Žã9¬IÇ@žw[Ëv*‹G~ÿLóþ¹Ä7_jk ¬fÛÅÖÞµ,¼zª+ ÃØV7ËÅÜð18GÕªDLUrÇÛ7]Çn:®‹º¦Ûl›¶‘tØ7~þðþã{ÖUJ /J>}ô¯É;ÊÊ]ÕŒsù¶ÞruÃØl´@õµF=°|g6ê› |ZÑ[6\ ³ŠqS9%ßk#u¶TNY‰U¥\S`‰mÔu<†<'!ß̆®Ã¦göQ–ŠrJBÃòSåò¤Êä¼`–§Ì¾¡‘oÊÏÄ«2²f½u.óŽËøßœË,à©Ê¨«ªèþ´ˆ×ÑŽ| 5?MÔo#ÛF¶ ·šÅ»žuƒÖ;á k‰ÈÚ(úØu[ô÷NÛ¥Ôgµ´²µít:ꦢ÷¬äÞh 5ô#кš¦wX<,ïãø’Â:u±‘þŽ);#Tµ~¯µÖhMÂkj ;Øïmá ‘æx®ã¡“$½ëG‹ov4^òÝî¨JnH·wG•Ä®³iÈ\ÿð—Ÿ?þý¯hðÞniÒ©­ðp€RÚTAýÇŠJŒÛ[¬¶ÙÞ™.æ ø,¡¡â0$\¹÷oìñ¨ÕÇ¿ª³ã“b!74†&L¯N ‘—e"­(ñ‰ñ²K2y8ì!ÿÄj˜Å€!³j`Ÿö/n}ZÜÜYYäCòYp<ÿnÆïf'ØÀäkhŽv1´xjFgý¹™Ù)Eô*OêÐÄl¢9TMc‚Cs(6¤jÖ5ÑŠ/vÅS(Á°ÌJM—Àcr&š:eûÍjòJæ_\ø-«y @©ÚO: ^?%³+5Í9Ÿµ¤Ö;˜Š0KR8½fÄ\$L'7¼#ãÔÁ$±©lå¦ O¥ _é›H2B±·?.E^¼ˆY޼åi§Rü©BáÔKžÑuUcæ7+…\Û8·rã\MãûÖ§í`csmyq‡¬A¥¸Ùh¬òˆu?kÁéJù'ìP3Fà|tU™ œ_—nF^¢Ûì7ÖO¼Íâ¤~Å.cñµ ˆéÊä(Q6YËòz,lf¼éHl.OƒM•§Í)…\ÞÙ~…ÊszÛ“tyïNæ]áêÞ]¥Tç$¨”7.­ãÈHË×½²|-TŠ.¥-K`UiâEUó¸me<‹/W?d’úbcÒZž´bk²´–GTj3LÖK•Ù$ëûc$ëš–ôÚ•¦K§ârC°RTN´Ga⫬EitF>ðpF>°<†ÌI™I¯SÇéW²„Ø2\'9bi)MJéZµ®¯ãCGdRQ©NÆäï¦TMW…fRª62ïøÍ9õYÀ¥T¯ÉÊZ-_«eùzT)ºjª‡q˜åc§KQYùåD¼˜¼+g=_©x²ü–g ¿SÎV¥´.”Çà+œ!:ˆËuØÄ kˆŒBB³EÀ:êžàÔÊàˆ(.;j‹Òì`{Åôì¿rà£þ°Qß2_ßÿxl¼ÙY%K[Éý€6L£óÞøãÎj£þ¶!Ÿ"›5VÏôM+„ ›dퟥ(y@fEcU™.掌YÆ6èçÜž±8¸±ÝjÔúnºÏ¢ãéH'|_Þ8ÉžÇT™fþâE/=SV•²Þˆ\RžQUU¦‹…qÏèú?›ëÿÐÀZ+6ÏÝú r}wgÅm,sºÊÑ ”öU<]RóÔZ‡²}µÑªo4êôðD²u²Ý†~ëì°®e6öæ4!jä–ÊŒ·öt2¸œ£þÏB¯ ëÉI¸ï¼IØrë]³E}v p>›ûf‚Ö\i4FKjôyº™ØKæ$©NVù$x+çTml’2mB{¡MÙôµZW TqôMŽ£ÿ qdÚ¶‚€°#i¬ô ¶MlgŸÈ¢ÓËEµóÈ' >ñÌ}ñ+"¶Kìt| 0þ ôžÞSÒ{FzÏIïé½$N áá†àög…`— Häs0pÏv¡sÛñÉÀGÓ—ò”‡ª$ümN†$ÜóO:ßå8¸9Ä=iG:rmÐêô™¹[ÈLîØŸŠ›39nþ7lñí¶OLËÇÞaŒ™¤M  AìO{!iÛ˜´.8Ë0'°p ƒØL½ã"¡À"‡8ý.q¼€8P¼Ûè€ìµmâ:ðÏÛ#}s@hã@ÉÖ'¿€P?’ämÐ7]—Ó#´ºßCô†½.a‘žQþˆžÂDdßô¿žRçEUJ™Ï)åOÃ5 C³ã ¢¸f„ Õ5Ìk„]Ç8ÖD€\2h6¢Ê›>ç÷Š9ißçX??lÓgáöåÒ.GÿÛ!ú-ˆÞð?V;ÎHB–'C›„4O°ÿ¨›„30Ô…b^óç-UüþPQÖŒq s4Q¯ÙÇé×Áüç‚ò4ÀäÓ‚àeıA––žiаy>Çæå<›b6º>u®t…mþl§Šƒ Ù:S{’FL”†ZËrt<˜Ñ3‹?ú憎¿kÍ¥¥aùØi¸^š.U:¹"tv3Š:;Þ-úK«wô°àðdA6¦qΜȶô0oK± ¥}0ÛJ±ç4#g… š¥Cì7÷Ðaf+N'¯¥åõ[Ëë€ †Jk{fûP{fû ‰5JÈ÷±ïÚnDo–éY-Ycàš‡d^4ÃÄän~ë™^—vd¹ŽµÇî8`ÏPÂ@&e5<­©Ÿ^k޿м_×¼©yÿêH5E¼X{Ìq(]F$é_q:äÅ\åÿz\LHaskellhssource.haskellG xÚÕZëvÛÆ&åk'ulÉv/ihK‰É`K›FÂR$ñ˜&URJÒp)vE.% €’Ünó³í¯öœþíkôœ¾@Ÿ$OÒÅeÝÅ‚¤lëGq…ÛìÌììÌìÌ=Ì…ÇBt^„–muM»wÒíÙÃ!²¼îÓùL"þ˜ç£óŽ8"s¦sÑù6G7„†•Ð\ɦ‰å]ͦù„Ò\˦ù”Ò\ϦùŒÒÜȦù%¥¹™Mó+JóV6Íç”æV6ͯ)ÍÛÑù>Oc÷Ç&ê¢ó‘í°§œÞå¨G<„êÁÝ@æ¼0öFüÖõ ãÑ×?˜p>2/xµõ úþ=á½a Œó®=¢ïï +ÏêwOГ·¥íQYpˆæ_§fÍ4/œŠñ^ŽP×5Ž,è˜ÇƒèüP~âÅÀJÅcèž ÓÌ1ÄWØè£ÓÒ¹°Ì3bì‹;ìHÊ_¦Vè|ÇVÏCϰ­b Ë.©ÊÈêÇ Ïå$Gž qQVüln’†T£‚`-Ó°P±oM¤õ¡{,3\ž•L£M) ×–T`•Òòýãê ȃdÊ=:áôCʊ¡!¡œ#©1]^˜è'èå™íô‹¶GÆQ)RË,d¬)—§©Ã¶¡öÇÎj^PΰN¡iôÃÕ /ž5sråºS'N£FS‡o`òÁñ„õsÛR`ÛF_Å[¾sÚ.F¦Ñ#ºž"¬lÙfâ=ž"Ç…*q¬¿À §›ˆ lÛg¸>Böpªþ¡‰u‹<ܰÇV¤fH°eÚÐSK¸jyèÈ!tÁÃ:"Ó£³x?:»ã‘Ÿ_"{dŽû‰Ã$QL]»]Ö¾ëøÈu—;+”ßRt&nnx/#£ùkx¨¯ñË‘°}[)XtÿáýTûÂçhK³Æ)t HÌñ?BáßÓüÆ3§eù‡a‘ìoõ¤±ÁÿÝ´‹à0/!Lî±êÃ`¥$ _c¦»¯j‰£òIƒSMy1&A50ˆÿ@}ßKfÒ?±óEâ\|þ^†É¢õrŒS¢ÐÔ5¢7@6ÕdCß ]ìõ|—Žü"Ïñõ|1¶É€(ÃOM>7¹äŽS¦êä},’%߯þN' ”ú~ ·;¸µ÷-Öý_cëõßáråÞÐkx£…wöpm ½‡·¶p¥I¨q«Š7k:Þ¬|L~Ÿß§ä÷®—ŸáÖïë„Ï®”Éù9nío`½UÁ[-¼ÝÂÍÞoáÖ.Þ$œÛðp`9Þ)àñ2ø¨£ŠÑسƒè#Yç˜ÄcÏ#æFnŽd‰çq<#»ýTû¼³Š8'W_”µ-¨ ‚{ÿ6Ù0–§J±{4%²¨7‚ßU~ Ú CæpÐíˆK“Íš¼ñÛ”»Ëû¬w‡nFâÏ5¿™ê/q`WT`ÐI2Ð\Fú‰èŸTX_ܰò‚¹ù˜’™ž /½ÕÅåÝPÄÈàù¸þ¦'[å8‚—fWN`û`) ëY9¼òêÌý_¬½*¾²a>b 3ð³’Ÿ‡üMWc·ÔiúWœïÎÕ[r(}èAl¡3ŸþÉÓ̯·PX,|sŒ¬,xö¨`¢Sd±… ‹s C\8h¬wV”uµ ܤ’J§ ‹…rN„e6uÉf*þ(ñC‘x„ˆûb%@!«‚‰C™Ùo̼9.Hë¯î²ŸPWÄXŽöG¿×LÜ Œ †K‹EŽç|ìƒ6iOQ1]ÂqVx"V‚ìæè¢ ë7Zpr…r—µ 5 Q[ª L&['–}fMæ-V3?fùÚzäØ=争dÆ M©‹©ž38þ›X©•ëÛûåm7v÷ªz«»½SÁÕz¥¶¿©ãoÊÍzµ¾Mvåݦ^)ï雸yµ^}^®áýú®_ ÔÑE«±ß¬._ëÍZyw×E¯ËµøEËçÝØÑ›z}\Öªuðˆ.‚S@]iËg:7÷kº_è•j¹VýN/[:Ó‘Ès›Ôj¸ÀÚ0ŸQfÞ“ÐúA\{ìð½@>7íaïN"ÎËŠ?‰(¥G‹±ë=™\üŸ :2øŒ+Sg¢îÒ ZÓĤ?E‘i*Ìå2–äά–¢Û²”6~ôáÒêЊë_þâ«Î*P1Pž“*:‘4UhœÜ‰&;DžÉ \Qþ 2ýD‰ÜŠEh*÷˵ÉÜp>œ¼ Ñ<36  ¾’J>@IR"ZâÊׄÖÑØÏÜcÂMbÔ˜ )¢ÅF+Í GÞKÍ4\«ÛI¶ ­×†i²¼•O, :”%—&–+óc$b)Jqi’9ä€5t6\šÜëœ\н+LÝ·”ËÍG¹õdÊT8pÔ¦aM ]„í6‘‡ +®WI$Á±é1[Ø €‰°ÂAh›N§”p™V6JK-¥occ€‰@ #ÓEŒV~Ò58¾LØ…-5(†g¥ôN{Uë”Â{.†âóDj*a¬Ò늌”_…ã§JûüÛŽC}Òî“Gm»Ñ aUM[,%+-…~Þ9 ¦,~v¶*…۸ʣ—éƒSr,ÏEZ5Þ—mD1´:™ÔÃÍVÜä\ÿNœ¡•Ò&þŒ=/¢vB8ÉsOùZá(¿z›h4ŽæÖ¾ÚêUOy[iŠþÏc ;ÿ”2°Aê–ê¥×sØÖ7›ŠnŽÒâwuTJÓ¶–vŽýÿpï¤7V1EÄÿAøëAPO×¶jä¶Òö¥Q9ƒý§âü]1Z]…ý‡âüEqþ¦à76=™ëð û!*˜Java Server Page (JSP)jsp text.html.jspªxÚÝV[oÓ0îeÝÆ qB¨ƒl­PŒ«P›ò<ð ªÜÄ´a­gZößq[Ÿ4qì,+“æ;öçsùÎgÇ»µeÛýSD2œ!Ÿ _Þ«å›ó 0u=æ0 =æ5`šzÌÀlè1oÓÒcÞfSy˜-=æ`¶%{ÃÅ:¬îH–†Ãˆ!Ê`ù†”TvëMÉ9|[ôn0›a¬Ñ4p¬_QXËëÙÒuÓ4lXØ}—ňù±<üÓ'þbÆçfYïw RÌåù»Ì?ƲûFÖ=|¬œ·Σ¹¥y9›+C  çä9˜y$ú#üç$ ž° ¦Š êd9Z=C˜Îñ~ZÂËÉi’=#ƨ?ŠÙ2†fÎø¼õaðDN!ı€Z(Šü1IkP4±ƒƒòJF<2¶Fxì“RFšÖ¯Ú͆ìáè……ßqÀ°gyA<š–ëªÀ„Q)DL<´ L=–+ìNE.ãUÆ‘‹ÂLaËóˆø¸bÿ7ÕAhe'z¢ïô^ðM#—ú!›bf'Ë |RÌe˜ñ°;åîæQÛݤcØÝÔxCJ^y¿04^]oòŽg%—ž°çqúI+޾Bƒ^Û!ÝΠ½V6‰a'ÎYâœw•§&+øM%âìÂ}[JÄy¾Úp[Ý“ß$øCeS—£96›jUù%%ªÿ %Éÿ tA«Ø,'¡qÔ©SÀ¶üOªBX®ˆŸSRdN ”(éüx˜f÷{»ÿcp•äìW!'ý•ä4#¿ŽTÔ%Út{wKô Ÿ²Å¡‹¢oª²íÔ.ã§ðÞ€žašk¼ÖtQå[3uòéò2‹<]vª=c) d^¨º5´TI³º$[ò¡¼+¾EÿÀûßJavajavabsh source.javaclasses_named_as_constants\b(?:UUID|URI)\bid(?:[\p{L}_$][\p{L}\p{N}_$]*)lambda_lookahead(?:\(.*\)|{{id}})\s*-> primitives3\b(boolean|byte|char|short|int|float|long|double)\bprimitives_with_void8\b(void|boolean|byte|char|short|int|float|long|double)\b qualified_id(?:(?:{{id}}(\.))*{{id}})storage_modifiersw\b(public|private|protected|static|final|native|synchronized|strictfp|abstract|threadsafe|transient|default|volatile)\b uppercase_id(?:[\p{Lu}][\p{L}\p{N}_$]*)ßxÚÝëÓ¶6´0Œñ†ñ…qZ§î`´M°±1Æì‡ÎIÜÖñsm·¥C½_îÇûO_ù!K:–ÛM ¿e[ÜÈÇÒ9GGç¥#ïÏJô9_¯ê¶c/é¶íøºo:¶·4{¦Âä 7 èžø:@{³ï¬yj×Ò=ÏðTÝî©¶±AÇ+ø`2âxÁo‘÷Æ×Ëüƒ®«oª]L”ï®uêÔŽåtßPL÷Å׋‚çzƲi›ÑSNo“>ôQ|=Î?„1s³÷Ë Í»oØ>…üX8-]Ýï®BœÄ×Ãnžãœža¯šv×ZëÁOãëðD?à‹‡á-ÓfÀäO(;_'9ðžÑvC1W=,îFð°:Ð]ƒ´cB‚ {­ÏÏJ°8‘”ð÷d|=Ï­¶áš]•A™~ ð0zÄì—©ÓYP Žäz‡²×uËì© __aˆÿ p9zæ±¹á¸=î, 1‚³ô~§§«x‘9ŒÎ8hã`ñé,÷Ï Å­oø«N˺Ӆjï#ö ìb&X´K™`ÉÔ~À#0§ó—ÑõUs`‚»Šì=ŠÃeaç½ûF_aVÄ„pz¡0_SAÂgU¤ˆ®f=@4}`Rˆ.Ö¸¦ÍÊ̵L°„³×…Tù«XV˜ÎnM¼´Ô×M›Ü­í» ïúä¶ô¨nYÑd€PŒq$ S€KRE˜8éöæÒóŸ“Û*XY2ËEàë`µ-ž6Z*1›†ˆƒ@܆–íÿàcµÈm`oC.‘›ÿ£‡79 ¾£rHîÝO'2J î6KòK`‰}!÷ï!ö‡€Í¥Àð<êØÔ`XÓO¨šOჹƲ—q7épè;‰™70º¦n©ëº›`Úz/Ëô‘gÁ$…†ŠÜl›&0Pô>f(7»€91-ËXÁôƒBà¾ü"pÎÀËãkÀ/Ñ«ú†Û7mÝw(¿Æ×cà Ïè›]Ç¢Ä=ª'²§äîc`ñDv”À~„ ’û-` ¹¨ßu,÷$¾Gµ¯æ»øz˜‡‰ì*úè¨(¹ý,BVåþ¦&mŠ ä30Hl4Éí˜1Æ’0‘€>t³v•Àü_O `¨í%Ð?Üb›Kn¿š&äž…)î%~}½:pÍ>ÖÖ놪ïî >(GÛ¯ÀŽ \Çwðé”Õ'€¿‹Óšô ãb©}§g.› #Z`n°Ãö©ãê]Š¿&„áYÖ3û äökÀïÈO w—âëŸñuXœxîô:5îõ¿ôu½’ÀîlLÂZî‡V%Ýg°fwýµ¨KÏw=¢ªÞ1VLfœ=ÌŠ‚Awø{CŸK¨ R9” }B‚2ÂÕáv/…ò†xnUm£¦h^­Úlh %Ac ƒ\ r؈™zÇ2(áã"–Ô%¬º#¤kz° <]ÁxXœ#rÆE¨…œ6#Ëkæ™XLÎtªDZ ÝFMß@ÝUÝEÞ*¶#È´}´l9º°ÍYA=g óBÑ:„“­áœ<Ï/Îz ê‰IP ß ‹n¢`«Õæ\ôoK¼{ºµ4ÙŽþÀ_Ï‚_5¥ªÕ¥–¡(“P@¬ˆ·6Œk=tCÄáS©w±’ñðLö?µP~~Ú…>^Žò.Ï(‘"Í3ÊÞ¼êä(+ä1ä{|ÄúâøpÈú&]bq„%ð/ëITVRµoå¡$ž‹lJ¾a1MìP÷²(’~ o 0¤á`Ä“xqdã»Kšõ8ÇÌÈ7†_v²ÚyN8F6ùw²l-ÆÔ“PºØZ!f¡ÚìÏM*•4adà98¿qPÇ1OÄÔƒºñvàb­†w†gøK uëîjÁé8œPÖ˜Gš‚´-4 Ì”)§sܪr з) “ÆD /ê4詜«“tÊ,–/³ô5YÓ°_²d[’öû,£HÊ »&áh›òûJSë`Äp—±†CZ'È`+>…=»)E=â'ÂU‘ø“Yj.´(9܃Ét@÷àLzšSlË£ÎQý€ýÁwa!K8‚Ýleñs¦’ˆÄOÀßÅè˜Ä;qd…f±‰sÈó‹¨õZÛмi­¥µÚÛdþÊ|)Saè’h‰„©É>q– ¼0f‚]ïI—4eV\£3–«¥lÍ·sÆýPµÊ*°±!ΕrYöHÔÒw¬´d…ògDd©]Ý²Š©×÷_Ý Ëí÷Û8!EAU²\Ö¶Ò*(Þ^¨Ê7HÆ€Òeñ9 â7±‡D$Ù4*¯’n@D…Êr¤˜žÍ”Çn§v2.ɖ¯£ÏhŸËÆVs°h”18z)ìÿœ@bÝⲕzßÄ9\{EM(Tñ0¼þ?%`ÈX€q{)'^ˆâùC (ðásHßóaÒ'¤".+)&[$¨ma'¤Þž‚º˜8\QÔʰ+îç?aq;› \)Å>ʨy‘›þŽad§:ÀI ³‹ðýºî((ãÁÔ=EG ¦n!<#x÷y›vwÕulóïË©¿<@z'(žéúÈ_u ½çéË ¶gbü–m}ÍòѺcáN¢rV VëŽÙC…«ÒB!c8ÛÞÁ©¦8FüUS6†EIõ¯á‰ëÅI=U)jWÈ׳UR6Feõô Ò§Ëd¼ž¨0¦Üiß >a€bsJ¶Ìå–^>ÔØÉèZ=øg¨÷úŽtöJð‚aâø¨Ü«"ó½SÇ€¯™qN 1‰ŸàؙдÀ1&Ñý‚·Ý’½0è8c©ÔDŒmǪ<¤$uÙBj½&eÒ\à ¿Û"¦ˆ4}ÉÏ*ëÝçykñ¸LÂ$/׿‹•Ù{ýðUYQNWcd ® ¢ÏÎd~w¡îu²ˆšàðÙ ¢ö>ÎÌ0CåuòÜÀïV†ïà 7*·9^j»F<^ü?Î(4`ö‰×ª@–ÒÇDsÈÓ5áò¸1òq®—–[º+CÍ+J2LH©òÿùyJavaDoctext.html.javadoc%xÚÍZisÛ6|åvlÇvÝ;¶—”*ÊMê&Ñ4Cw&ÓÐ~k˜j`’P‘ ‡„d·eòÛà žŠIKœñÀïíÐ. ý[ÁõeØlà°=0,‚ð°wzp‹½Š:üD;4ÂöÓAÏ@W²m"œÕ°}˜b­åEHë9FÏ©ÑFŽÑ jt;›wt'Û&¹›mó3µ¹—msFmîgÛürÀ=K±yyÀ‰N±yEm6³m^S›Gœ3{þsút‹ób¯g`úx›ëŒ1út‡³JŒ@jø˜{ ÂS !•>ÞåFNœà^ØîsCùkj TdÁ>AS(õ Jÿ€)P>5ý"‚µÆS²Àe¬ŸVt&(è'7óèýakNpŸLA–T8@ÿF¼ VéûVâߥËÐÐx%_%•¤X.LÌqØö ]‡˜HšÑK®ÕÄ» Ã~ñwoÅÉÐ%Fiv Ÿä¦4xªÞ0ã‡3u•¦b7ùr)¦¾7°ÊXl1‚r.šÀzÓXá hK-ÆðßKÃR%ƒŒ Å¹Î‡bÔ”÷Ź?MÍFÍvBÉÄÂÅrš%äXõê¹[ ‡Œ,ãÒ®FO€U¯ž{ŒžÝ„xÕ‡¦X,©]BRW¯ªûQ22¬j¢`Õ«ç£g'¡g -»TŒZ%…`õ*zÈ(ÚL(²!,VóC 5.P½J6 Öká>¬f½ö¡êUó¨`æØÐB@«fæXõêYcôìgèùAM-Õ)-ʬWÙ:£l/CÙ[@@±0©´0¯^]ºThºi# P­F× ¯^]· Ö åÏ–¨Ø•L¬þÄ&FE‰Ýj¼ëQØÅûN67¦=h¾Dà‘FD×¼+qOкËKí¦ïsщÝuf9sjƽÃé{–M’€!·ê,g³ Of!Y Y± Ùøâ°¼\“~\Ÿæse*´åSlåµ¼<ÙŠj<…|ž‰2iy]Ê–? äy’Ï“«jHô¨h)…Ë¿.1•ÈhòW|—’ï³—bë]Û<Ý´ .ûJËñ¶òŒ×2øíf|þ˜ûœÞ?#êQaDˆiËŽ-ˆé¸¶3@tlýÂÓÁÛ®Ú¢¬ì ÓÍr¥±Ûé8îþ¸FŒ®ø®Ý=íÿ~kÿuÚ~Ý“>>kuä7'Çï[‚üëá;IWÃã V¡åmÖ»ûÇxÌmbÆ„0Y0-åÑϽ]ôYV¿ÊyšÏê ·•/àeîcP7æÖ©Ç«+ÏõêöÚæ]nËß”wÎæòwfPƒØ)¹Ç;Èíù‡aQP>ˆ‡!¡i´~­-‘+9n×s%/ìsdfSù€w9®DÞ}Æë‡é^ŸYßã_Íåø$½eòýir=ÀcQ»ŠÝÜ­YåðNòo¼m…XL2N7=”(K´ÞƉU‡oó¾¸h§u®Ó÷akË=…¹û"ZôͰQiÌÏÒbnjîYö’xꆢÿrîè3ìªGyC€yïRŒƒ'ü8˜mE?ÐÞàCþMzÈý^Q¸×k ÷‹¹ÂÍ0«6ÔtÇ Ü ª 7B“Œð^/N\ªÛHKWþäC¿Ø¥¦ ëݧ¢‚e~W ü5‹„4 Ý´JG¶[p ÛÀvÓ,dG«›fÖ5 R´\:ŠÇÈÿ‚G)Bld ’?E?׈‘¬´.*?[0Java Properties propertiessource.java-props'xÚ­R±NÃ0Ó $QâTq™+¡|HÒFnjÀ49GŽ]ÄßµvpM*PÕ[^â;ß½÷ÎÓà7# ʆr(Ÿ‚ã¸2Xîó6‹ ^ÙNQ©l:485è^x9ÛêÞ`%š†"ëZT[òAw4m¥h»À©G.CÛ°HæC òTØl°ÕP)M@6ì•ßÚÙ?SÃ`$\ ÈHñåù“o vBËŠyºPðW Ç5 ÿŸ…|‚wãùµÞy‘\~½§¬={ºŠóÕâe9ÃqÞCoW‚n <ÂúíãÞ²¯O!7D¨w&Gž™­OF„t¬¥’*!Iß%ÝÑZ3ß°o(X‰qJSON jsonsublime-settings sublime-menusublime-keymapsublime-mousemap sublime-theme sublime-buildsublime-projectsublime-completionssublime-commands sublime-macrosublime-color-scheme source.jsonLxÚµWÛrÛ6•¬ÄMäܧ—‰¦ÓamO+É&ädúÏt4}hÂT= Ɉ)@ÉÖNìÿîcÖ$Á‹”^ ˳»gä‹N>óRœS¥èõùÉ SÏJF\.™Hâµ]·ÝîÚíó“’ôß² Y£õÚ¬4Ö½6«×hu¿˜w‹ùü|I¹X«ßèÝ8¡*XË’E7X3ž÷Vö€ Þ·ÀEÌCæÆ‰âbF{ÖaMò¬Cˆté35°`q7ÌÀ î–½>µ0ò]—Å]±•k ο4Jõæób~a ä%žƒ%”l$©b$ ,yKÑ1¸gJ¥ãÍk¿˜W©šp)H g¼›s@&ÂtÇ„´9–ã§}EM¤2 ÷4Êåìo/öfš§« !â!áQÄ4"ìjlYèf`î| k“)4FüH—$”Az÷7'gG¯kIzãI9¢]+QeŸ‡ùS}²CžåˆªjÆï×fümɸZN{)½ûøcX²9ëË4­¡—ænNÜ7Ôÿáþ5{ÿÛm^!è9Uλ2‹sdOhÅi.$ÿ4µ¥§¿Pconstant_identifier$[[:upper:]][_$[:digit:][:upper:]]*\bdollar_identifier(\$)[_$[:alnum:]]+dollar_only_identifier\$(?![_$[:alnum:]])func_lookahead\s*\b(async\s+)?function\b identifier[_$[:alpha:]][_$[:alnum:]]*line_continuation_lookahead?(?x) (?! \+\+ | -- ) (?= != | [ -+*/% ><= &|^ \[( ;,.:? ] ) method_nameu(?x)(?: {{identifier}} | '(?:[^\\']|\\.)*' | "(?:[^\\"]|\\.)*" | \[ {{identifier}} (?:\.{{identifier}})* \] )+#xÚí=ëÇq $Ç6m×N[¶%ÛÐÃÒ(@~äeÙKQÅZ"’Šì}À-À³wðÝ$ìUÚô™&m·ÍûýþÞÏýÐ/ýÞ¿£D½»Ý»]ìÞ€91ü³\ÌÎÌÎÎÎÎÌîíþ¾}žˆŸ' Çu¶ Ï3†5Û gØÛ/©ðŸÇ9à–í¶o×ü¶ÛG èLü|„mÛ†ï'@2€^¢@ãçc<Ûë!'H!;” ÇðÝ— ÷2…û”´±m×1­Àr´\îÏeÔˆŸŸUƒ2´æÃ2¼³ù°¬eå²Ë@Î}åˆÐ‰jÐÏQÐ?Ëý<}4ô G„Uƒ~‘‚~:ôKô3¹ ¯@s h¿ïzA íÈ1‘™h íªªî!ßÔ5?0D´²5“zt¨áêuN›0TƒÁcuR-©òdá*L¡ U…*á O<?ʡۆm×ú†gôRöi©éáê$ÀÏÄÏšØD`5<#üÞ± Wj– ͱ:ò$ôy:IÈ,û—bøèXÕ™DŸ«:ŠÏU Ïçãg=¿ºo9]I%X•*’Õ‹U<|¶e¤¤vLj™â¹Eèåãù°Lœ'òa™ìNæÃ2A½Ë Ù©|ØÏ‹J—ËL™& ¶ï¹ ÓÓ­^°“ÞA-ø ~àÔÀúôm°A ¹RÕµ³RcÂWKˆÔŠ@3Üu©õßqMA½Îå‚2¬/æ‚2åz) Ô˜0ðr.(cà©ÜÖ»¨ŒzfŸ+Íp¾4kßAƒAŽ_“:_”Îla`ùÖûȬ%ó\RïKÒ ´·¼`X3Úm”v_-ÎZ}¾8kök…À™Ùx]ðm"pu¡¡ Ëó‚WA±‰>Õ¸ ñ“º¡ÛÛ=Ãrè¯ ñó~ö+àðúóŸÇOê“qþ<Zú€Ü½šlF 5. Ö_¨-% –R¥l"q•–kiK‚òÈk$S­×ˆŸÔ là k¤»ŒÀMà.ÇOê1G ¸ ñFü|ˆƒuœ‚\‰Ÿ4˜cúã²@!ü‘kã_ÄOêÝ’èèùˆ´ x¥`oÆÏR`DKèïWm¢¿×·_³Ñ.b}}MhRÊ¥ +ñóÁt*EmuØâA;Åðu¡R \û¿,ø"\¢JÝ×âµøùlNE®?Ö…XUIÛ´úFü|BU=­;72$†ûŠÐu¦kÃhKù\ŒüMaÐ! l¨—9NßôÙ>ªõÝ>ýýíøIà *4ÀÚ® újü|8$^Ë3Úl(l º,Ä;¬)hO &©GA¶ä ¶å3ÃvK’–ì¶0ú’‰†B¼#ôQ*äj¡nbd 8·)\K0ý)8…j ó UsÜZh(¸9*V žŠŸ‚‰;ñó³£ l¢°ÝøùTlºq;B¿tÀC v2o{VÐÞ)3Œ?•ئ¦Wdl¤»÷û)owd³B†áÀ¤–EÅò•I î!•ÀD‹~fÛE²n`¸(a(ÆÁALËžk ½v@Ò†¯JÊÞáºâ‘„*h¤1°ƒÒ„g2çN&¥…xÑÎ(Ð^~46Œíi¡æ§?#ܨOøs8L·¶·cÙ¨ŒŠMy<Â)ʃLQB¾%9¬PÛuûŠ©B+Â_R…ý,þþLnSt©M¡Ø Q<0Ѱ—;wJõIyGŒWÎÒI—¤4Àz¾‰§’5´;ÑÜ?…aµºÈ)Šøa1,©L ïãœÁHVÙîMôW*òO®GðHJ]Z¡£ØléœÆÈ´f™#òXÍ8AãTÍy§Ds¸á±ÀXÙ׫Ú±js®9WÅÕZ­JþžŸ­VÍW1<6«µ¹3ç^¨^x}¾z ߪ67µêkgëçª[³ùœï¨8=â£ÜpŠeSO…¿eÜ·çR‚öÏÀä.H@¤¤/Œ%öðó&‡Tk¶b¤gôMxদmÞÒô-ø>Ï€1"ÿCµù ù\T‰oð‰ø&ßû㎛,?wêš2$ÉžÐ΂xæ^UÜO;™Ÿ¨ãýaÐf{¥ô ̗ʤ­—;z)çjò龈†pn*Mo4O‚YåõY§Ò<‘–ÍÉÖ£ts=ÚQwЧBÒÌâ]Ÿ­¬§R)lðsÎ)FµæIgjYLå’Tª[f;>ó29”ÙÃYÌ– süÁ&Í»RxàЈ€&vëɲ>8PTy>•­æÕ\5‡$]^¦àx’È)·d…#ÏVdƨY'ÿQøgT’ña}Â0yÁÍÙQqÓ”x-+z”V+ªb”ÌÿCMžOe²s×§M¶5‘ð6 ãwżÿ NüAgNéæ×R‚):[‘Ó$“ÂYz)E4µ¶W—©iަqN5Mâ4[qz8IüUÓBÜö›ñÌhqÈ#Š·ÚÁE}áþŽ1Ó#½?ETs½¾ÃTA#cÁµ‘®-œ×šu]Û3<[NÇŶÛÅÈó\V…ÿ4Ãlþ'n»'À¦åáÐ3‹þ]"£µï#3ú“€ƒ¿ÚÄ}’¢€èȱëz`ôúº¾Ðl±T˜:‰Åûêdßõ„ã–¤üт˘"±#64 ª ü×&b†æzLÌFË%BÜ!lï™ H°;ÐŒö­oúÝ-˜ß6»ƒ-ËÄ>¸1qY(Y“Çøëm˶qõ\oxÇemìÀrö†Õ¾=Çûaîxä1¹œã¦ÜE9'Tr>ÍÉùXj>W˜#’Û©çÏã1¥ñQù·ª[’´ ùU›ŠhOÙ”LÒݦSÆ2‰8~§(ÿû4Â,÷‰vßIùT>QÌM7`d’½ûY„NÎ΄Aò•·D~öl”– ƒ’Öüñgx?Y_˜H| >¶ 3Ü:Y§»•…-:eZúýR“ ÞdŸˆz$KqˆÙµæŒ·+(Eõ•lb”Jj.—“ ë¬JX¿¬È'ñh×kOB)šÄɇ†±¾;ðÂý—uÔk!ÓDf >j$³…e—ä_*/ŠÙOºZ~˜×Ÿ÷nMŒ^Ï”Hž–8­c­é$Û(fˆ“…”,jŸˆƒ†Æ–³kØ–Yu!â ½psZ\#¯ûåmv¶jëñO[ÿXœ²šNÎxÁTY‘?á2±(>F£éÉ´öñ/«äèÝCÙS@ɽ¦ÍPk¿¯G›A¢oçÉ~…+?áêi€Ù¼Õlž‡bË3§ÃÒãqéñ¸ôxXÚÜTârç›uåžö3ÕæÖ,qq·œ¯ª0Bg:ÎTUŸåç½û$óÞ[’²}IÙ¿IÊþ]RöaEaO¾æ„žn¢jXìQB'Ü9»…µ…Þù“:>wŸkžÑõ2III8´YöíŠÂeø<'Üûã8>Í þ@Aá}“«E=Ø0:=ÙÜ£b9¯‹ûØe£"«é…§ÕBý•0öLcªÐn³6·µ ¥k¯ná7[û.h·©ç{p_PiÞ›²šç³Wšéú0[9@YŠPjÝhš¯$…ŸIÝ}5†ûð á÷Ò›iäkÆãn¦¡Õ^£_NHêC›{–­ÿÓWòä £8å`ìOjþ£Ì9ˆÞN “®ª¤"šTJ÷Æ–#éŽyÑ„Þëã¡ÈàåÒßJ)ghíÒÑÔS>žVö$?}ò×Ä‚)w-ïë*ãû]AôŸdµÆÊj•™YŠ®\Ôq*È/GüZÊ>§ØLJ{ø¡,ÛvO¼·QD¨ªùíŸGêFº‰†¥ÇÒ?ª?2¥X¨ŒÁ'/¬Ò¾®JA+có"mª,¹$)“E"K’²†¤Ì-òT׿/Œ¬¤¦'uf½Âãïr·@”f#=‘}oCnWT•×ùʲhä IY)·v¬·› îΓŠu¨˜eÄ=› ¯¯5[V¸±¨ÜNâÖQÏodÁ*#.08’;šå`·£O9>OÂMøO ‘GÛn×j'9š|Ԯ͓Úù [ú”64òTþ/•Æ™}a¾J².'ª ¦jøñ¬îNP Üš:¤¨ÿì©RÐÍ3óe çÊ@×Jqr®ß·JñË@¿þzè ÊAð‚ÐTO´ªe ºä‰ÌâJöTZÉ^=Ë ö,Õü+d„ðCø L5£tܧª´á˜¡ˆ¤ÐÍ[ô¾ëe@ãð·:–BçIq‰ÿg%-qªð²hÛ¯š—Ù ¥ _¯–Â]¥R:×Þ%HÆÌü|<¢Ð{ÈÉÃj5ƒùc¥ ç© âŽS:W0äT%˜à}×).˜ÿM æíUÓÚµÈjo&ó/Pèžkì_Í„nž¡Ð;°ú6ÌŠAHA=Gµ½Ö›‰»FõË´ÈFIVa,1‚ƒpެvq1޼ÍPìº|ìcuªx WÆô5?g—ÌT¦à­ÎÈü1öj·˜ÑçBvN*x8 6\z¨Ô½Â{\¹;"Ç< ÊH X§j¢ȱszù#‡T:Ä%ÄY 4=Ü;-¬¿Î›…OUÆí8š[¾¥8¦×ÏDk‚MgA\mçgòwPË€5ðŒ°Âm*|Ð׬L#š­èžiæs?Ç{³±eºÅOQá~˜Ã}?ÃÝq½É‘?Z‘›°’'بÐ?Æ¡ Ag>öô #2ìŸæ°†a×ÈÑís¶:ØJõÏ)èHŽ‘‘ûŒ¢1!µiy\ÑÛ7LhQÐ î¸%9I $>j:DfjVœ n·Jž¸OÞs7Hõw¯yž\o¹® XŽôˆ÷J’¦u N Žç" +ðØΜm¦QdŽÇ‘W6pB«‰ÌQåEÄ€yl‰®+ ž§Ô ¡ÌŒ’PsÐ^Bí¨ &ÌÿPêGÉò¨_‘”}¹ŒîäçÎIHÜ”­IÊ6$eëeØS&¨ ¬öÄVŒãZ£¥(ÿ©¢ü›Šòo)Ê—嫊ò·åÿª(ÿ¾¢|QQþ EùÔÞ·¡Ã€åæÃ@⮽gs8‹ÜG÷~ÍcR6¦¹´#âøQΠîõâ÷ù¦.°™0ú–®ÒÓå)Ò)#°Â;ù ö)šT6ï úñtöÀXòùãÛ QD3ªÙh}Œ×ìðÑç¼ØÙò4AÑ×ßK'PîS $nOãÄ»§§y @Eѱ_«HYf¸éÄΜ¼wŒ“˜åƒ ¿MWœÆ¡ *…ÿl¥€«ü¾¿””ÝÊUºl«RBLÓ8×V%MŽúÔ¤(­oÓÝÅ1I þ@ٮ̳?Ü!ã‰n0±“ÌäEÌ´* jKÊŒ2šû¸Tsuññ=ptŒa-ÞUK¿]X4òøGEù´"z‘£XþCEyÙæ]Eù*²ùEù?åè~i }(ÑÐÍ×îèÍ­­1¼‰\©´åŠòËŠò_+ÊUá„­(·¦ =Õѳ9ǶKÐ8XRžo°9éž{ãÛ$ÆÍœÔ¸MB|gRâòÅ=‡#,ïEŸµÇmùØ6ŽÕÖÿH­eïüoÖÉCŸûؼð$'‰ã‡E )s)¶Œ[My'ÁS•)lùfñéÜñLe «Î32­#îF󞞺ü%5[ž¦Ð—”É6Èû’2ORöž¤lüMóÉÚT4Ês_ˆ›8Ì*:ùåo–/ÓÎ'Y;5jßÂ;ÍÀ¾]chTïì?•91¾§O“š4¿ÐEÛ Ïòo«^ÕÛƒ+çop×RæÓØúÏ)Ï ‰òd¼Írùî㑱uk¼#ðdÎÝž¤lWeºÊ¼dÆmàIVÙý›É¸gŲD ƒU¾;öb£nX»ë‹URrýbÏFÞ~¥µr‚ƒäîæùfS_cbús¥x̺P+ëûÈ×È=ÇþheÜÝ­›’Í7Xùö²:v³¯8RÑ+yÅ‘ S†ílo²ûÍ>Y#ºËkDÒM/ÄÏâ2бi0Ê…SÉö®ŽçöÆ`õà*2ÌOßÊßœºØSÇëœÆÇKöŸÞ£æä¯3´%]öõJ –ïæ2ÙŽú'Ëdå—ɾž§•Òe²h\|Ô¯µ$ûÆ#úcŒßŠBóÿFR&[Hþ«Šœ¡ˆÂ˜ Éúj[RÖäˆeĵŽâ1±mØðõ‰ì[NÇp“7EŸ=ŸzŸìVqÛh![’ÈÛ}R¸)œz4‘ªáu˼}Évf:ض[Í[Ôî’ ô©HÏ(q…<žÔÍËÁŽåK.@EC•X|dw a!€¥6sòdî(DŽñF,]ÿòY‘h*U2…kªYã8ׄ'2iÛÈð6¬rd4µ]ÝX[N¾-¹0^èdŒú#û–úÑo}„¬žcË¿L^›AðeÅXÁ ž>ºl»F}]p”fØñxàD {¢mÄâ™#÷ d4öר¹#•uÒLNRR=ÉQ¥ËÚy9øgÂ3—^¨”˜\8Ec~©º^5ª©k(<41á‚„š{éåWÎV5xÌŽŒ/æØQérr}ZÖ{Ú²¾7ÔG³}£ïhX1p)»ÊMh?+4åFk­Ë.Æ£{þ£Z™%A/zŒs|ÒHyg‹*§7á--…’±*CÃÇ{ÿ5^o¤ 3-ãüG½’ãs6ÒU#×9†ŸÔa,aÏyj{™En¿Œzk »x¸ð•wå~æò˽…6q LÛ¯~Yèƒès|ÊT^©Èü­¹©kj§*c`cbÀsnn¥6 ª‚¨¼6 {-Xà mP…VŠ.‰ž,D,u«Ðôw"OgÁôseLWöÛ¿%. É´w÷Î2‚ ìãÛÞèíí"K7!(?È“%¥Ôa£ks£¸„³d'ÌHö>—Í·Õ8üÙLx"Ý9€–)`ØŒqÑl©Óž+@õ£7ëRn¸¦ÝwˆMÒ¾¶CÖ‚†0™÷–MvÀg%>6†õWÌ,qÎ5Çl ±µõ>ÄN°Œï qµ­Ž… ,ÐÂÁ ¾xäÓx™Zøqj½6'šßoׂ~ã½µ‹{öe×Ó¡29O&D_ÄïhDH5Gsµ5äŠA(ÍÇ‘÷¼¾àø C{Ö 5ø+d<ëø¦gôu¬¬[-ÒV‚–i,8Zít0jßæÉ"W1Ys!T!Œ«Ý¶ ý&0ø/~„ làa½o8˜°ÞƒH úˆJÛ„ÖurÊ(‘š­ÁZ¹³=â™Æ'F8½èš°a6´#­ ,ñˆË‡Qciþ5£C¹š¸§õ£ÂˆÂ³.ò!lqµ7„8àšÑ¨ ‡Ý Ðf&öh[# ‡0 Šõ Ë!]A²Ýw4Xã# õÚ:Šú"žHZ‘„¦hˆ, b7 |D˜ìC Áõ2*  CE:1¼…¾×'¢ÚµÜw‹N(: ;„˜å@ :Þ%¬Gl‘¿b­ÝÛ Äµ¸'®ZÎm¼h[]`üÆÚU`Úòü ŠÌ\¯§ù$΃ªälzí"x®°´ Jµg™Áô ÔA Ë»—`5ï­554Šº–õIK5§½ãz>(D…¾ÿ&Õ <Œ5º4êØ8–ó!²„ØÔ"Ùó´ö޵ ­0 Iû–ñÞjyä'wªT4^ðÀHÛÅ/{ÐÚš«`¹€•žw‹HJ`Ç%w×z¨6–ao8n’™«ÈéÂ)¡L¼D ‘Ûd«câî’kƒë£gì¤gã0sô²b÷‘ß«<·}¾XQLµWÆu-ÆdPåã|©"E>Áëíc·¨V+y„q—±{’çšsc#)ãðP"_+sÖyBŠuÇÀ‰˜×Ë\¶pðžÛÏZ'ÿ‰Nß¿O¶ò(îc|àæø­™ä8¾Ë3 „_Qf“YÁíà]×2 ^º1Þ{ÁÓ¿bòUùð.ü"† ïùJÆG^\~gëQí¡.Úïg]ÍöGƒ ¹kõ†ƒÔëwå–ÛÇÄ>Ž7¯˜T¢›¯”0ýÒ£§ÏM95ñ“2å½´_h?µŒ‹îØ\°s€¸%¯óNü÷™ŒX4êPæ^ܵ7 OòkÇ¿vR„+RüÓy·üBE1òÿNQÎ’•¼ìxîÞtÎÝý'ð§ãÞ‚î¹ *Ë Ü…h_/~‚tbß'(‡²Í0Ã|>~·Àû¼*J;rϪš—2N·fð0ëfµÝ.J¥ÓTÓ[J~¿N_vªËQ«k•í•ÕK ¼¸±±¶|ñÆF#ús£ñVüÃY¼Ý^o,m,¯®DEPiyãííµÆåÆZce©Á•†ß¯¯­.5Ö×—WÞØ^^YßX»‘ª½´z-! l\Z]º‘°¿6Þ¾ÞŠ.¯-¾‘@®¬n,&X—W.5ÞÚ^_þjc»±¶u®YBŸ]Yn¬-®-]!ŒùFc}#,n®­£BJ—W¾²xuùÒöҕŵťÆZXº²º cñêÕÕ›K´ìÚê¥åËËK3üoÀóê•ä¯õׯ¯®mÄ¿/¯ÜXol'’‡²Ù±‚çÿN™Ÿ¬uãÖ ±>n“¼IåW·í1.˜"‚oØ\lv!¥MH÷jÈÛ@R…$KpÇÇ;AÐÿñauÒXŠ0 ÛóÊìÇï 7Œ<²êo’_ú6,ªÂß=ý¶í'÷ ±ÑƒÌ lø?âgãA`Ùx·‡ß·­VªùO ͯñÁ høÖÿ$i}ÜR²lna3¼ödŽº»¤Í«KN”~BÎ.dÈP{‘üJ¾\'íBûV°DÚEÄp-¤ˆû–IÖïƒ䀠i6"É;?€Öxäâ‚ÉNö Ì½íÆ™¥ø Ù´…f‹ sÕÒÎsBkÔuœg[5ùn¹rD’7dÙë6>ŽzÊ—–‚„HFŽ,)aÛ…LªI¶ú“¼[¨ð ¤ óÆ 0õ=ƒ™4’ýzdõÙv[†ß¸ºzqñ*$³Ýoo›–¶{{›Š@õyd´F59g>/’-äæ`Ì“}íYçÕÿFR6þuö#ëfEYË<…mjë‹ÜÞ>¯†Ûá&Ì,zŒƒ<~xSÙ&„ðåx}“dø5b¡V½ØÑÕP‡Èþ¨¤¥Èsˆ×P·±ßÇëМõÈ$ßï˜T}ëÚÕ+`Äרk?lèå7 ¶d………û—NµyÏg VUNva­aa?Z7¹±¶¬/4<Ïõ2LzD (žÔó )“.>ìYŽéîaÇØµºDw$o•ÉFÙÈdùa‚ûb4K6Èl×èY™ב–_· ë.ÉÌàµÆõ«qñLqëÑÄv“Ä„ñ÷ø±ìtÈÆS| EÏøï5c‘¯o|Õêã7n8ïÃ#ú tÉÍ]œ”8kñÿû½W Regular Expressions (Javascript)source.regexp.jsöxÚÍVënÓ0nÚîÖ]`¿@cHcC"Þˆ5 „ª!Ä ð‰º›¼Ô½°áÇÙ†–½ гØizw)ôÇ,ÕG=>×Ïçg£’®]M÷(ø‰ß§‚ú’ Ï?§aèuXwÀr Ž·+ãëјfOÑÐS:LŒ‹;š>./2_ÕtQÓ““ŸtÀÍiMÓ¥ì4”THs\Ê”ûý@˜Ó |Jý3ÁºÛ@馌m ½U,–KÊh,Ã+#¶¢éÃ1±Is lŸUà22Aå‚5`ãWD¹t,“X×tÜ2é\AÎ%dŸ ²Ç!“X°»VrjùÂ1q»¤2!¸3ÔÓtq_F4Á ™pŸº® ‰+xo·ë‰¡y…ncgÇ%¤uù-üÚùÜŽ FqÊr[Rð‹îa;ö[GÞ÷v|Õ"êu¼/íë×7q”ûûæ&Æ5ñælÐ@qPîå=¦pê «Œ­wål±Ð§C†“F £¯ÍÖ€µ}h-³c³°0×xÿ;žZ^ý‰i,&)¾íBœ5kAqW‹‹Ý]Ü{Ó‹;u=¥¤W½ÍÉÀïc¸p9À×4 É0ˆ„oÊÿó2öåäÒ‡OËÔðÆ†¨êðÓOª»còÜ<ÕôŒý¾ D«”"8ÇéKd®£VÊÏúÈÏ+ï}»u¨¶}xÆQÚ0I]{êMc‚ñ »»ªÅÝhpͧAs¼Í¼˜YHHéiøï ^ò•¬ZÈ%Ǩ™IVçþ@åŒìÀËÔÏ6æ¬GÁØ)ªÝJéÚÝÌt‘ë’æG«ýY®ûësêþòØš£Ûá6>‚3öíh½ºåÃè¥È^0o€ dgæa@þ€JÒ øBhpUxª3d$ØyV‹ò›6s“óeËü^°ð-üu ÍÂ_±ðþ’…¿\ön :$6ì-[óÎ:ï_deÓŒÉ>iªý@í(&×.é¼T¿8¡É†ÈÑݵù}ÜÅñ3³OÓBibTeXbib text.bibtexGxÚíX[OÛ0nZ®cÀ˜vÓ&¶±1h€Fì.MBtÚOØÛTnêu©Ó%[‡øïsŸÔqâ$«@{¿¸m¾ø|ç;X«Åë¶Ø_"êÑÎÚÙ_¯¥Wæ5` =æ `êzÌ[À4ô˜w€™ÑcÞfVù˜9=æ#`æÅ~?…¡8`¸×éúÈÁÁD¨±?HæÚï8e˜² z± :ø–Bº…§K Ý?ùl]ñ~xûðxYV>yEÁ¤\ЪN;¨;b_Sræ‰Øo0àpË%[ˆµÒ§V—tþ]“^1䜛‡ƒO›¦M“'uÙÄ ð 3dÅìZœ‰Û‹}ɱT—-Áû"JÀwKìÃ:,DŒxÔ °ïŠqL{ÂrBxU38z»È‘!ò¹~?p@ª{cþOoÉÞpêþèòƒ±Y@?6©ŽÖ]È«#Ôúó¹õíx×´ƒ¦}0Ñ«®‚ýqª¬þ =^2Ö))fà­\Š<šˆyþø½ÖrC,‰bH«¶Å ‘HÝñ)(—TTcY}²x IYí]›ÙªÒ…Uþ}Y!´ž ÷դ쵉ùÜUÅܼ¬˜ßSš{×õœÓ²®>;¡Ò63 ù´­a;'=üP}ìû^8,ki«šËLd‚ȃžv]\–áêm¥gÞ,f.Œÿ#õ\ê¯N_ß–Sj?•©Úðá©Ø å%Czq]ÜG®:B4Š4ÈK+C“â+—`ãÆXNÝêW^e/Õ*0‹DÀîíÂï“¢÷2 Ø'NJŠ ô ¹ÅÈ=¢ý%.çÒ0¿*sÒ »\z=‡ j¶Í¯QšÄmú<Ú wïLšöŒ¦iÃ-ÁÛä/χLÏL‡¹í»Ä/82~¹¡¼¼_p=eÌã>V?JÎOи¿ˆZ-Ó¨$fóFÌ*b¦¯¤ ILe†Éyb{UÔ|–«f4º´Øhˆ¯BÈ­!Ål^ øÎ‘„,ŠØŠ˜Æ¤'ƒNÊFU)›7R–H9›’øÑIۦǥÏ|­êÅ“Üöç¥×€Y¬fT¸Ø¬ëÕ‰Âýnµ ½Fž¦CÛ§ëÀôÜ5B:GLJĵ <óLw–þtvt½€Í™¶éVÁix5ÇF_ w®U7m”è{.ûKË)#|Ù5*´Vë9™"°k4æk wŽW³+V«Jçw.—/ÁY5Ûä˜Ü …‚Y7j¡`ÜMBãZµ&m¢ó xèù -x½_ ^ -x-ëx[Ut™ÆUXU ^M-xÕBAÖ9-x×Bך ¼> …¯ Z(ðji¡Àk]Ç+ÀÖeW‚Ž ¼6´Pàõ  ¼º:­€«¦ Ty:$0ÕÒ!¨C:$ðt8º²ÝìÆÂ\0 ׫GÔ8°û¢F?ªÆÅ 5A8<¤cÒE_‡ GHÜ‹®ÙsT/õA-r}Mt=G…l_«ÇB¾¯ÓcÁª¯×cÁ²oÐc¡Œ¾QÏ“ ¾ÿf=¼ÿ-z,øÿ[õX(oÓR æ}»6Û¸mñ=(~§ 2<¤ÇÅïÒcâwë±@ñ{ôX ø½z,Pü>=(~¿ @K1˜ìƒÚlãfƇôX øÃz,Pü=äý¨ Lk€~\ gø„ ¾ðI-\áSZ(x§µPp„‡ÅµNÛ,ÏgÔ8`õ³j0ú95Øü¼°sÍYÓ5mføô :$ÈøE¤ü’ r~Y‡GúŠPó¦YÁÓ ”>_®œgñ U³â¸†ç¸ük‰à`ƒ¯'‚ƒ!¾‘Öøf"8˜ä‘Dp(_ßJ‡2öíèʧ2Ýrl½ïIÁëÕcÜw£+™à» å×lr÷{Ñu5Ümz†ë‘Ûß®dL‘ûF×µÜýp¦€ ~І¢ç ꇜ áü ¹û#Î[Ûç òÇÑ•ÌÆswñ“èJfHƒI4ró1Nå¨å ÷]ɔ⬋Äôjžgñ3Ž2ÿÆKúxt=» g#¨g>]Ïç€ízäOFW2ŠÈLäÐSœªdÜÿ9wŸLÜ‘û¿àLAM­È/9Ss\保87§ç¶æ×œW„³Uäîo¢ë ¸»öÓœtÔ <Ó&‚ ë{”‹?Ë?¢ßû-/\Ð9#wŸã1îºÄï8§–óù{ŽŠ†QY0æbMþÀß:aäþ9Yâ.Aü‰3U÷ÈŸ£+™©oXÈÜÅà/¼\ÿ+ŸëxŽ·ØÀÿqbƵAü{©…Èý¿shzn«âµ\xÄ?¢+™tç‚0ý“s–];Ø2 –A©û¯èJVq´\‹Üú7ç58.“{ÿáT 1›Üÿotý_NüÉðö‚e'Ì¥ãdí ™îk´ld [¬X5gkv-ø:ç:­F1(ER‹–a6#‘|”&9“é]â,ÎgØ0\TQQ²Zu;ÊN!ýHNõ¥!{„Ï+›³ŽkFÏÃlZú‡®”Éž ´¤Ó—¤ÿš³Ên¡ÊƬgºËJc>3‡]ã§y^¢yÓt½‚k6LWš§e{¡8"­ÇèœÉ¥ê>ò²À„´¬Š6ª^ÝZ¥6E©ÜÃ_Ë”ê¥UG(#ÐÏZ[rÜ?F¾íKhÜ ÅÊUL®KÐ×hsJNÛy—èBj•mdUGæl¶´R…?[臢bÍulÜ:+Ý }±g YÍ61Q*åÑó¥cù‰ 'ôõx2ZÉž˜€ô3š­FÃq½Ø =YJ¶`.vÜj›Ãu¬â¬åŽQ£\þ{Ôv*£FmÓ2šóá¯Ç¸_wç™+¸\HƒåáÖ Ô6Åm܃3ÝXÍà‡¼qº!Y9&ñ˧»(÷|OêKÑgBær¸T zÍŪcY†«w?¦‹—v•v‘dà5ÇQ¢èxóÈÞÁƒ‚¼÷ªmýJS#=«ªY$ b¾L¯C I•¯ÒLþDè˜ãtÝ•DWS+GhõF6‹âG©99QÚ^zBÆU!„*ÀYIâì…µê„uèÚýl2>Ý;™;è1žLOÙD?%¶|¢¶RHóLÇ?¬Ç}ƒ§hÑÈ2ûé ÷…£¥Æ±[«Ç 3“S×¢àSº6O$—BÖ(c´ 7ˆMh¦¸œìúV4Km{êgëè'Fêð½6¾F‡Ÿ»k³€´'´Å²MH´i7Ñøeüh‚.$±FûO cóúN$Ñ•jÓ^B-Ÿ?‘”ˆ׋5Ϭ׎ê‹VÖ>¶öÃw+ýÀ Æ£Pf™'œôž0®ô„ð¿Ì Nr'Ø«t4Ç^qkX®ÌNb_è¾G24Ó[↭mŽ–ÄœDªŠç³ðäjÇkc Nà œDZA¯úYI0j Ád=F1\°£Wa£ÄHÌ`<±P0S æa&ðw¢tw>ßPm!|i¡r´ÛP9ÖƒP¹²'*¬’¨ É[5æw”*uüÑ8¬)"»Gh`&{Cv£áWJûJû2Ò‡„ô«¨42ý°ˆô›hÒÏ£I¯Öfg3¾‡„ïRigpUÃ÷‹¤…|Îñç˰ç2Ò‡„ôSid¥öå"Ò_B“¾&}Þh.˜–åÏ73Ö‡„õ—Rid¿Õzë;¥¡ýã‘ñ=$|ï¢ÒH;ýß»i¾/àùÇcü²‚>,Äï¡ÒȨØC"â÷Ê zÓ±3¾‡„ï *Œ`ž.â;Ÿ“µáPî~ðŒŒô!!}Rö´ˆô}ÒBŽÜßCÂ÷…TÉì4ßEšïM ß­¬ñ6,t_D¥‘&Ù*ÝÓtï¡évÊLLÀ›™¥‚ŸÏF^‡…üK¨42¸jŠÈ¿”&RI~6 ;Dp•FÔzDäû¥•;šh³2¾‡„ïË©4Røïñ}…´roÌgm¹a¡ûJ*ˆtLD÷Õ4ÝL‡­±èÍ;¶ßXÌHÒPi¤Þþ¾ˆôçѤ3sçnFö} •v9®²¯•Vàn«œîaáû:*|¿_Ä÷Í÷Nšïæ¼ßœÇSje£9?ž1?$Ì_O¥‘Sî…è7ÐÌ3õæA˯/âÿ«Uô¯žµÛ‡…ü©4¯päýfi˜_42¾‡†ïçSidmÄ>ß/È©>ÌÂϱ®ÈÞ!C›õ²Y­"X%’öšNËEÖ©‹Lo[9Üò8öÃýñrùÑ8––•Q‰9Y5È*¦‰©kA“|/M¿KkzÀõ!jYTÐÆœ©^úq*MyšÅ'hy·ä…3-"÷'©4åAŸ Jnjgÿ@ÿ4•¦ÜNÿ°(FQ‚›ê"òk©4åNö×i|$ÞV<¹_/Hîå}ƒÆÔÁŽÞˆüF*M¹öM´È"·äo¦Ò”;Xߢ1r°sp "¿•JSn×{›ÆÈxÓÞ@$~•¦Ü)÷NM Œ÷Ë D4å&µwåÔµ¡;yßM¥)÷‡½GãÌÁ.±ˆü^*M¹5ë}´È;ÚEæ6h Dø÷SiÊ]Q …ß%¾moÔ@äÿ•¦Üôa¿Û’"òG¨4å^ ætÑxþÇxPŸ×„ ]w¼ËÕ\'XϺª«+Ýû¸mèFÙ»ZË2-û¼Ê+%ƒ@Œ·6\Ó¨ãÁ‰ªSia]+hX¤©/<é˜=þlNù•R•ÚêÙa•QâÎŒ®Ó7î1 GKc·VfˆPL¢‘/ÚîcíìÑ*=üÙ&4D«i6ШS·§›üÏw@~2{Ä|/I >g‰]i2±/àZÁxÉaÍ3âÑÈôÿňO¢qh' ‘iD"êâÂÕ¥â‹&wÜ{_af_{»ÚnzªZo sô7lÚÄ5gM×´+CSþ¿Ü$Ry~°Mì< ýu„ó„V±Œ²iõCgÒþAÕmÍ[,Úh2„yX•]G+Û4©ùÞ´|p€‘_¶–ä¼IHžYo̳Z.ì¡@cÕ* .EJ/T Pã–ºž/T‹E…båY%_eǪr¸¡PËãøÚȪ…»é,l(´jZI½0F¦@1þ“*k‹ëæ–]E“5°ìŠ€ÇYƒÇ¨6|Š4”ŽØÁ²‹xÄj„«Q;\ØvYç˦™Zr"‘¨áRQÝɉÛD†ñ ~oAi·.Qœ©µ<$‰ôL*Ö9=ý‡FÈ?¢fÿ÷rKjýê‘ü€‘‡ÌPãѹ;$cq)qXJrj_Ì-óöC å»~…À·sÅ?êm‡{,©]²q×c°v á×ýrÓלD±‰æmAϲs¤æNÉ.š"éó(£Ï"Èua8<¦K×>™d5»iº^¡lÎ:®É8Ú“È%ÓhT¬Ñ5‰5šÔhdÌ¢h8@…ÆrB÷ùêü M™žãñvn"hÚ5Önë{Á7õ4Ûi6Ú67õÇ<+Ä|ïH¬ÑÎ$ B“•Œ&ñ‘Æ“‰UÙ£q]×l˜¼¶n”s)f_‚ì§È-²—³·ê¯Êuõ™zœÙ¶<)\<‹›.Éo‘YŽ|œ+hY»Nq^«ˆáS;a˜‰ã;Ä åâ0*“SI›ïÑ z Ãîvš<¦×ÕuÙÂýÑ6–´ 2@"riWi1!,Gð\¼}#lêÖ /²U^-\ô«$íîÓY¡›S*•¦óætF˜çˆ0SGòk µê׌£Aº9Ûþ7¼ðjVÉ¥Tk͆e,bqÚ7Ú†ë‹èK(ª?k…YÌX¯èbV1ÿȯ·,7òü#SGÈcP–5#ª¤ŠjòšÙô«WøÕð Õf«Ù@¾±—Å|GSGÏÈuPa2 á tÌž?TŸAý͆¤ìxi¨E™¤‡3™ÙÖ2¶ÚB›Æ Uˆô@Åf_óyÁq,ƒ6miUΤ=*Hû=£òZZåpˆ -J®VB%õŠŸE+™"ÕEüžÝ•šL$hׄm‡Š)2AyA3œ–öªŠ“ò“°Àlñ$'añq¶Íð|i¬$ˆ¡éÙ{VÐhF\ „K¹®o_Òfü`µ³A¦G$ÜuGV¦çWŒÃ÷jñ¡j¬051.J›™Œ;ø:“ÏOAö2·#ÌÁZ˜Ê<ªß+¸z·ÍÃñ`ïuW%enÁô"Ïaòãý°mMŽÝªëÌ™_ñ~Gæ±Ø!fæ'+û!8`Îê6ÀÀ(æ4I¾¸sùÔôu¹% ׯI„õ]‹¶‘Ì5»bµªæœk4æk•f’jN1@ÈäÕÏ*Wy+í ­„BF¤œ]Û›بé•ÍÂ:,‚GAPÖTÞÊ•EÒÉa~æÖò¹ØyLXP?°‘ôšpÓn¶\?4Ÿ¨¯#mÄ¥ŸÄŒ=èñ‘ ðr 9Òj¾+ÖDBnêÄÓ˜îìnš`vx¥æ™õÚQ3»HÙØÅy Ã{åšA“e•Q˜2 Ïg(¼@N!Þÿ•±—2ö63ìååìUÍfÅ­5ð2SFâ–\Uæ`{1[;ß¾3ε܂Ï"ñÑ`&Í[`_ÅÔëŸ:àšù©àmÁÜØS× T0¹ŒK¡© àF¨ðÄÇ8œßþ! Ëô½¥™<˜…F &×0mÅS%>/m+Æ‚±G66=ÇÅ{ýêNµ6[ ;é 0MžOdÙ Ó2@—¤½x­zQ$Vqy¨¥ZÍ¡»O8¥[‹â|@öS{‹¬ämcŠÛaI©¹Ù¬X†kÞ‚ø·EKÂP¡éa™™JVf.”ñV ,à.HV­1§L·Åo†¯$í”$…‚Y¡êg¡ÚÞ^…ñbrQ%·Š«äà_’ô?HÒÿ"Iÿ±$ýqIúS¹´¶Æsˆ¶V¢Þ$éÿ”¤ÿ-¡Y‰pgKÒ7JòyF’þ˜$Ÿó$é[$é›$é›%Ï}‚6,½3@wî‡Ö?˜]øµQhìÙ‡?£«éáh¾iÍ»¶EœM?¢úÕé#·W,é±2·ßщÛË^¸ô;Iúo»-íÌ®(jùlø>°lý,ÍÜ í ¾¬îó¤,*ÜÑETX)yÈŸ%éÏIÒÿ$Iÿ‘$ý]"ø< SeævL_п  Ê´•ƒD'Ç-e”ü7£ö3O‘Fé~Áëö†¯ÝK(jëA²Šõ£½Ûm vu·fbZ°§ôÄØ²ðÀœž»‘ñt.´Ó¯´£<µìW|:wdxëê,ø÷?ø§Ëce¾¶˜ë6“Ö|ðJ¼äïÛT‹OÎ mz†ëõâx2Å}F:ÅœH§¯«Ë ÑZPÇ»v[² ¯çIà·ãÒš}ÇO¼õAF¦íboíø ™«ÀU?؉«ÒÁžÎä7\ú8„ùôÓ%ù<&Iÿ‰$ý—’ô'º-~ë©âÇœŸ™ Êv…Á™Œ},€Ÿa$:‹Ò">2å*|.§øŒHˆþiD3kÊHO0ô¹¦+7ÍÔ<ýi´¼yÇõƒ%âþ¢i¸~©á·\Ë÷ü†oXx›UÃÇöÁmTˆQ«–ôÚ·Ï avÛŸuÏŸöîœÁ°éæ3uÔ€ðQd3]Ú¸aÆ·¶eYÉWÐヿðœ{Ôï &Wk0ÉßÒA/œ_HÅ&Žn8°ÑìÕÂLÑ_`˜š’aô+S ä¹þô¡»f|D„ããNœÉÉO¹ælæ—™ƒ;—p«Ð&¨?†ùRNØšø,Aõ:Cm­IGHˆ'ó^Qgî§y âWr”yfòM™G×f«œ?vñ…—GŒÇ_ð)\Ak—£ôʼÑ@ÕµßÀ…Ù¨Vñ5º…þÂwq*ÊËGƒœ5t%c7h˜g2OO’¢~1¿™ž™œ úÅãìg縬›1¬ñ;qZÃOŠ®ÄI: ·9søcGÚ+ûÑ î­§~µkO½.ûÁ^BT£©Zìku£fG_1ÑW£÷ÖÖŽø 7˜b¨šÉ6ž+©ñ{èZÕWÓfO!>Ê3ÙêjimŸšæ öµœ°ý†mžû™Ì [eV M³¾®¶Cy¶v §¦ÙßPÛÁë…?xCàßTÛ¡iõÀÍ!hô<’“ÆH¬Âcd°ä$õ6øcƒõ´ à„Ôeaˆoç:hWœF‰BgòWIú?$鿤ÿ]’Þéê˜ÿJÒe«oþ-Iÿ¹$ýWØŒi‹í¡ µÅpÇõQ£ß›÷÷¡¦ûñv»ºøå ÈEŠ-ò6{é®aé)ðÓ4¶Øaw#~q uZ6¨cññ½ˆ­»—)âC†û³rH¶±$8|§“àÀ˜è2ÚDmg á!˜èÔc4Þe¡H¶‰#eCùß%4ü?…è_CTeXstyclstext.texªxÚÝëOã6¼-·ã^pÀqÜ1†î¸]k¶}EcݤIû2mHÛ¤iMéÜÄm-;JÒfÿõ¾Ïqb7qbú€ch–À®ý{¿üs»SIƳt~0Á®KìÓ†¢Aç«ÝJ~<ÎC’3Žªéü$; UKçµÂ.ÂPáºÎë9PØi¨dK™sØ Ô½Ræ1×Á%eî00„Åé}eît‘8þ$—ÓylSñ@‘ˆÛrWA¼ÙÄéC…· "›8P?Rd°‰çAIôÇ…sÄ•ç‚+é܇ÀmÄtv$ÜÓt^-Àaf‹ ÃE›~á©<]U´ÊD®ŸB³lì*]ÊÂÈÓu%J²®ÜPÈDƒy®˜N‚œÂ±š›Š]8= ,‚{QFKµíVAc„#æHó²Œz0@¶$ôJq*">sTDÆ2m+Aé$"ѹ/cêÓtÞQRýsAFÀ„x„‚ã`3c>&zÓ!® 3‚g‰]U ˲s“µgíÕ7…Q€pß$Ñ Fù­|ˆíh"D°éÀˆ/Sˆ.FM¨óQÍYUøqÕz1ݘKÓ™4¬KAwÿjQûú&¿«åÝPä]ÏÊ›¥r7Å}weä$E`žÐ‘üg3¯#oÇ+q³ûO5ûkŠzÛ¥y‘‘äÿ¡æO§—•òQ&RU£òF7¢1`Ì#¡nµ2iT3þîWæ³2× ðnªDîÂ>Gh™È•¹ES¯[–ÑŒÚì®0¬p¿n]a¡Ä'ñ]A8ô}D… §¦Àï]­n—µ&¡ Bn•çÓÇ`Î^eæªÎm.™ו«T°ÚÜ‚mgý˜öÖÆ_õæ!ûØ4ê–s`„­Òb˜"Åòi.³SxþžŽ™váYÜ›ô¹PU4çfÚ(Æü`ŸçY¤B^çì#zÒ·æ~½éînªZ¥o“ßâ¬Û´ÙÐOŠç´^ɹg½R‡niÑ^ !E½º ØÓ…:È£ôhÄ –>tà1ƒR„Ùó„z|Í”§ÄqèsûA‡ŽbÀ?äÐ3£iVWŠWÓ¸qMãÆrßøy”èÝM ßóäÈgDÎ'ÂÚ$“ƒ¡ |øL _zb±«x,ÕCö-E«®,¡ú¢Éš/†þÉå pý ]–´Ø›:Ðekè‡È%˜Ž@ –b˜øuì?;IˆHÜSàû€ºÀë:€zCVEè¢>ŠÙÿ`@âU<…¨ïqÉ"C:LùøƒžM6ûc»”x°èœÇ\¾ß8ëŸN zŒè¯œÒï)•c†zÌP‰Q Vެ.íËÕ¶’ôIÅ¿‘ÔíçýŒo¶›jõJ…½ ½ËâÜ‚ŒëãλÏ|1·Z'ÖE{¿©¶¦‹ A¡ägºº›óI0öÅR|Õ³»õs[¬¦PŸ¦ª‹Çk"PtnbàA…êÂ5bVÕû&Ûã{E&C}c•yöA'Kt]³ÿD³ÿH³ÿP³¿¬Ù×ÉóL³?é ~×Òni–´ËÙ²ê–!¯ë×ú[ÎgfE-D¡r×Iµ¬v{ŠF"ýZ!³<.F˺°.%©7W“‚Ó´_O›^*Åùîxi·„¢÷e*]*Åœ-„ˆ[µtJàI-u¡–ÝêÕªKÓUÍþ¦fÿùŒåaK³¿­Ù¡Ù5¡œÌìÏ×ÒŸ-Ë¿øÙ¹lï[¦Xt¼TYx-_3²„©­j5èmPkŸ~I­Ú¡ßÐouO3ñ{ÍöjHf'~$úïjŽILisp lispclclisplmudelscmsslspfasl source.lispxÚ­[é’$·qÞƒ"%QÔá3l‡m­V–¦g£†\ý3MrýÇOà? © tºœªBms0ðZz?}y…ªžžPhcÈL p&òúÏäß?jþÚ´¾ývWûòº(}ÓØvüö‹WÏ–ÿ~º¨Ü™Þ¶Ã\ë¹æ?[ÔÆÞµ‡¬Ú Í?ÖüÛoãÚXúRóORé0š~ŒÅiþ™æ‹ÇJ?Ðü‡škñðjÕóRy‹N² Ÿ¬rT{_¿Zµû©æö®ëí084ójÕtÌ÷S[Žy…¯&”¯Á§«îÛ©ÙÙ>}ú“UÛ¾³½ý\á³ÕŠÆ"mòËi~ñ?›«Ë‹wÍ—¿ÞlÛw±Ù[çÚµöj°+}íežÏŸ¯–<毟¶bÔÆY~YpöǺÛÝÅ;÷e;ÕuÃæ­m±¯½‹sÝ-l78 pYšˆGßg¿È #­s¡uuh¦ztšÃOv(j׸14~‹ÎŽ›É;\Í-¯JÐÇáÁ‚½»ƒØ_EäõÓ$N{Ÿ‹Ö½§’uï© ï=½ÏŸž.dV–HÖœ]«uY6ÜUQëû<þ½­m!¯ö¤Æ²u8_i9ýeµó <ðÕÃ{¶.;x*z|¬ö¤ÆN&ñP¥Çæs¾åW¦ÙU¦€Ub aØèqR:¤ÂX\Ûû[ßWCp-j´¦.Fרb‚ Ø;Å`¡ˆª7|ʈ‹ÒH$½U 5²C¯Œ’a0cÇûEáÖŸ‘qµç ¥¯l^aGƒTÜÔuaúÃĨMO’yô#¦5`UäÞ´× B…‰·d\ u³ÝE1ûOk•\›ö0™Ã‰*Ž/^o.¶·áÛí›â믾ùí¯~óúO›7±¹>¯á•ö¿þ´£{LÜ/”ð§ÏsqëÆc¸=ºÚ"µm˜ZX£C±K¥l}¶·n ¼ ½§¾-ö½o~Ù‚Å”€¬³`¿®÷‡KNCkol¨NÓçqN †Í™é% ²Íwàî1ðô°»÷Áíõö¾˜5Ól­‘TžØw@Î}Tçé%þB™ª2G3Ķs0C0õ­¹²=ÿÍõ€\)3~ÀøúáÛâã3ôŸœ¡r†þ³3ôŸŸ¡ŸÏÏÐ?{ÄnZ _FNÖ¹Nv~ôC¦ìýKг0¼Ù\ЉØaû*lßm.7kw†}†è¾ÉAx±râ'ÿ™,wßÓ)¤MŸŒÑ÷1ø!!ÜxEì¸ìpÞÖ¼ÎÆ÷¶3ÞÃñ=dt˜!·½-DL!6¾â „N·‚»ûÑ è°t^+ÓW…C÷íhî”^ûqPÐ5dÁï%÷\h)¯1ïí°C*T?Ý4æcajg["XÓd„=rB]KѹZ|v4ñÉ]õBg‡åMÒéMçjJ¬=„jÊ".3кÂÀÇ#-;-œ¤¸±%î4/º Ú»6tNJ°5Ct–1ü=éLê6$›'_à0 P0G¹ãúÔ;QÅÀdHW3Li# ÞÔzSAÓ¼j{GZtdÖš‹DmØÚ²á¯e•iT´³%4"†Ý[ÒÔVm OªS¹ý’Íhv12ˆSrîêb¤ØÕJø KîIb‹€X lÞ§…ßKnû=¢K‰Añ¸³ éxë HDåœÈ[ÊG«Ba¡XÖãDa~X^mÐÑöûÉÀ—€Òjš}Ú‹™Tûƒƒ_•¤u ScR$;ë«´ëe ô5×ûj*‰{Á<ÐbXYNðçê.àlùö¾‰ƒdæÊŠˆŽŠˆîƒ¢<8…£üÙ0Üôv†©ih0Èñ·“M0@ðL´÷{ˆ‘qIÉ0µRNí(ÍÙÞÉzOäwšóu4øW ÐüóH(¦Žu£bH›÷îp ° +¡Ë ¬2mQNPÂâ‹Úî—m®?_|ZùÛ6‚©*â#nd Z)A¶¼Óœ¥ ›¹"6™Y_Y8ÒòƒMª& a¤ÝŒ¢; €åÑ@‡nxO XH¶¤¶tÚ/UçzžÉïGC4 9)¤c¨‚Ø/S»óä##ž$#æzQhïÀÂõEliðrTÇD1q]Ó„Ï¢_/*ŒsÅÉ5`¯çÈõ¥Œv—=§”¤¯£ÛX;,.d”Ú€¼­G q¡M^D&„&&|œ÷”ì)Q¥*êå$;ÈìkoÆ’?)ØX)’!Î4{WÖÓ@~ŽBüâÁÚQ„CdBB<¨âK ÖôÔ­ ¯ ¤A>Ç£b$yT™D`Œ“ÆÕ!ߨӮWèM“È<{³Ô%ëbÆÉ_°ýH¡KSB„ Ò•B^sg3ÕæcM¬¨ØÐZHjÊà$–³œ`›$¸X¸pÃÕ ÷̘.ÖìTèÍÞüNj.J}‰’‡N‰ˆs‡«•©çIIJ “€÷èÒ…8°“¬ Ç]A„CÝÂè¹tÒ5ã•;à–NÜÚô¥$Át] «¢®b82F"ß2¢{İj]…%—Ø)ƒ$D¢I„@ö;üÞF(ýÀqy È žbR|™” tƲCÁx^3š *=™f&Œ™zÜS-]ÇùÖ.ì50³ص1hØVU² VE76õÑûk‚ˆ°Ï„|Â?¶õÓá˜×R?Pã$LV§ÔÚœ›9)Aܨa ñ;Âfíº²#ò’…!·mUïv¤£«n‡k¸rJXÚ#€)4—Ñòm„6Çö¶¢¶¢Ë’Ïoöc˜é¢„˜ÜJ¡ê„ËSÞd' •`ò:#€7^­5FϱfO­E’XSQeÈ„Eˆ}\…³xƒPèžì†¶gu…\FHÐÜ],Ä”’½v¯nX¤³±"nò‚4Û@‰@×8µ©Me,å|©:ZqÐBIe=-Ä Óáý³Œ§-c .]D@šîJ .ôq¡ Š g …_]{åLdƒ‚!£ gâ«a¾Dï’”’旅 äÄHÔlÈË-#y„éŽ,Nœ,)ªé¤+ 9“°ÜŽd^>D^gAèt›®H•Š‹.Ò ‘vQzåÔˆPÞÆ)}]“eCïPÚ ‹`A7ît‰ÃŠ y— f1b8j3lî¬Ò6¡&k˜Í€ˆÌ£*DéÌOC B&4‡óA#·}IßUê”u/ý±Ø,kÄDö>$Ð@Ön~yœÚk¤Þ,BfËk±U“ÒÍ C¸ÄáŒS¿ÒŒÓωƋ™„¦{•D‘›Ayœe_QÌå§ôPG ¬¯HOuæG: ²x»´ª®KQc¥…¨*C±®f†B¦¬$ÑT3Ù¦B3ŒIRIª™Ð4c2âtl‰D:'0!Áô­´jª˜ñW17®I%©fBÓTh„QèV c†’ÑÁ!ÝEY; Iöì]5%vžîãÅeÜy¸Ï.^î°È‹ BØWTà-$ˆ%—êì6à”`ßßp.~`„ÞFˆò`¦ƒ>†½q½oY”Au6Hèb–Ò°ˆ@§´ÄŸIÏ÷D¥*J5v´»“W]ñ=Wº} Àí]öÊKAxA¼@t%&œà"· SÁâêoõ:lX€»ñõ% ,?8_„1¾"1äjx}² H qÏVCA„WrŽØ>ŽÅ-]Ù -S}7é}¤Œ5’4VÄÓšVɤ6¬a)¥„渣?˜¢Ù“¨ø–aêÈH]¾Y¾‰zäqùc?NøøO÷?ø íÏÒ»‹/.îÂï7Ûãå&\\üñ‹â¿ÿôf{õŽ"m¯„¶Ù\\Øð›‹í›PlÞ)ñ݆þÔaÂØæ5AõæÝéb¤Wwºx öQNøß8ÚÏ·_‡í7”|E !ƒ¼>"ýGúöM‹?û–?‰ÝN²lƒ~¹z³°BÁáí»át¯â£vLžÞf]†íç±[¹&Cð $[¶Ü?¥£™ß×ýý³üE ŠZûœ¿þý\«RZ7ùfѤD¤8†…–‘ÝIÖJ±õ”® ½nÝð¡ßX,žÂ¥±\<ñ74ò#–'üŒaùŒÓË<þ‹„,ˆkûà/;B'?n¹x|6úã–'Lçų§¾.üó‹øºð’Ï!¿Š}õSC#Eê(ä†=^ óó ýh~iÇFÚì#ð½ilF0v®õþuoèzZB ‘›V¾ÙÍáˆÃŘÄß§2é±,‘$œ÷娉^TövcÁÉ="£¸á€†ºuÕ)t]9D‚:Ál$ ¢á%½¸ä)Rº¾Lׯl ¸›AQ)ž[ÜšnA2_„õÇ}á îÈ e$=þbL.oŒî…ŒK¢}‘}‰0Æ…8D_ÊöÅÈ.(™@Þ¨Ä`e$ŒÑ&Dï%Ž*â2”…Ç“Æú°ĦUG)ñV¢ÈÛ•LcoˆaׯÆã[Åå«ñç/μò¾|ü¸¥Öæ·néâ‰-DÁ0Ë…Ïžeçnûÿ—‹ùüëz>ž‘W‡ÚïT6ÿ çôòo1§¿yì4°Lualua source.lua‡xÚíWmoÜDNšÒJñ" E¨¼4¥äœp&m? ª†S‘ â ¯R…ðºÑÚ^ßY±wÝõ:—#S~?“ŸÀ³~‹ÏÊ¥§Šö§ÜÍzwvfvž™g«õçFÞâRÉÃŒ'òp{cùsŽÎVgsµÎÝVçÒj{­ÎV#¯4ò°ZoW/7òj·Z®M»üÚ@­¿õÊ`kð,ŒNäÔ}Z*#"·À8nZòžþå~6Z;ÝÄæ _íóíFæ¥ MÉM¢¤‰8‘I5l< Y—ºíŸ7’±‘ǃXjsÌØöŽOLO˜$&!‰E,šàÏi}ÔÈPIäF7œqÍC#´+Šçõ¡¶:/7:/ÞÉï¾·?þšã‡ãïúõý~g»d§={§_|õŒ={«ƒ©2X´íÿA{å Ý<4efØ“•©IÒDÑ[‚g³íaæ³;Ì ¶;ßéN—e‡ Rý—¡m_Zëw©´f65>$º¡Ë×Ûô«R‡]ž77ž÷Ùì‘ê‡×pbWÞì«~Ûf*Åöô8¯ÃŠ=´ËøÏ‡ã?Ýûþž‡gÒMùl¾ Ý9#ï‰ãï:#æ8C´2a¸ÛÚ¬|_„×Êwy$s¥#ä[­Ò~¾[Õ 8³p%ÏÄ™"Tu¥o­¸UÎÝýËý½‹ë!GoátBn ¦IeⵉOyÌuÂ-v›–<Sâ¬í¹i”3¦ð9š<¸é±ÈõìW„TShÎõlþ³ï±1ÛóÁy{è/€1·zyâ‘?nWì\¦òÚnd™ „îZÿNÞY‹ºd¯j„‹»û¥»_6ÿVñØaÞèm㽪`–™ªe‚ñxí8Ö'ÅU!l-Ù½ÞæÉMn2yŽ»;šd÷?s˜ìjëÆ€ì«k¨~—G¼˜UL²¹‚IÖù,¶Çg hÁ(R$ÒBP¬4%q5†Ð”ZîG‰q.¸¡ù,I• •”ÐŽÔ66á~â)%`Ò` Žëåé—~?q}æÒ}ÇR3·Iø1ºtø=>~ôëo?üô#eÜ̘;Êš•Sá@›ªÝ¶ÿÝÓ{ÏlªÝŽœßvnÊå´äÓákÇõ"{§úpÈr9«8°ùÏ ›¼(„6ª4¡™rÀPˆmv…Ö€a*L,䱕öZ1Ö%9Otdó¨Rµƒº;(SQ‰)N ÕZ9I)Ǫ!Íçâi „0€E+ +0™hAq@Ô>‹¾O£@uÐ4®Ì"·5óðˆN*/öL“oôééöó|gÈšE™çJ›¥{ —¦¿/Ÿ¦PiUtÐQ¨F âÄKº”Ò†DMYÐ\óœ‰H#‡ê ±#X@ß¾RTf9¡%"[ਚâ'œÑ´(J…­Þ9XO¢Òñ=Æ…ƒ¼`¡ íP• ‡’!,$²B0ã'¶72u eœÐi‹“ñPáÿÉR)ïN((gLÎ&‰)‰D•*€=еH£êWMí÷ξõ@L@#¦\Í]„¯ŒTÖˆBˆˆàV‹§ˆ ¾f‡e£M•më´,f9/ Yr)o ’[;“WHoD&Ë«ºªžëćTQÛØ‘E JâØ$À@œˆ°4V&Æ–©­œ&ZØ[G/À ÝëvÚ![9(xk7Gºª2ƬH“€ª¹\ û ”ÕJ’7-ü¦XëáL©#D"cÕLÕ”TÏÊ: ªdѬ•ù1OA1ÿ>ˆ¡9«ÊùÆÊrNÍõbPÖoŸÑ,€"à,•éQɵAÍÒ3÷Z3{4¦Ût‹Ø.±/‰=¡ƒƒ ýu@ ¾Á×¶ˆxwÀÏ÷ô/Þþ+ Make Outputsource.build_outputÐxÚ…QË Â0l¬èÉ“~€P­ÅàÕ\ú!}‘ÖXM*i‚~¼&%s™…Ù™Ýd}oÀLsY2Lyà½c>ª½ÄBhžj¶­;÷Àòáz=gÎRsß)QX)ÚËNɳ’vÛwØ ÿš~LîÃLXB˜(ãù6Baºßò8B‰©”¬MüJ3á’Ê+ä˜x¢-yV¸Ù"«Â œòæF„èD„Ƥ…ù~Ò÷¸!ð¥[F/²ÆY& m"àœ¶î{¬2Øîî$;.Makefilemake GNUmakefilemakefileMakefile OCamlMakefilemakmksource.makefile^#!\s*/usr/bin/make\bclose\))?first_assign_then_colonW(?x) {{just_eat}} {{varassign}} {{just_eat}} {{ruleassign}} {{just_eat}} function_call_token_begin\$\$?\(include [s-]?includejust_eatÆ(?x) # ignore whitespace in this regex {{nps}} # level 0 {{open}} # start level 1 __ {{nps}} # level 1 _______ /*_>-< {{open}} # start level 2 ___/ _____ \__/ / {{nps}} # level 2 <____/ \____/ {{open}} # start level 3 is like snek... (by Valerie Haecky) {{nps}} # level 3 {{open}} # start level 4 {{nps}} # level 4 {{close}} # end level 4 {{nps}} # level 3 {{close}} # end level 3 {{nps}} # level 2 {{open}} # start level 3 {{nps}} # level 3 {{open}} # start level 4 {{nps}} # level 4 {{close}} # end level 4 {{nps}} # level 3 {{close}} # end level 3 {{nps}} # level 2 {{close}} # end level 2 {{nps}} # level 1 {{open}} # start level 2 {{nps}} # level 2 {{open}} # start level 3 {{nps}} # level 3 {{open}} # start level 4 {{nps}} # level 4 {{close}} # end level 4 {{nps}} # level 3 {{close}} # end level 3 {{nps}} # level 2 {{open}} # start level 3 {{nps}} # level 3 {{open}} # start level 4 {{nps}} # level 4 {{close}} # end level 4 {{nps}} # level 3 {{close}} # end level 3 {{nps}} # level 2 {{open}} # start level 3 {{nps}} # level 3 {{open}} # start level 4 {{nps}} # level 4 {{close}} # end level 4 {{nps}} # level 3 {{close}} # end level 3 {{nps}} # level 2 {{close}} # end level 2 {{nps}} # level 1 {{close}} # end level 1 {{nps}} # level 0 nps[^()]*open(?:\(rule_lookahead&{{just_eat}}{{ruleassign}}{{just_eat}} ruleassign:(?!=) shellassign!=startdirective ifn?(def|eq) var_lookahead,(?!{{rule_lookahead}}){{var_lookahead_base}}var_lookahead_base7{{just_eat}}({{varassign}}|{{shellassign}}){{just_eat}} varassign (\?|\+|::?)?=ñ xÚíisÛ6––´qs_M›4¦c'‘숎í8‡Ei›¦éÌ~Û™ýbÙJ‚dÖ4©’”‰ó öËþä€,»Mœñ"ßÃ;ðà¤ÿ0Òãjvž³=ßÛnù{{À‹Âí§ó}à–ÜD1Ü ‚+eç› œ¾[í¸þAN{R‹éOÉa1çä°«ö¼ö‚ý&;ß `Áa´¢jÐwA.Ú·RP,Ù)(lZ ŠåúN ŠÅº(]C —¤ Ïèåì|íô½Väø^Õñöý–_ÆxE«ïª:Öã5u¬Ðëê8X³7Ôq°Šoªã`]ßÊÎw)Ç 6¨ò}ï¶2 Öô÷Ê(XÑw²ócJtžœZ³Ÿ¶£œÉFBÇ ÿ8:fþ.ÃEŠîÆX1¬ãõ“~ÈÙ½ÇtGŠðWß@»FãusàŸ€±$÷³³ECΨþ‰l£ ¢¼jس[ ¬úA5²›„{Í0^œ¶î×ÍÌ ÌÏ,×öm·ª‘ÉÔÛÎÛ} Œ‚©Ìq]aß»éfðBæÕq0‡ê8Ø8©ãàòX‡²:!Æjœ°ß #'ê3š[ ën‘É£ÛÛ{¶ã¡§O˜Ì¹½Fv¡ÇU&[¢áÄãÅ$P‰j‘a¿c† öídògfPDB’-þ’ÑH9 ïèá¯Lȉû³o»Õž@“Û¡V›¶k{- œ÷Œ%qâ:ý1 ^,C°šÍ£Ó¿3~àBгóÿ˜0ò)Or yMcn‚‰æ½¸Sµr¬,–Y{ö.¼éªÉ)"SMÌÅ, ­Ø,¯¿×Aâ½y“f'˜ÖßœEã<íM pžsµr5OâMŠL d4öL}Úê{©c‡l˜6E‚/ îÜ·FPîSI[Ãt`iŒmQ®„˜__¯£û¨]ptàmˇùÍŽüÀ²ÃØ(Õé‚1‚Æ> Ù+KªR¢1MŠYi„ p‚±©Qt RÁw,[¨Íì¼"ÛBÙײƒn?pá†U ü¼@5ëCªrde¢r½6W‘ƒ‹”ç1îÞú¼ùÁí§z öÒk9úeCÕN/g\2Œ1†õ“+±H èÇkt1ÃQFï9^bîRáë"#¿Ë3òdˆ‰E%4:È}´ð’À2ŸÈõrÕx«¦Å†õݾÏÑiàˆMM¥¯ wÅÜ ¢¬±&¸ÿê´ ¿Ü>.ÂSÜž©L0‘‡u8‚¬¦ë·v-8!Éû¦4ØH™Ë!)Å{c,v1©b±$¥± -$…D~ÏP› y½UÐÈ?ÌÕ• -‚jâªq…¢³ÐCT̲m–kCx #/bOñHšü…ý^^±=7ûaÇ“*àšÁ5N¬´Ãëë“ü:%ÃÌ€äŽ×ñìÀƒ…–cþWØû7(þ;ÂÉaÅ4Í9Nü˜ùÆi¬žiÓ,Ã?ÓLÝ#½„E©^z Gfí´F…~ÇîSõû²›^Å"çW®÷C„„QçÚ䯶¤žáë°ßé8‡éuÓAëÓ_v»M>„?{À?ÿô/½ €íÆÃ¤ ¬æ?œNzö3b¶—±Òʲ[;XâŒd²k-½ð!;]D«ãÚû¨±.ì9¯b7Âé¯ÌÞèuÙë>—ûH7+ :£ 7‚Ê/>D·6 àl5äÒ nzÝž6B8ga–Œ‰¥ËHEƒ!J™¸ æ†Ååjºg ‘†os-ýÁ©ÐúÞવŒ`Ëbôš›"¡;|Bvèîx0F8mËq]Ð…Ãu(Ž}d%»d%+ëc(‡R’,äÔ˜Z±t'mþ@ñ“—þ„èwI•]/Cï²8WÜ'fA”ù2vYn2( 07plnTÊææBuÞ(%œ…>-dœÜ{Ÿ.VÈ"î=CÐß‚WÑvBÑ>Ódûÿ»Œ,µ–…ˆƒ3,2ÏŒvœŽºàfî­res@Iì×|êërþ8y%{¼lrííd|@µL·»L'G|¹´°ý¶ú&Á%ˆÒ$W0ÖRŠj6âË¥éô>A“¦˜â½ÙN㣑\fh˜Ml5y•å:»À =°kY–Yn™ÿ±]8ÀühƒÖîQeIƒéÓÔW1@F‰¦ól:×GÖŸ4*•zò:õÀC õ×d°W¥š“èèë—=Ãe±W¤V.1e­y-»–}܇qYìey¶[/×á"³N¤:‘j·Ö‰T[–]'Ò‘©|Ū¬b"zµ39FÙB\\¶JÁórµÒ¦à•1ábréì “?gW˜¼o”jJ*Ý9‰»Ó¸G‘å®!XM¿}Ä}%I´Í·™q½Xlÿ¿Š€E<'©%ÇuÒMÈ})êÞr’ý3”€x³¬UÁ2Ýby£únóÓò“•Ï…í?¼š_ÜV#®¥_¸jßâ»ïˆ†Ç0‹[!¹P?»öƒ–_7 È”NÞMUnD|DëVk‚péx1Opñ3ÞÅ–~ß%~)"ù ‡p)K.·6ü–åBÞ糉BÇßcW°¿D…½5qJ½¥b1¢þZª¿"»yªõ ÑYÐòø]ÅËTŽÃÖœµû‘¿û§ÅëÖ)¢ÕQ?=Ÿèà åÆ|e£Ñûô¯Ï›¸ÇJœ.Œ…;"ú®"­Öô?§U1ŸUÜ"õbéÿ:å(»Markdownmdmdownmarkdownmarkdntext.html.markdown atx_heading(?:[#]{1,6}\s*) backticks-(?x: (`{4})(?![\s`])(?:[^`]+(?=`)|(?!`{4})`+(?!`))+(`{4})(?!`) # 4 backticks, followed by at least one non whitespace, non backtick character, followed by (less than 4 backticks, or at least one non backtick character) at least once, followed by exactly 4 backticks | (`{3})(?![\s`])(?:[^`]+(?=`)|(?!`{3})`+(?!`))+(`{3})(?!`) # 3 backticks, followed by at least one non whitespace, non backtick character, followed by (less than 3 backticks, or at least one non backtick character) at least once, followed by exactly 3 backticks | (`{2})(?![\s`])(?:[^`]+(?=`)|(?!`{2})`+(?!`))+(`{2})(?!`) # 2 backticks, followed by at least one non whitespace, non backtick character, followed by (less than 2 backticks, or at least one non backtick character) at least once, followed by exactly 2 backticks | (`{1})(?![\s`])(?:[^`]+(?=`)|(?!`{1})`+(?!`))+(`{1})(?!`) # 1 backtick, followed by at least one non whitespace, non backtick character, followed by ( at least one non backtick character) at least once, followed by exactly 1 backtick )balance_square_brackets0(?x: (?: {{escape}}+ # escape characters | [^\[\]`\\]+(?=[\[\]`\\]|$) # anything that isn't a square bracket or a backtick or the start of an escape character | {{backticks}} # inline code | \[(?: # nested square brackets (one level deep) [^\[\]`]+(?=[\[\]`]) # anything that isn't a square bracket or a backtick {{backticks}}? # balanced backticks )*\] # closing square bracket )+ # at least one character )$balance_square_brackets_and_emphasisf(?x: (?: {{escape}}+ # escape characters | [^\[\]`\\_*]+(?=[\[\]`\\_*]|$) # anything that isn't a square bracket, a backtick, the start of an escape character, or an emphasis character | {{backticks}} # inline code | \[(?: # nested square brackets (one level deep) [^\[\]`]+(?=[\[\]`]) # anything that isn't a square bracket or a backtick {{backticks}}? # balanced backticks )*\] # closing square bracket )+ # at least one character )*balance_square_brackets_pipes_and_emphasish(?x: (?: {{escape}}+ # escape characters | [^\[\]`\\_*|]+(?=[\[\]`\\_*|]|$) # anything that isn't a square bracket, a backtick, the start of an escape character, or an emphasis character | {{backticks}} # inline code | \[(?: # nested square brackets (one level deep) [^\[\]`]+(?=[\[\]`]) # anything that isn't a square bracket or a backtick {{backticks}}? # balanced backticks )*\] # closing square bracket )+ # at least one character )balanced_emphasisÿ(?x: \* (?!\*){{balance_square_brackets_and_emphasis}}+\* (?!\*) | \*\* {{balance_square_brackets_and_emphasis}}+\*\* | _ (?!_) {{balance_square_brackets_and_emphasis}}+_ (?!_) | __ {{balance_square_brackets_and_emphasis}}+__ )balanced_table_cell–(?x: (?: {{balance_square_brackets_pipes_and_emphasis}} | {{balanced_emphasis}} )+ # at least one character ) block_quote(?:[ ]{,3}>(?:.|$))escape\\[-`*_#+.!(){}\[\]\\>|]fenced_code_block_start(?x: [ ]{0,3} # up to 3 spaces ( `{3,} # 3 or more backticks (?![^`]*`) # not followed by any more backticks on the same line | # or ~{3,} # 3 or more tildas (?![^~]*~) # not followed by any more tildas on the same line ) ) html_entity&([a-zA-Z0-9]+|#\d+|#x\h+); html_tag_block_end_at_blank_lineŠ(?x: /? (?i:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul) (?:\s|$|/?>) )html_tag_block_end_at_close_tag(?xi: (script|style|pre)\b )html_tag_close_commonmark¨(?xi: )html_tag_open_commonmark(?xi: < [a-z] # A tag name consists of an ASCII letter [a-z0-9-]* # followed by zero or more ASCII letters, digits, or hyphens (-) (?: # An attribute consists of whitespace, an attribute name, and an optional attribute value specification \s+ [a-z_:] # An attribute name consists of an ASCII letter, _, or : [a-z0-9_.:-]* # followed by zero or more ASCII letters, digits, _, ., :, or - (?: # An attribute value specification consists of optional whitespace, a = character, optional whitespace, and an attribute value \s* = \s* (?: [^ @'=<>`]+ # An unquoted attribute value is a nonempty string of characters not including spaces, ", ', =, <, >, or ` | '[^']*' # A single-quoted attribute value consists of ', zero or more characters not including ', and a final ' | "[^"]*" # A double-quoted attribute value consists of ", zero or more characters not including ", and a final " ) )? )* \s* /? > )indented_code_block (?:[ ]{4}|\t) link_titleþ(?x:[ \t]* # Optional whitespace (?: ((\().+?(\))) # Match title in parens… | ((")[^"]+(")) # or in double quotes… | ((')[^']+(')) # or in single quotes. )? # Title is optional ) list_item'(?:[ ]{,3}(?=\d+\.|[*+-])\d*([*+.-])\s)skip_html_tags (?:<[^>]+>)table_first_row(?x: (?:{{balanced_table_cell}}?\|){2} # at least 2 non-escaped pipe chars on the line | (?!\s+\|){{balanced_table_cell}}\|(?!\s+$) # something other than whitespace followed by a pipe char, followed by something other than whitespace and the end of the line )thematic_break«(?x: [ ]{,3} # between 0 to 3 spaces (?: # followed by one of the following: [-](?:[ ]{,2}[-]){2,} # - a dash, followed by the following at least twice: between 0 to 2 spaces followed by a dash | [*](?:[ ]{,2}[*]){2,} # - a star, followed by the following at least twice: between 0 to 2 spaces followed by a star | [_](?:[ ]{,2}[_]){2,} # - an underscore, followed by the following at least twice: between 0 to 2 spaces followed by an underscore ) [ \t]*$ # followed by any number of tabs or spaces, followed by the end of the line ) url_and_title<(?x: ([ ])? # Space not allowed, but we check for it anyway to mark it as invalid (\() # Opening paren for url (?) # The url {{link_title}} # Optional title \s* # Optional whitespace (\)) )¬!xÚí]IÛF–§d'q˜µ³'–‹ Ú’g¢¶¥¸“^Ò¥»íÞBPH@"~&6FVÎoó æ6·¹Ì'˜O3ǹÍæ2s™ÓLUU¨*¢¢¼¤’H¯ª^½zõ¯÷j{v%~½š¼¯[žïu­ðž1p,ÛõŽºW?¬ˆ/5é&%])$Ý¢¤«Éûë"é4ô‡®w×p='LY8W‚˜1q>“‰ÞÐïß5þ2õC'Í÷©BR–ëÓ…¤¬jÏ’nSÒ …¤×(é³…¤QÒjòþ¼Hêí´êÏ©iXŸWӰʾ ¦aµ|QMê÷’š†Õëe5ÍuJó#5ÍÇ”æ‰6¦éû¶ccËK…Deý¶@xèx}Ç6=‘šà5©Æq7´†n?¥z=ŠIÿL.‰Â‡Î=®w¼)U‹'tÃ!§ïoQ²Âß.¢d ðŽTuJ„HB^èx§?.¦e¼+‰£[ëhbiÎï•¡fy¿_†šÕðƒ2ÔLÙµ2ÔLí/–¡f`-S¹G–Ëé캚†Õÿ’š†ÕúC5 «ëe5 «á†81ÍÄ:NY®IX“„V×]=‡ˆU¬žCÄjÖÈ!bUk決™­œ‘º}£7q,ZÒPÒ%’¢ß^‘Fn7­IH¿¾*a u:#í”nS.¬ÑØ™–gS‚-©=¸Ñ™’lKÕâHôLF®g…þ„R_“ÐŒ ËH îR}$ÉS¼)Ñu‰7nt£$'ït”ÇÈN¿û; ^ðwF «F8AÌpuüDwobõ列ìHbdƒ%ø‰Ô¶`Ý0FÖä®í3º,ÈtÆØqcöm+´hº›R÷ÉI7GCÃöûáɘ‰iWBºœä¡Å„²'áLvªzj9$NVÞ§«RŽcšäVÉ$?•Ɔ$‰=“Æñ™â}&õ:'è[©œ>—Ù™±þ,y§vÊÀšØDq/§d?—ÑYGÒq^V¿Æmž†¶ à)ù/¥’crfP²/$É&Î!%ø•Ô;AF™¿–útJËS}™¼S3Éõl4„gŠï+©D‰|¼¿"|kpý—R~#iÀ,%i¡M~#—-äø[ sPâÙû„‡I†ìn'ï¯gPÏ´ÚäýOÌ5Úï%Óï3Êýƒ$DF:Sè%ìâ(Q¦ë:’z¨L—ÁÄŸ“÷wTIf˜ùVÒÛ‚v–<1a ‡þ±At“›É{U æÈŽÔCyë“ÒìKê/Úc”ª+ Eüh~¼SÏÙ;ô++y§Î'±)è—=©dÑ– T}ŠÉ;õ»ßfœLîNÇ­dÌnm¶(>®HÝÕÙ OZž5rZÓ]ßhW¹p5å1_~þM9†¶Cof3ô°Ù‘_+œ> ]Û»ÙÞ»ØjîÔ»ßwêm3¸ÑÑÑ*ût%%¿\k[Æ_oß^5>é4¢uÓF†þ“29ÑOfm†ÁŠT™óÅ) ¦^¦$ÚŸÛû”Q^®éˆió6-ï}±½¦h„™`$máŽÍš"îfs¦áj¶z Ñ3I_®HÕL¸!Æl&‚8ÿs•2qO߯"V4Í êµ½ÑÎ%½iè…¾Ù©âm­s¿¹ý@S¾Öµž;ާ]ÕB_ÛÖÛw‚jœËŽ–ûZ×} ³Ž­õN4ßs4ÿPC¨”g!KÍ µ¡c¡»}gG¬ÀVR!}œ5c‹¨]çY©Ë¬`÷êŒXÁY‹¬tyVº+žFt4èû§¹\Vø¬ Gz¢3fØIÔ©lÛ[Þ‰æMG=gBTÀêš?I åÚñlª)¸ïU™Öî$úº‹>¶¢˜]¯fu­K•´Ä} DrZ=-Püèœ"ëk"3ä˜]ïÜßl^€:ô;èw?€~‡Çg»a¶¢v½ÔÄ´ë5ô©…?eúÑ3•ÂWV²jñjVêýÙñ”ÏðãœüžQ˜__)žo+ž÷3 œDz Éýi¡ß€Émå¼T úþžh`—¢7«c3{`UJt)/Qo::!K{NÂÏyÒRöÇS¯N-bçÚΡë¹ä#N‹Ö'œKp~‘Ú©tãB%ÓþbrŽ5Uò9…”?Èàcê)åLß/ç';­´Î-Æ¥J^ÏVè/]©Ÿ¬ÎÓrÔ9¡ÕbŽpLÌûC+ŠŽ´¯(¼¤ –]¼{.0‹#tT ÒßH-ðšX<)5ãY¾!ÒÄsQ•`¨¬­pvJ:‚˜õû×è@æ´Ÿ8š…~Gh¼Aÿ¢ñg[sÃ@óüP³ÆcTžeÀãUÏÑ0cx ‰ 'ɶa¢¡é¢Y×q¶Ç¤Âd”ƘMÍ 4kørÖµÞ4T%ÚÒúþ•IËæ:N<>í§%'# 3¬•Õ·¼§ìýe‡c<¸‘Å~¤c";Ç>Ñ1§†2F¿è/kxhWK5O=¿ã'ÔhVz-?¢2YéS÷×cÑÜ*+ Dy>³w¦Í_qeQ/TôkÅóO2:m¹žôT¹ž´}&=ɬ7U~Ø=ɬ ¶ä2zRªgÕQ²V¥7§®!3hʲ4…‡©ÕÒŸÂæÒ“ßèIýàuI›ÿ§R06Ÿ•¢¨5e §$ÅdkLfÃ/©åŸgâØéê{Òx»¢°×U­O^t±Êìuñ î¾ ·Ÿ|ªwqãp\¥ÓÆËÖ™­½w³‘§›(ÔRÕ Içb÷Xz´Ü%jõ‡j]½Öíêfï 6óh­ºfï Œ¯—…Ñ‘bu—+li&å–eçÍ5v+{Ðöô î£·»Ý3µ±&<þ£ö)=Б…t„C¦'à 8•q÷_•Ü¡øl´ä´†ÐêKjöR³™N{5 ®{‡9‰YWçÌ:©Ó™uïˆÚ2±Ž[ñæ­,Y9ÇÃ]v07‘s Ó7òeK˜í‚¹rÐÈi˜}¶1Àôöh™4ë}‡tÍn¹hûȶ<ßc[xÑ+.{¶óá×û³b »úÈÉLQ¬ð¢ ›Ð’9|s“1IɶХ˜ŤìßL¬žÍ¼ê£V]®Ÿ—ä:`G?…©ºä ,!·8¿ë2—½À«L9»¼³’vÃÃV“"’ojÕV¾6OÈæA;â#Z1zj$'x[¡Õ!Þvf;AâŽIýÈ~Ôâh¬°’rKJ-åžm ÈK¶Ê%éV[RŸpÖ@8jáèO¶pòú)y=ÍŒS\òlŸäùþYNçö^6X¦7Kn›)(ù7RI¯Jâ)¬Ê`¶#:΂Œè3KŒ7,ûkІõFÃH[”Ëf»•fç2›Ç±èæµÍ5ežæz¦ØPž·îüIKNjqt£&¥5|.:ÀùË;_} )М{}g’ï´µ‘u¢¹¨õ'“)zhiLÙ¸=öH›\Üҵ؂ðdèD㉃«:)m“Û|~Ñ0´â׺¶Å¥1÷´Ri¶ùrÚ·Œo;Åi®ñiÌögŸßºsËlç§ùˆK“œ{¸²‡E°çîX¶=q‚ Bn MØNÔ³‚øÏ!RéˆÈšècÔó퓨o7&êãc“¨ïñïÑÄŸŽ#ÛŽlÔÏÝaÙ®5ôÐÛý~ÙÃÈ£C×Úƒ?Ñ|ÐÇéĉ}gwèOFÑáÄ9ñ_L<ØŒ[Ñ`;\‹EƒëV$ò¥ Ÿp4ŒÜ8rN ÝY„ÏsF#Ç›’?X—#ŒD‘g}y~\D„ªàø ~ÌÕ8Âê3Š’ƒQàO'}' ¦#„\'9ï…D ¡…˜û( Ìqƒ¢p‚~¬þÝh:Ô‰¼wÌ éðÑ•½]½J¦†®³æÑ“3ËpDÞbÃÁM¼"F&Ù¹c ú òˇM‘ÜŒJBeÖÀlåÛ{4C)»Õ FEÝzhŒJ#õÒ<Ø™% yÇn„lásR%WT‡(?”ÞäÜ;}4Øñ‡Åg'F4&é‹9Q/õË4Ñ:¯7ñ K„ƒIÏjO…^“½ä¸¶Žac]'røK”â0òÕŒž)%ÇÝ /<_¯0¦-W¢²ðYë÷·›×üøº–ïU„îж¸â¿ïÔ¿/(>N’U¶^Å’!F|ç`]º\åØŸØÜF̾Ý˪5skK|e G=E}h¨¡É)ÖH*sëZñèÄE´Èw™>”5)¹Üòަ֑c.]dS½V)‹˜Ô|ÁªµÕ| eæ®Xܳ`l‹^š½’_yU²¬ø¦É¦WæaAé1•ï–åzåÿ>Çze²g¢Q^Ï_üb„Ú-H6‘;1/¶“.pó4ÛÙ ·² Ù:Ñ¥Ò;ØÄÝø¿¢]l°W –&ai–&Þ«6ß>µåíQƒýi€x€x€xwÚb{Óß—¦Þ“†o5¥œH`Úäµ#´îâr]yœV¿ï#ç(1Í û-îòÒü­uŸ©jÀ-…¨“ß&¡ÍHä³XÚˆKö WÊAÍsHbªaL?¶N°{Œ |ò$Ð’YXžÕZ«ßŒ_ïxôÊOõjõª4‡Fü[þrÉ‚…á8Íìdæj†›÷ËŒg_TÊÎm4WgÇŠÑÏ\ò5³¦É«;És:&-V»–5ÍÛ ¼¸¹§‹éî …£DUŠïfÍ*ËÙrpÁ¹_èf±ÕØ«™,ÄJõ•ö¹£Õ&f/ø÷¿ÿ—$ A­¶¦·÷צ­q‰°D<Íö§8<Y™’l $(ÉÆLÜCXÜ·T ƒ*³„&7’zUuE} óI%ÑÄkNd ‰£ª¯”Vó•—>9M”×D¸ ª¹‘‚Z˜ÛÂQe„Þ#OÓο¬-ï"bI ű8hÚ§¤´ó.n?-¥_$\Ü3Š<òc‰2¸0Ÿ3âÊ=»„šT—P“çN]“ç—P“–P“O]“—æã‚õ°¬mKBF—•Á‹$k²¿dÎò®^fÀUÄaÎ?Ÿ}^?Ÿ „‰@p‹Á-·&a"&Ÿø‰ÀSM–˜L jçÔæ‘¿£¸†7‡‰÷w‹NÉÊtªB>åäà{³¾J3õ æñìËÒ󃯥[CÐdX[¯ÅDSpéÐR5R0(˜Ïa»6òwÌ\ÎÞ1“ò‘{Ø Y’‡BWÏÅ’ÞRb?+¿—î‰b­µf7?¿-Î’‘=ºd_añV¸çbù\ñ|Kñ|GñÜR<ÿ…âùïϯ+ž¤xþ+Åó?)žÿ>§¯ªŽÙ~­x>ïñÛ<õüFñüç%ø%/:s%œ­ÐKöIåñ‚̽p¯W2 îqÇ Î¦à7„‚é/»¢œ :O}”w/Ç]š3yµD–ìTÎ#Æå9—ÌÎ{$Êʬ\»’%\>Ý›E†EçŠTg„扱 :ëÔV¶¸Ü÷ MΛÖn}lÑI½Ù¾_ÉÔ`š-hðbü@ñ,ƒ¤†ÕR™^ËDy)q¦Å£ËŸœ&¯ÓlïéûU²}J¥HÄWÓ•%Š|›~¹Þ¹¿Ù¼þá{˜Ì‚$¹æÙÝ='kz—.Ѽ{\Ä’ßöb„—Ðê‘°.q¡³\#Ûšj éݲÖ"qH 1 ¯Ë”Z›éÖ#ayÿ?ï M“›l®ÎÄ“;èùh<°7€u˜Å„YL˜Å\ºÍük7Ë]¿Ñ` ÐÐÐá,¾ŽsºµœüõÑ 3ëÄ&»ÏÖ¤•,Z0hÒÒÒÁ ƒÐÐÐ ÚÅ ÚFjÃ’f3ëf]À90iÔÔÔÔÁ¤ôôô“ö±7iÍ:i°.Á¶‹]ŒY€s€s€s€s0fýýýýžc–Ù°±EÛ•`,ZÀtÀtÀtÀt°hýýýÀ¢}Ü-Ú.ÙG{š<öÌHGŠœM»…EiĦ­ÝÄÎdQÉ)µ(6«Í ²‚ói0¼Àðà /`\úúúúÁù4˜-HHHƒ Z@?@?@?0hþl1œO“@@@LZ@?@?@?@?8ŸÆ,À9À9À9³`Ìúúú1 çÓÀ¢LLL‹,Z@?@?@?°h°hO>ÍŒâ³eœMø#'X›“XõÒ¶’âʱSk¢@‹2±<[“­8\âº@ñ ŽI#Wêµ8Ø' k™§U±¦ÑqäÄé8Žú:õâ°rÎlÄiú~9?Yo::iøX=?.NÝE†¿½$TþŒÊ›v£f¶t¹úçÕ/£ÊÊÏDÏJ$U].xi¢ø0[T¨þ7jµ=wgpÐlŸíD=+ˆÿú^õ†~ÿ.wÔóí“Íb5úއXˆúþÿMüé8²íÈvBË‘íZCÿ½MÐïw‘=Œì0:t¡8øÃÍ}œNœèÐ÷qv‡þdNÐ⿘x° ¶¢Áv4¸ >Š×£cÙäJ1@?áh¹qª¡s„ Âhè¢ïn4²\/9Þ”üÁ6úZ‘g}y~\D„ª€ún\…¸GãhŒ´eNŸüøÓI߉‚é™'Qh!%ŒB"ÐŽBÌ}Ðæ,tCüíý #=šœ6ƒdâ6º²·«/:®*¤ú?ꛞƒ êjþKÄVù¡bpDãg­ÕØC–²ywt!ÍïœCd“!§…è2hYQÆ7³0X­vÙ×û»†^ÛÕÅÄw? «q篙·zv)J­ËD“§c)~}(õf‰yÿè{:ˆ3˜4³RG3'˜ lrxs1½&Àq˜ã`î\ßòã0ïß«8Ý¡mqÅß©_P|œ$«ìÌ’wÿ’ÿâ'9í°Â?øÇÑL;@¸v˜Í†Ùl˜Í†ÙlXËôôôôƒëp`s@:@:@:´`ÐúúúA ×á€I    &-˜´€~€~€~`Ò.fÒÂu8çççç`ÌúúúúÁu8`Ѧ¦¦ƒE -   X´Â¢…píp> †^`xãŒk@?@?@?0®á|´ééé`ЂA èèè-œO“@@@LZ@?@?@?@?8ŸÆ,À9À9À9³`Ìúúú1 çÓÀ¢LLL‹,Z@?@?@?°h±h€áÚ‹£¿é•²QÞþu•FÃLƒ¼áp{4ÚžBV='( m±¿^ø¥šUÔç@¦rŸyz¹û¾ÜgŸ^nåËýšƒÿâ œûöºnæ7ÿú³JNïþg•œÞþ›þÞAÉ&h“jÑ6¿uc©®oó*›KýöÓJMuû£¯yŒzå•ÿõw¾à1îÚÞÿüÏüCo&/Õ↢›d¿«Ûx*úûG/EÑ:MÊ—zз•;þ÷~ÔÚQ]¡Ò±õ6iÛ*á?ã`(¾|Ta_(©âǹï_èŽ uQÐ$ñã‹¡î§×ýñQÅýàó¿ÿÉÑP]vÄŸ:øgÓo®•íÛA• A6½ëÏŽî;lêÇAû.ŸêÿçGU8*Ž×ôm]øÒñôÒqÒmúºyùˆ’üÅÍ¥‘\'¸äÑT›¿|zåë&iƒ¾n}ñuÔ ÇÅñü©ì_MŽyúŸ»ùã:¼í{ÜŸ¿¹ª¾tYÇyšÏ¯ÿÂÑ :*ÞÿúÄ“‡¦©ÛþqrÙ'-zÑÿâÓ‹µ/=½xÖÍzÑ#_>úÜ£â}]a}ù8HÚºk‚húˆ¯Ýâ¾0¯ó*­ÛÃaðòóÝLJ3Tyðû¦›ïÕàäÍêÎÇݾë“rºûîQ3º{h·Éã4ï{ÐTïWªâÞ8èƒÇAt1ä]¾ì™¯çÜÝÔÒ_þÛÒ$‰ým÷ŽæÐ©Û’.Ϧ*žæ7%—QR<.òjãoüÆÑNܘæ·{éãu\ ›ây½ò|ƒ1Í« ŠòyŠÜ?jªg݇ ´ùÃj›Lcu4ÝN>ã2á2±9õЃ£‰ýÔ[Lˆi™}õ9ï®®ö‹:Ë#ç7(ê‰;³ ÖþžoÍS÷$U‚Ù Ö0«Û¼_Ï“çoަà‰ä%IÞ 3àÛÏ7ìþ¦­£¤ëóï;ÏWÿ+g;G9¦éß=Z+N<  šfñÚï=ßØÆŠ€IÁ™‹e5(r°ËoÿþÑLyêSš6‰óˆãóø^{>ÒY%C‹qŽŽÄJ9ÍÒܼ`ß\7Ó0{ýùfEÝôy™_|ð¿>â@NÜÚ¦þ†7žïÓÚ:ºk]ûÃ皤;AqÃØzóùÈe×€êMÿ­ç#—`äú¼[.€o?ß*Ôí˰.0ÉJù{ßy>bgëÞc0ÅUN%:è›=ߺÍÛ~@sµ Æs¿÷wÿøù¦Ñ.Ø&E2Ѻwoft·A›a‘\cdþÖA¿Y(“2LÚ© ÿƒ~SPÕ`.XÛ¼Ú¢ºÓBøžƒ~T |Žÿõ¡ƒ~çåYÐé=ïÝ~¸=øÀA¿áèšD L´°Ûèõýðè9¶]ó¿þÛ£jômPuM=s9øÇǰ `6Öꑃ~¿5T7n[>vÐo[|Wøßâàýþ8è8Ha}ÑOüƒã¢GñSÿÎÁ˜·¹< ‹:Úœ¡/"¤°œÙhyaq›¿õ Y~qÞ}õΗÏy—ðõò»_º{^½>ÝõâÑ[_<¢8 ‡à ™r'`´zùJY^ZÞ9íL’>8óÌ*ûÒ²²>qþóÄeºDÓa~*ö§þÉËïÿìâþGËw.øƒÿ½x¼Ô_Ûe÷.–ü̵ÿåó?ä…—žV©ãü?záæתâIÃyx¾ûÚyøâàáfG€Ê%íY=ôÍПyZã«÷™ë_÷³–¾§öÍ¢Çoê—Ï|‡'w^Ó0EÝ Þ¹;}égNŒTÏ(º-ð™'Wgó”\ÓÅ~³Îå ßŸUhãf8~éÓF¥œ³0Éòj1Rnúø_{á?búg|Ý#yãGñ‰lÆÓãáçŸf<¼tÓ4™j<}ËMdãyZçÎéÖÉ«ÿŸçîÓ(éÑY±Ó¤4*0 A‚Ÿ›”Þñ9{:-ç‡)ÓçÉáØ=9sã`ÄþåÔ6kÃ;¯—S÷ûÓD¾ûú3çðŸÝ0õ½'fîݧQ^A –CV%'æñ_(±™¿-‰ï]{·¿ïO–=²h¸ë}òÙûd_î>9¿’aͽöF¾ ŒÙøDÏ»$~4„úü¤߬µoŒúª÷ê Tq‘¼Y— ^€y5þ8ÁLïV)®nßt÷=sœÄ¯Íü¥ÿç§gëͽÿ¹Sß6ÝQŸÏ«*¾6 Š.ñQÉÝ™^øáç%Ìg^Â|½áŽhõ?í^þ/–½Œ}È£½‘çDþÝù_=‘ÿµù_?‘ïDþÙ‰üoœÈåDþêDþýù§Æí«'ò¿y"ÿ['òÿæDþ·OäçDþwOäïDþk'ò¿"ÿ'ò_?‘ÿ¯Oä¿q"ÿ‡'òß<‘ÿÖ‰ü·Oä¿s"ÿG'ò|"ßËÜo¢q¿wâžNäÿá‰ü?:‘ÿÏOät"ÿß.òùϯ¸¶@šäúøžß?ñ¬Sßö“ù?=‘ÿðDþûËÆôýó3þ÷´]û¼{¡ö*¯\ö³ö]ËuåÍo:H=—°ã$kt­ž0Ý+û=m{°óñɘW)·È#TíãûÁûcÒt#ø;–yíg¿xíçÇ{ m ˜o¸?Äv¨O>e{üý-Äѧà¥çn€Y‡›·OϹQ»å·½üòuîÑmÏ&EÓ™©xn÷¿7Sè儨 N7œb³þèø;%Sz:ø™›ªÃ7²ê/>…„üɉüqKRô‡·$¿JÒõoN<ë¶$íY$êKß;‘ÿÉóΔpš)¢¤&’ •Èõ×—Á¥@^‡I•õkf’‚’Ôø?MG*¢™-ˆÂ’jê4ù¯DÂuPñÿâa7m)1ÒeÁÏ„õuT…Ñ\æö(N¹Áˆ*luYéZáÚ¶Q¤@ðCS\6AގѤΣ¡D¢¹ãD7ÇI±âÅÞ Ä½{ÂÒ¶.o“"“xŒs´Wšöü[ñRñÒ­sËÚf‹åÀjÌ@-!-ËË„(­Éìñ]~¥tOÒ6 ©ë:fšªvH“c&­ð@q‰!ddø±O;euAÚ“"Ú×Ì9ËôòÇ0Iktöõ¬ƒŒ~—$•rð–6ˆ)‹óƒÄ}dΆÈÕ¹š"ŸÚ"¿hG©2Á0+“8'ÀÐ*‹8ßâ#-rƲu©6)ë->ˆëˆnn¸î¨™ºëÐõÈÞWѺ­+¶ìüûhÝÞw‹Îì;vÄ™}lßq‰D¹Ž#„‡‹1ÿ§GÙÛßnÈÿÃéÏ̳8Ž!Ë_¦+E‡C^Äqu ÍäâpŒâ1Z'Ñ¿ B½8FE„?”À5oÂ:hQ¨¬ŒJ %Xç4óÝûä.¯b|7RоaðEcrj£\¹…,£o‹1í©€5gvˆ›0}Ë!g -m öC'$ij À“pÈp-kÌùÕˆAPðQüC-Çéû€üF˜,‹‘ÞÉ%.¬[ÐC ÑiC•wëÑŒw1Ó*µf\ª„YÒts\'E£‹¿8Z`\טë#&•¯Gô¢5DÐé&cQ׎¢­Gh#Ôu)Y²mË ?«„4¨·k‹OÃ/œŸÛDÍ[a• ñÌLW…ÙqˆÇÝçA¡ÊO—ÞAÉ sAM,°l¸Á¾[£›6IùjBÐ)hÙ: ÐõFÂ.Ø:Á:«ÙÅ£ú¯M¢=ºp Ä#$Áë‚¡èU¶äSÛR >Äk^Mô­3©͘kt–U¼Qý?` Mãt¨ò˃kô ð=(+>^ƒ¢ïHPvIˆiôºtU²ã¤ÃÐ@] I»o“l¤Å l½1Ç;d ¿àåtwOMMw2àvSó ¿9OÍë^жÁ~ " S^b]×¼öº(ƒó7šÃK¬+2rŒ Dû] åTÇPä%Ö`tYéëºà u Ñ`I±v0wð‰ƒ÷€} K^E‚¨Ieº ÷Â1,0bdt—`¬ÇpÛ¼ñŠ D@$agÉËž”4B¯¯ A!]³&éQJWm Ž!ÉñK²³f\ør¡Á2ú’·‘-jXBØÌ¥HQP É%)y¬K’g;ÞR=²ŠbBxé\Ç:.,Ù3…ŽˆÚÊ0ö†:C}~Ä´ˆ »¡‰*À)€‰“Õ^ùý²øõàs “Š…mƒbT«Åy×è‚i8Æ¥¾"Æ»YcüŽ ÆO l°µ)ÿ"]rÌ ÂK^•K”ص)ø”ˆ¤%¥.÷ÇdŸ€30QÙ Ä ‡™•âEq^ ­À€_@Äò £µi›\h)ÛC·^%m=f–wŒ×,ÀjaWö£´w††ÌÊ–ü’êšµPDbNȃ Cánë JVLôMR€£S°”† ¿íGÐzßÔdˆŒ…É‹a¤‰5Èr¼ê†Ð1â´Æ¾Ü÷ðÂ!+8H¾I8)´/þô¾œý„5oÜ€»‹¨‹¸ ôyƒR[ú_uuªIDMTÔÿî¿¢kÃ늗’W¤#Ã\tU]U RÀ°r øŸ‡¯Á'µfÛc–›¦!ûf»Lð×›±ŠU¦Bgvc•\öM½[Uu…¤b!kž.œÙ4_Å~¬ìNÆêŠ#–¿û÷|37ЬØÕ%zBÂW¿É«ÚæBm³Àh@]¡æ²§Ö¯Dô{«Ù pqÅ+¦ÚÐÑ‚†?V,PŸ&ZçXÉbh·yåtb—t£ï˜†Ý…IUá;û¤fERCd¯KŒõƒï"Lsû‘S…PO4XŽj¸¦Q^K>vÔÌoº|¼(Ûñ‚ÿsç‚÷^´œxÓE눕¨/…®ÛßÕ’ óRéªYdƒKÏ?pÝ¢]ÜþéÂCØˆÏ 8(¸ö⮤!ׂQ°†P„0Áº²#ñP-|'Zà;¯à:ð‰XÝǶKWQ—ŽÖ¶\J´’h!]åü'ë8rUÑ¢¢5E[¤Në4.äƒF ZT."lÁê OÀHZÙ]CJÇ¢$<]ÃU$ß:ÄìÌ4º) ÕB*!Y2l°Õ¼ Kzªu«_5„+UymJ‘<“~àÞ—\1(¦"ñ#R-¦1iVK-–} 2š÷WܱD4-Hiò …7Yð‚õF t‡¢9T;ìt°©bq+"µ¨&[…Ôj—’ˆjÔl\lþâˆëXœ0¼çñ™ÅÖ³Z|@…U=×GDeC Å:—x”×Îòl¡r‰ìäŒñ˜*vÿšF$;ï",P@×M ò:‚ºÄ•Œ6LeÓï ¹¥ö[£µJ‚Õζ€y—æI ‚HˆuÀ²¢uûZvKDj•”ˆ¥#¹Î¸֦츼{lYKמÀ0Yµ_îtØHÏ+ƒˆWYß ÑÖ6ï(–Á±ÍY¢Ÿ +4L‘]à¾8×Î@7ïH¯Ô œ/ f#Ró|»ÇŒ²„ ±5‚XݼÏM51 ",0c]k¡/hi Ï}ùjönİÂ3cDÆS6ГäöV+>Øm~ÐpOþ!M|> ŠAb£Ð·96Õ"ˆâ~IhV†9‚Jo:íQ{îG,Ÿ1w¡R¼ˆG"›5ó"~;$Kƒ$‘„'´`9"û¼Ñ^L/ä¥"‹ÈÁKÌV,,Á$Rz½%kØhW™ˆJq9&uƒ7KÚ–ã_/ÓzÃK¤+*ý%VÐT?häš„LßH‰óŠH¦ ›:SÎÆ¸ÐÎÜ®¯bãÑi¨UýwAä46Hmëam Ä›#íý°ƒÔðí<ÜæØñsñ‡x,¹4«¥Ú±*Á*h³hm„N(֮ʭªÛ6r튱"i wk’Ã$í+ØmiÛ’øcÈŠb¬Jx×ù–à,ªHÁ1o0™Ñ`‘D(-©”œP¼ª™ÔPÐÔ>¼°”üHån¨ü±Aå÷Ø<´\ç4í´(õíV/ÄÂt\ý€àUh5bœè„6M±cõÝÕí‚&Ü÷‰îÇA§%ïjíªêNé0Ä¨ÚØBê„ýlƒ'¾ƒ!áÛp¼í0ôð·\žª‹89m~ø½Yîå-o'¾ ž·»/œÐxüúÁ[ÿx~Él ½Ø×,ÿOÙ >«Ç÷}z;蛾ä7¾ä‹7}Éè°‰–„Ài’ž» Ÿ¾þù}Mi5 zåù q^s»ˆA#"MO¤R½`Ðp†ížÇ`›‹´Ÿ·¹~ÁÂ`]¯(JÃÖ;ijîjc{  ÚS¢nkÝÖ2âàBqQzh?€Ú½iRC2oT*¹+tí$|s‹7Qlé6&Ÿ§ÖØýNAxòN•!bO¤ÄkL™poi“ö®F4Òh„¨›Ñ¾Ñ®TŸï¾#ª+l2^Ö6àèMDôT"vÃÚµÈÚµ ¤gyiùyIÉ•±AÖ¹k, «r]¦t¯ UDûRX€\/OVè•‘rTPâW”ò³< ¸Ÿäí>eOV3´F¿%—ë°db{]€1'—¯+¤=‰Ø. ÒuCú¯‡a£¶0s‰rû°¼×Ú e•´×ï‚­}; .UB£‘˜+›Wªínsßݳ¹oe7÷­ÄeÑÙ/@ô  û¥´ºŒlªtƒìÜ9 øt²óÿg¡€…,ø®71öß8‰w@kàª.™úÄýÿ©µ¿etR4Fþ ø­!õJ‰Uš0²JÓ.ŽcfËá^Îk¸ˆÛ뉑[dKM¿?´ÑlëFÔ)$ÐÜó \&Ä0#ƒ{¬ N¨Í åÒ}Ô>þ&XC—ô À“4ÔŽýÔ´cÑ ×s©Ë1Fš=øQBùhLJâA‘X4(R‡HÊPÃ::’ –›åTÌ-º•äˆ+ÃHÅ+gŽ€)<©^³ÛÉùÏ_1Tþ9ßZÏyölh=Ù„7ÑÓãœyß>·›dúÒ “ 7vW`Ä!@¢L¬D\d”cã-«]ÇúN´É/¡˜«Í‡2ø˜ÌèM6äVn |WcC:)óø,3„'ÜÑÁøl¦ ÓšéÖ þÃícÙeÐSi=N)I$cÂâBðf"ìÁí!mé+ŠÑ§í„hÖšýA7Kwü-û.Û, y8ô}]eí1EƒßTAK‘D 9ÍÀ"LÏrWZkôC{’ð–fèLGHÔß„:‚ã"– é¡x¡´([Ç0÷dSìBIXg-Gô4iöÈYä¦ Ç…IBªH´ïÂs°†pc„Æ{Ê`;}îóiƒí‡¿±aˆá¡2v¡²®»¢¿FªË¸n€%0ËL¡1¸ÄÀÁœ‡è_€¿ºPÇÖâ‚a¶y¶éA/c¬¤ðÚ2¸F@ª` !PèÂðù¹©²¨˜ ¨lzBÈ¥†üI`è|\!àÂõª†À-R­@ù¢C£"¥¼„&¼rPÏ©DbêT7BÍ9¾ûM&5d… êîíúÀtmÔŠArk €zh=|à‘È#©GºB«¨˜+Hm( åâí‹\òR7Í@Nü š TÈ©bMQM`ÛOȃ «Ü¢&Û šh@!” µ¨øŒÁ´znì(Úˆ½Ñ€ÁÊTm] Õ‰è Û(¹ò7aPÃ]Qã$AW¦rx@Xºµ³Â¶Cår·“a—ædèGrãSèò`ôËaJ= 6Ä ;ì€ø*í WTÕ‘C¸EaÊ 4p‘šTPâ&í"3¬-%I#•C ƸΌ 1Z²Î´iYgšéëLrH@ݦӂ´Ñ|-¥¯ën»j3(ÆÊ•½ˆÉ\éâÈ®Ø`Ï$+‹N*9ÝPQË’Õ•Ó³uÜš”èyIKë(h:AŽAaÔVAÿA”-*•™ôn£M%]Í&M¨„fT1¼‡‹F1Ýyiî‘ìk ——2Ø$øV}'*ik¦úØz˜×+Û®AܺSTu€õ=p{²¬€¤LFYœ»<ÓñP#©TºñÜÍl°C––SU•<õ09¼z#âêX"¥qDIA:a{é³Óf‰.ií±+ÍbÄÙéŽÅsÓrYòŸŒmHŠÅ™aG,Qbß`øzø’Rj<´eM*>ôë ‚PŸÕæxvEmS½Äbí^Î w#gåà,veŽ>¹ôȞ˔SAÌ¥ÁŠo$ð©c²t%Ô_ëÔ8EÛê&=HVJƒ¼¥ä0)uy0Ú°[9èÓ¦š*뚨aÓî›Üpµ· ï‡'ûr@×Z"¼¬¬)ýØ5ªÀk¡«4² pœDh\LO£àš§}ÞTCåöµN¦‚ÒÓ{GÈzOÈÄ|ðRö—£Õ#”` è­ëÜCìÎqÙ 8»56Úa6º÷^riܾ'~eø•p,6‹uùó§Öeï‹ñv ôÿ4o¹vmñÔä¦S}Ÿºd‡¿©Õ%~ˆmëô‹F‰`-È4ei±wÎJB,±ä¾>A#‰¹wé÷ëÉ܋צö¶wר"2m>%D’šK½µÝFe4¡3L *3"«8²;W6ñ$P©PwpȪ Cùd(r°¬¬ÔUksñd¦¢VI„u|³§ÁÝ¢°¤¡V[¢ï¦ïƒÀ‚Įŷ>õû]Ö}ûU¬Xù’¬üηˆÆ+\h÷ZG47:¡Ì¤ml% ×9 'e%x½´ùÌÊŒ:’gbÝV¨ä‹¯ãêçWé$R}Ñ*T¡bÀC|öJ¢=$Vl!!P'4ÿj &ŒÜšl•b6mév˜¶IVûÑ™Ä _‹ µÓÛÄ €(š )g³u¦D±.ײŠž|/uðD‘G "Ía@5yoXÕ%ä7É+¯¸4·cà ,w‰¡T° ‰êdBsŒt}´5‡¡?ó÷OˆÔ<¬©‰«¹e¢Á ¨fùÄ<Ÿ}dŽÏÞ˜zk¾UÅ”ék¹Ë·N‡<ãQÔnêiÓýw¯;µ¹Fœ‘ßÙärõväáü­‰<\¥ !ˆŸ@ÂU¿3â2JƒÀÄøF-ë¦6q9Ô6Ú\v[¢çB°rhÙ–’!äéž4\VU]cRSR•uIv<®‡˜ÉÚZÞ®wŽ”ÿG ¸ÔÊ^ØR•\ðùŠö‰ºM…so-  fÀfM.¼&јŒŠŸù„¤ §÷J.°PÖ‚dq2Ýaæ(ù(¤âº·… (µª€<<€ñ¨¿[¹‘O‰rÆN5D¯¾:BtáDÔœúA0bp·6ŒË+/‘¶2V+žÈ9GÕó”1ë.ì…eç‹t]Vs¡+»é|¸þf™°‡“rÚ­ê;ðZPowüažæ¨(;?ªËή²swÕ…bþÝ²Æ«ÔÆep© U€?‚*¤¶ç í›(p9ööÀ¿=˜ö yëJÐ &pïJÚ·§Ý.ƒ4¦Ø4Owl –å<±‰ÜpNs,?Ñ–_ê¤nª.6=€—êhUSkZšQJ,3Ç~UÉZ€Ý¦÷W6¤½rBK—*¹%ö ¿˜ûtƒ‹´5§¹‰¨Zj¢§JÐ@åÐÅëjN.[ß2\“Øþ¸ü`—Á/ :CïÄK”–À°_V„&¦fѨ›áZÂË¢¹la>’%/ŒCr`]¸ÏU»=ˆÌ€ÃoÀ¡m¬ªBµ":¯ H“YrÂI.H—[…´8á9ƒ2,㌯ä›íµ§¦RL»—Ï©Ã_îmŽîª¾L”(~/~ÅP8¬œe”‰_¾a,1ÀÌ'6%=%»â"†©¡0XWf¼ Þ;Ê ;~€.ŠzKþ‰m7˜w¾ Í5çbHã]Ž%™_“ǰÇRÁ5€è¤ézHS°FÛ§;÷ O˜Ÿ!Ç-Tl46qq©©¶k‘D‡Í¹XSVÝú9´§…ײ®ÈRÇ×ei?al9t5±³”'>²Ô,ᓆ+²TämˆÊ4vHœ:$²Ÿ ßçÊ«µr–²½.ýš—¢xµóËYqïØ Q{l\ǹã—=\Öã©ïé´´«K圬d”ý)fžjN¢ó³"n"Ò’)Á)”P¸h)’M5å=ìêM¶a·b¹Ñ²yt!·Ô J@õ%u^ÌÍQÒžŸéôå2SÆHË»9}”Ì‚ü,(Ò”“àøT˜_/<ƒ§¢zJpÇ8í)ÁÄÖnœFkǯJ0FA9"ÂaâzB’œ^çÀ¶î>mN«È‰q¦LêÚbk…¼¥IÎÏ-9åŽØ„ŽaGÓ ÙàÒBˆØIœörtÞ¾×i¹–§JLj’÷€ž¸ê õ™ªPÒ<=6Zûe(+ ÀÞU¹€‘*ÔIÂÔK6ºüÈóiþÿ±6™ûH`þƒo³Ʀ¹ÝZü¿ÏÜ«f#&p¼’êIgÄzÈS à}ª4ÿíÛ’ÑæYG‚MŸÌ3‡4ì:Ó’w´îº6eü_'¢d$Dm:¶&w"c íÙwª Kݘ m’Y…§0ƒZoñôŒ×ÐÙÒ.tqîÆÎçŒi›+2µèCÉs#Ùzp/ކ 6L«±»mªëXíBÄ6±wg³r{´W:|¬ǺPM6mìýǃޣ×G胡$2bn6-Oëx=}%°Ë9_AD Nd,. ²Á%æ¿`,@„6AQƺêx[ØH–g=bc  {íZ†ÛÆŽÓ‘SòÂiûÙpš‘û±<Ãí,KÊ\Û‰ÀÎ&j6wcvж✳+Õ¤T¾:¹0rSDc `4E ‰îÈ`C²PJiÎGŠí÷ǸRÊ»±ÓâÍr8Zâ©ý…ázÑJE½ç„«+¯3ŠU«;þ1^È®"zÊ(dH$´+]iHa=lä²®3ÌNÒ:>A;Ä1Â# <·Æ#Âv#eAšÇ½ÎsÄðÜÆÀü”7ôË­Dô*ÔŽ˜s ¢ñg ÙžÜs1©nG5~ãʼnjèð·ió4¹óXHâì…bÈT¦"¥H‹^G R­xÎ:#Kc|ŽF[Öš63ùêÐɨ if¬úqDn§:’Klô°ª£Áüðˆ|Ÿëx‰\ìÚãäN¤lí¥Wm\…[ÁÈŒˆ#0¡\ D©Œ>PEz@ÍUnÑè÷žÙè åuÏ…òº]“ÿos“Ë,ŽŒ‡¨Ì{…9´€,ÁVA#­\ÇÁ…3£€d2uZZó`2S"N¦GÓ*6‰„ÉDuÖ9uødUšqôpÉL_Joeú-ÓÄäÚŸK*–TZAó®5ãJ;Í•çµôåI´ŠVMÞ¤+sÒÜÙ›‹wc£ûùµëfÍÎr¬Qy½ÐV‘Õ"šÀëh7³›í⃠žâXïÜY¤ õ4 Ì'ãGóaÕfˆûÉ:3¯ÿ.a&l`*]ñ›ÒWº¬ÅˆyåY#†_yo¾ê–T³µžÑç{!¢¦¹š´°³ñà(μ3@Ì9-7:ïüÈEáL“µ‡¤\<6dŽ%Ð(¦ò°í°þè *-¢ÔŠ4P+zÛ>»WÊÙ•‘ )!_(4­ðOêfÔW[î7Éž&O‡ö£Ì+ÿDjÞ ;ïyP±×AÁ¢pEóîIJ:ÛÊÖ‚Ç!E»sÙ»èô›Î-$±Þê]ÉS˜#S®%L7T‚2÷³ßq÷šù¯^‰Å9àDvˆËxôa÷À‘ë)>=š‘•Ï–(lr"r›#˜\nÔN]iŽÄ‘YñVgÞî„SGß<<œSéÙ/&Þyž˺Þn þϳYú>X×µ‡ŽºÕцe$w jnÓ¸ MèÒF#A/:@oî].Oô#»0Žèƒ?5°kÊÉEæ…Y'rÕõÝi¬ZwÙV;‘‘M‘`Må~vÛöá«o×>ÿËï,Øt™'—.ÉA4aD¸vBl¬hV—•G"‡”áŒ9¤ð¥×áöÉci¦,•JÍÚŒ(~²Ÿ !8HÏ!­¦ÎÐ îÓUTèh³p%Û,H4iéjæ‘n‹Gs97&ï2†N8¯ô~E»JJžä‡8¡vþ¬bº^0žtbùí9•,ó¹ çíœSÞXç -VÌ'LƒÖõÒ'u Ys€F?«v~fŽc§]d.;]ºžGG$å"ëZ™ƒ´ï;,©cP:Ωkå!u‰nÌ<~Îa:í¯?,hIôç×EùÑ“‘qð”ˆn#(-7_&lO vÒ®² ¸Ë|ÜïS»° Ðð-;ñ0¶ÄI<ÂÝÍ»)R·óØø¥G‹97Õ‰wô¿ldóʈC-ìf—Lj¸Ù¬©w’Õ¥©> ”U @hùˆkÃÑͨaœ”q¿iRzÌ!EãµG8)=æ‘fʲRÓ§åPu46ÂûÉ uÖ+ü¤ÍS“úQAçnÐ^‡ãþÊüÆpÃãw_ò>Aí+‡™±ãPü¬¢uJ·]­ß:!U»¤Sc¤þ;Sÿ@ L¹ÿ!žÑ·¥q„᥹ E®¸ÍV&'{óŒÃ,‰s;Ô¼B&Æa9¥ÔwsJ‘/.æ ˆ½É'Oééæ õù”„NciÊ ‡ƒˆ9eh@ÿ%Ï>>—òW.P‹Œl}ø¤¹i|ŽMMÉ}ÖrÓ³|¾æÚaVä”MS®Õö ç°AbŸê{ô0×§Gʈ¸ ¦Qê•…$c2DXÌ›Q7Êç@N)¢sûshÆÐUô³Óå8g .5Qo—F«‚KÀVš>¯å—GyÕžÇYLJïS(£8g¦4gÀAjNÇeW= Ô"¹À™Ñû‡÷Ü_Üsÿð:Zz½ñÜ7çÎI÷å”BeùŒƒ'ŒÖí" †z·n<Äɼ€Ò—)˜“/Ù a†ºã˵i6Ý” zŠÁ¢îWîcóÍ<=ÁìV\FˆEúÚxW-G·—)ŸpôÛ¥Œ/Ñ"A¢¼L-Åò ëe‚Dz™Z&šƒŸ¦»<%â é­yÌ t™mFó+޲¢ƒ¬nG {µù ãðçä /SGO‚|ñzNÑËœ&¼Vï&<Α¢v‘>zÆÑ¯ëkŸ´>JgÁÁýGßËëåÑ3ký"¶ux\„'ŽædдÃaú ?9¸}±UøÊ3· š@Ÿú˜´ÝG›a’®šFÕøð½Ÿt O/¾eþ-ãMPc;Ûøð½G”*½ Û®‡ºõm¸éõáÀ㣆¸ßû€gÔ¾÷0W@c‚|££Ç³‡ïÙiSC¦âkBר„¤1®|ó¢†ó¬÷rϺÿpO‘éoWÝÿja{‹­ÙªÙ¦ÐY¥;‡`­Å¾-ì÷²}¢ôˆ‚}ÈcN{Zô÷*Ip2BbˆÈ…Œ—à‹ÇËU)IÒ®ÝÄ{°!tœU4ˆ ¡+³ù]ÙV†É‰Ší¥±‡„gò»}1uÀBNO‡‘çöÊ0í° -ŠÔaôÛbŸÒC0½ ¶™× ŠxR£]…5ŽúšÕ€LHJ.óìî¬i2`1§„`Ü%­ —ž¯…kUÈ?ƒÒA®|úèAËlìy]©}(ÅXá=c¿&ëÜïj‰™ŠwI\%ª ¤ —IÜR*×Êμ/ݘÈGÖXÍ¡3Z}Ëû[ʳ$óDL$´M²ðæcæ‰î¹‰9´sþt&w@Øë4Ÿ7ü¤i¯³nà ZIKØlååvk¿›-ÝT6­£FöOM«QÔ´;ºiýÝ(WHMÝaP¤Ì)±món#ÌõÂòRP^çˆèà £…Ø¡PÃèïN¶ñ:ò˱d:?úŠóȾX®9:šÈFYA xã& ,ì¡À! â  Ži/³çÑüº‘éw?Ö5’BÙÈîyeªê²¥ç¯Ì}^¹­Zv!Ï –ª¦tÛ[Ú™œ|»¬×€±•, SmŠÈK¸ŒEK `9‚͉xpÉC”rç,ÏâØ3ŒåêRõ+¦šM99º4Ï—4@ÙM^2Á–¡Špè¬xñ|àì2Í{‚ónã¢9ReÞé.ìDÛVl¹ã×<©9ùeÛ xê°òGÜ!ÆlÍÚ¬‰ÈÖÛ46æìŸ+©Ë•”í#¨›ÈT#2ÕHL·{˜ô·Fh[FïxR@‡¯ˆÈÐ<ú¤-=ŽsKI$ªm‹,¿a€ôáAʸ‚|vLmR¬Ó-ÛJÍnÇL¾è[’Kû¹ƒÝÙ°÷nÍj£­œXɲCvxe4l•:¢BÈaEÈaE¨uŸˆœ±Ñ@â£CÝ~H:Ô.:_Xi[µHº:"Öæòe[ו`½ [9±hx4”ç¶üRH´šè ­=;®„4ËÔáâ}÷à[ßt𕦠N ¦½‘ÈÓÈ‘ÈSNK£bÄDÅ8‚ÜÓ Å‚'†G8„ÏØøaÚlðnô­¡_câ~*Û 'œJÇ6Ã]yÄÖ2S‚ 3%Ø.ßVÈ¡,âPX¬ß|îõãžú×NÝn-ùÒKâ'"HÛãt0±A¸§šUiý²Hç<çðpoO0Ü=ƒ ³²¼ÏiC±%{御öb‹[5œ­<Õ„àVÒ%föü£_ÛD˜R.ÊX†UÉNhOÉ:覑m8CãQæ²–teÝ6ŒΡ¢\·õ€Ý ’øy5=‡‰© ¤èô4³'.¾É`Ch|“C,gú¦"k7…Šœ¬Œ(+#Ì ª’·¸ ŽÏ1p‘ãÚ"1Æ(tÃwC“¦p#ÂVÐßø†.R,[_ö¸Dîå<©uKûÿö×çáhî.p‘ã Ôv+Öì!crš1yјäJ`Ðm“w$b¢ûÂ…‡Âûß2?ñ“çŽÙ“‡÷ìQ,]Ìûi™ svLo" :™¼‡ÌÎD"ïv¤¼A®Ñ-ŸÖP¿!Ÿ* ÷%×¼šLîNÌYŠü¦˜ïz_Þøé–ßî2óksÔ¨CöSX™TO>]¼— ªfç/ÞLÀˆG²‚uÑ äBƹ“ñÞeæÐ<ŠMæÞ˜ÃH°@zËÀz£iû)ôÑ9¨ÉÎäG‡£˜‹aþv¼à‡x½ó<˜B‹ÂyüÑ)} ÐüŽSp.íd©J×òRv›G:Mì¾~´³Ø / <SÑiœ»_~ˆ狸“+x³wâtË$ÉÑ¡e täÌhrlD Žh¾¤où¢ Í‘¸gwÚÙ»àÔ&e’ßÌ~és3G÷Þõ=Õ³“Ý„ìÃgò£¿üþ¥£}s¼onýç0T6¯…,C 8ssoxç›ÞÅZœ#/~{ö+j>Fñ‰:ãy ÁpÎÌÜKÌÇ•$EΫœºZš¬÷Ák’¾ìtn¸0À0 ܤ±G\C9§]>žÎ]GÁvl”»KóÉO˜÷6¹ó^Å&/cæt̹"[8'›<–]2¶†µÃ„£1<îjç“:Óºˆ 4¹@»ðngmºdˆÎJ–±Œœ2VrS3žD½»7‰²¤ê¯9ˆ‹®9‘›Â6y_s>“wBç}ÒÑA¹(‚Î0MZ¹Â\Wù0ìç¶0–"ñÊŽâ^¸8­ÝG—Š ‘1?Ñ~p·¡ŠQÐ/Bkèl±/jQ7*#Îb/9p«½…è(dÙ{duÿµç[%™¾Ýx5›_•P¯Pcɜ֣TáKs^¥$X9tæâÿTÇhÌJ;fÎ;¡æÌ;S`“_t'¹"kå&¿-KE:Y¨±'Ѭ¿6¿gLèGÖƒ‡Æõ’*Ñ;ÊTÏ*Ó~,ƒ2«Ì¤¶Ò˜i¾dôËÙ=ppåàý1Ã)p›¡yÈç¤ÃÕÕžW3â$¿ØzziTêŠë4¥yV{0z¸ß ÑøCÀ÷©žÂØ­üt} ­¹Ó[õ1ëwOtøv}üÛsSébü—±”T5ÍÇ>¦ÕUÓ¼ñÑ„¼eô^Z`ä£/ ™[÷Ö?é•h†NÊ4ÃD0‰É3 B_šùòT{}fÒK¡²¥q5ŽSWc"Vc/«Î´à0w©ÊA…y´hó/?«ÍõÆÛµö3ësÁœ“CnÐD"•º4Õ %ƒ)ô•CÙnû\‡Z®<»™Ç±H> [ffQÙü°l~š4 %ÍÍ–N{WÏüpsq/(²š³à¶'y+ázQÛ1wÂD‡ëÄLvpöÄ{Ð]žC™˜L§H\¡N“èàÈ|bä†s"epá¼ùû³Ĩ s~+uˆƒÐâJ£F"HñI4 }âL"–ÄfºÿÔ£%&±’ŽÚ„,å}tÿY}$7/ŸþÇýÛ3é§ëØ}F­ž{)2†m¼‚f&±=~Jé-0ÚiiŽ«‰ù¨%}(¸úº ³&ó`²°Î}®œ¼qÊ-±É ²¥"ÄÚ¡–¼ ëÞÆ–EÖz}g@Ë•KóAfg°…ú4VÄ."üfls¤ÛÏKGQ :¸z“"9‡Ò«xáZz5òD§„:›ïZ‘ª¤i_éŠí>ÈlÈÃUy1Enº@—Jwƒ„ªQ¤5Ýû³^S®jžè„²-*¡vÅëØ¹Ã44^O¨ÉÁˆEµ-!†{ïatdâ¹H1tÈNfXvBÕÖ™¶6?”òKfNÀªu];Ÿdy¶·/õqF¥æÔà>%—dæ+%%y]¸?ÚÑ $uTŠë¸¬ì|ÆjØÃÊV ¶s!ltÅc¶SVk«±}[ÒÅI0.|…y|¤Ê ¤™"Ž˜ÁK¼LARÄÜ4¡h‡;YKÌù°nÇk‰ÉûŒ0„Íu™k§c"F󨲫Z‡Ñ¯aÅíæzÖ|pÔD‹¥ÓHô‰¤)?£Æ¬)𕵒-Ó|Få]XR×jòµï¼ï«YéÉ=*]ÌÆ¨ô",­4”Ã1òq¸*E{Âöסþ¼›ª_èd3ܹz…;𤕄v‹\éj¯<f®„ÈX2wò7îÜCé#ÜQF!:ièÞ@&u¤ƒdè]}¢KoÅžk™ã,ä)ë*ù‹³5¥,4-™m^Ýæ³ñÀ:Å+ÓàÛ±ÀÙ¬ÚÒë®?·7Ó^¤·•³š¼YDN<«ð®Fœ§)¼Š¸R¤ÚuÒÙ|´´‚H0.ôš'Œ¯™c¸ø .:«Û,…ü™Gÿ…ç.|ß- ×vé0¨ÏA¬Ÿe Ñç >ÅÊš\âT "§=”;÷㢽™[AÎÂÃq—åNÎ 7ÎÅž³8t¶–1¾'»™ÐúÖ‡c÷>6¬î¿Û®Mî7ì(tѺºNgø%:²jú”õ8¾Íî[M3pñ½÷©‚šý÷¿{ e-Í.ór¼â´¼7xld8™ës‡ÐÒͰՔwÿÛ¯PF«íÆŽFãÍ'-°P¦ã_Á+1ð‹¡¦ðƒŠ ‘6k¹ÅÐrè´ÄwèKzxƳF(?åãÐePAÕáÁÕ«C¿Å¦3½aº€aŠÊüP ^ Hwñö­A³Í«”HÄdYš>¼”HÔüÑ[ï'ñÝ n‚™•û°Õý(€„¼¢Mø[ ýÓl»ë¨ÜÛ¦O"BM€l¤XŸžÄUä<ãéV2‡<6kµÜ+Ö´ÕÞLljÉ_9‘h°ŸBI2)I·£ƒ†Èí·”¦X%Ïî"J*sÑ_®T Ð0ki*W’®œŽä4¸§5­TÄØJö'Äø kE—”PU““fBƒŽ›V%¸²Ñ_iÜW6î¦6 6V,Ä¡È,y)¡‰6R«²Òt X¼ÏU_7jKR_k4ˆŒ‡KO"©ö+uÕ'BG4×ÏIqØUxf>aU´-¤µ.§ a,ØX h»6· "G Ör>ÙH†@8Ú¾ÏØ” Á,BEk¹¹ÓV@q‡d@ŒVɸÉDRøÆšÐU,4Ó©„m3]ò‰Z£ØºÀ +îþ±¸¯¤£.uå´¶sþ¥ÅÂ~Â!Œ„Lì¸ÕnノnÔÝëîˆÝƺ;ï4˜wò Ú Áõ©Ù¼ÆÐس),ÈÀ wšÒΕ^žÃ­oHò¶nW<Ë ÀîYfiAúJíF[]Eõá2šøÁ2 …âºnê¯t±@PÈïÖô–Ýbx^ Uêºr[É–æõ¢6ãP•¬øå‰a‘Q›x連t[{UþLŽ1u‹Z;|Uº¥š‹6Ç`Á¨#ŠX•`ÏaŸ“p3™Gïýœ­‘0ÿ¶ò?¨V\3^wÁ^{ê¨aŸePêeÑŠ9°Üùõš¸_±ØŠ†•4á1©cJSüNŸJ¶¶tÛcÁ® ] ¼ ±Û„¸Sì‚o€š=ÀwVÔµ—Îugé"’aaºuÑT¡Åx ¬²5è?©hUé*9kˆ)‹©˜Ð•.Òž¡K„h»E¤@ƒ=v#ß$àÃá€s–ÔH8¹ 2óP‹rëÄP%Oj - ŒX* O`¢øî‘¢I3N”S‘@Õ¬,¹1àÊ[YÙܨGÜ'³€ž÷v¦Š±¸\¥) I®úVÇLVN Y¤<³R(ÍòÀK†Uo’ê_æ$ÞÅTÑ*!Z´û:*ÊúžJ”5/ á—[@ÈÈ✕ξtM´®¿ ö¡À^£GAK%°tQKg=ø”`fÈŽ¹óíÀHmÏQl×mË#ç#N§®³,WÖ?å- ³ú|êé‡rX‚z@,vá'フŽe­ê†[Ó ÔÐø$ýÇfþùy¼a`üȹj{›’‹­@Ñlý‡-²FßNÝ„Í€(€—5lɹ]ÆdEФó{–¹.yp‡«‚„3I8Ó}˜ØÍZ = Å>¤ïIj{5 üÓsGÎl4 [ojÔnF½øáÛŸLÏxû“ñƒt­ãe¨>®ÂïÒËv2}Ìaîø¾L?HùÛœrß0¥5ñYïrr ÐúT-m\ŒuþC†ßOmÉEc[Æ2‘c¥yÈ™§ña¨¯·ãC0u?Fõe1•ëÙ÷êEªC2ˆ?t»âã{É–ÎkÆ¿ ¢:ä!Žw;Ž-UïÝî‡ØQfL£ïv‹ù=Ú·¢Gív÷éËQm‹¡­ õÅ»r×ÇxÜø&sywd‹ŸÞÉ-þõb:¸Ô{âì‘x·2Ç¢ÌÔ¯oéhþGû¢°ßÞÉ;K &FO'ÞñlÖÛrøq}­FöÃH7…›oIÜîWßcYó÷ჳªæ¸\ з ³Öö;O6j¦ýˆ1C;—q4ÞüœyË–ã‡æpXS•6ҫǽ©ÓŽ,Kt.yDAr]Ò KÙ 2|ñàEß»:ø|ß oÒ¹n.fåMZ÷Æh½ e…=Gò>®7¡ƒé@Ó~È/{ÓmCX_¾Y_>zôöøC¨$+|£ŸšË–)z½hçÊÇ”€47l©Q¸*>Kªj=T®ì™Ö­¤oû­~’PŽ¢]ÜoíK\²©™¯ƒ1­b37me²“¦¨Ø¢¹¿ý|ÍÝØÒ€žþtBÝÿÙYYaEèÜ4ÖÖE™C Pn(h ®!à³øÒ#SNàƒQÖx$õHè¡{z˜fÑ„9Ää’ò¾Ý1¾èüz fôÍN˾u ¶ö;XWY\Êñ0õÜn(]*0É“q¥Ý6Es¿Øà¨@z^±bbÍv„ê —R6Â4*SÀ]+ Âð,A̵3 èŸê´KMD/T$f„úÅ|ñqlR`'¨kW›Ôª±¤ ±B‰HñW6>vÕgÙc«Jb€ŸG؆®Åö Ï®kˇ>€ûB<ÈGÌöJ^ âxÝ:X…šf€M¤9 èÚA¨!èlŦ˜3!ÒV%©Ž©¹a•…8¿ØµSçÊÓa# ±\?h½”¢¶æêÈ뤬]¨¤ÁÂÛ‡ZܺÅÕ¬H–†°¡Nº*Ô´¸“u,%Vó×u²N;#1},䫉5´4±ê+²ìyºÂ*Xv¡Š.FÜŸ5âðí·ô«<óF”• Ÿ3‹Êé:ÕYjOvÚEwQñc2‡‘¾s@ÚZÅ Zš¤)rsEk5ê–eC[Ð*fdð"FE"t¦âDs’G"r6HKô4«åŒ‘ëµÍB{Mr‘Ýæ¦¾&¿ú¬äÿ}4+·›’éŠÏÑ•¹‚༼v†Â9²XçgÆÇò|ŸBÊœŸ™(Ÿ2¿)•Ψ[“|ºÌ/Á؃˜ròæÁ„[Àû4ÚÐcâ¥>µ«wy;%»õÀ¨;є֤½–áSø![>相c’¦Âjd¾w”éÓªùœ d“G=}N9g²}’\˃ÚiÊò®bÊùÌeAïàõ  Ï<.xí‰>s.+Zv˜ô)sLëtyN"äÒQ³›Ðê¡`jïŒÔ%iúLùD+ -Í\Œ»ÃÓ¹Îéì#ôPh"ÌÅ]ô¡i0}¯^±4s8'åM­¬oP¯9£§Å´úëgM«6½Ýdú?æÐK»H>v‘Nï"ØeeÜ(í,ÍÀƒÁ¸òÀPù >™¡.\Æ ÓœƒZg`3PDïñ†Î„¹zå„ݾc|Ä}©³¾S0'j’çcÄ„ k0v0,—«›öZ‹2×f‘'¨hPêŒYÄýf¬ˆE]̳D ô³óÐÑz cÝÖáÐÑé[èP±' ƒŸÚG™³oóòm½Íw÷Ôt¤ê"ì0´ ?Ç¢SÐZØ0WfCnb‘"_ºß‡ÙS쉲Q¨æé\ƒOÄ¢¼ê-€Á¤u•§$çø 5~»âႲ®jõžNNóû…Ð%=ý”Ú<_Ä{°ãªô”wâ&3V ‡²Q¦iÌÕ¤ñ¾ƒ+^îËÎÂNf,Ã5 Åóv‘#Ô…p°h~Z§è~:Â0t˜N2XQf`†‹:\ô©w—@“ ÖUH” 4Ð5é.¿"t[.âzš•‹üxN”Ýqgí$F ¢M5žo#4Scb#uº™…_yÔ˰ûµ:SìTsÄ®6±]õ? âå?¥6n p0ºhºØÅÅHxvdŒCLüÝ]ñ´HÇàòÅ%O‘Œæ}³m-L-çN‡ÌqkíäȈ]¦ðQÀÎBž„4$°b÷}Æý@Á9£HæÕ‘=S3žXÖ> Ek&çõRT¾$,žŒ¬h Êì“r‰á›øÁCRž©ƒ¼‘õÚÈGYOÚÂGí^>Z‘`:àUÖÌ‘ƒˆ„-p+á7ŒgŒ6ÖòSŸ ©Q(Ú6öôÞ‘›+%ùþ»Àƒ}$n —жkÚ l£_šB8Ûı QËÛnà3yÍu]ÎßqWly„¦íøˆ¶‹¶X)õ¸FWp zJvø[•…Á’ ºT”°¢\TdÈ@«K Š*G¦ŠoSPÞª!«8½Óê C¶TЉ£“´i¥p7àAC^×®|KZ­h¥ºE¿ƒ×\WžW F8¶7HȸsÅ:‡>¤ °¶úªÛ„/°§ß®KòÏfVGh®è#"/Wé%¸ÐnÝB ¶£³X¬Õ€.©=aœ9vÇÓa[Jä"ü(ÓÙ-¹ÓhÝ!+š‹0I:8Hõ*"|!_B˜[6_BYvìËÇ®|ìÊÇ®`Ì‚r¤ÔÛËF-†`’M[XÊ{·\µægÌ ÑçO;Tæ°551¸ùmìùifzìñAÝn‰Íˆ³×kC'Òb¹AhŒUk8Õ’8lš"ñ7÷òôLMÙ: ¢ÆqëÔg‡wН«Ã•nÕ£¤ J¤p.Öõ"c.ÇìØU—âZ\xá}¦C­ÎÐ_Çtù8꬛]ká&yk¾¼k´á&“ËhíLý}¸!ÛUñk ³¢ô2O–\1´ -ª\a¶+ØE›7îÖ¬²äf@²?l(Íšbnù-ÀfEH„ýHÈ^!dǪ €‘ò« 5k³3ûÊä#´V8sÎ{qaJv Ï–No,Þ®ûEŸ:Û×T‡’YnÅ_ËÁ`ïMûSw €çÊè6¿Ógiåm?DˆŽ±»èFŒ?‰¶‚ÙkíiŒt£Ó§~ æÜ쬴Ǥšžqò¢s¸@ÕOg¢ZöPÞƒ@5”UÍÈ•©O•B‹sih+SÍZ¸a"¨¡CåœYò¤ÄUÒ^ÃwX¸?º.¯C! û^1ÜsåD°º 2=+º\Y}€¨€z; ^ ¨—E½+×[±ÞJ™n5ê­LêʤV&µ2©•Å©ByÁí…¨}_»T.t5Ô öRêrÏÓÜ*$´ª6ÌÁ@§#Ø{åV•à"73Ô¸SJ T¸²Âz»íÓˆGË•ôe­ùNÁXV-iiO zü`Ï)Õ„*­µ›%:½â¦««¿?ˆm“ɃÆÛÀ»†²w|˜Åà Ð'e°V\öø@Écnô:¾S¾öÜÂi³5;‘Ö¼ï©~„j"lB©„ÙToÓNp½oÌC·¹øbÝißèÂgñ»ZÝÀŒÌcçfhûº·él 1S±ÜïÇ hÂ&( Þ)XŒíÑ:Üó¤^Wš£OBÝó\âëW2æ~¥X0–©˜ŽK$4£GÙáå]zÄP‡ô̼•×(í_Í•ž‹OSê1+MÇõ>KÔbDøÂÆýÀ†"TÁz€ e\—å–¢Ì0'j&*@|pâ“ ¸“:q™`k>p>Á¼j8¬¡Ò-yB;óÎ+±i6Úd¥€J°‚YÃêe Ç‘ÀÙµ÷ç¸ÊÿUÃ:gf ¤C;ò°@³´ŒqGÍ“%‘nqž¶ö®d«—AÊ%[{% [Ý‘lõ–i4míPÛj{@­å¹= ÖQI@• Dìeè!€yô*í–Œ$/Š‚‹(Ô•Æ!IAJ¡‹¹Á Eb¿y|±Rpv>¢QüÆÛ’ÈÓ¡žȧðU ÷ð¼×µ™5™µ˜k0k/k.k- ?ùFD–†ƒÆX¼ÓЇâ ÜKF ‘¨# ìB‘ô˜aÚ…$Uì¤tqD DF•Œ;QLà¤ïëÑ1bTu†Š°Hõé)ÊüлØñÔ$ê$eaQ}ÙÈ“šßfÎPÛL‹‹§‰(ÏQðz‡² cS8L 0Ãí¹Ä"û}Mwa£.óÔdçFu(ba·#ŽhºÃ F@åîTÞ¼‚3¡ER˜$åD\‹5\kk\@Â}pnë#ÕPuÌm½ÊjK«Î±ùä9šˆ-½t.h ¾Û á&40¢ƒ kA2P|}PYKb¢Ò³GˆE1w!XÙCs÷Ò ¯ iÍ3¤æ!ëKÈV&dä·"¢èBÃý ‘JDw&½ú‡Pw†îë¸ÿ67xµÙ–€tcÅÕ‹„Þ'1+«Ñ-fò`¹³…Œçm,KèËÙ· ‘ÖMÆ­·Û½ý §áò\eÏ7ÁÂÕØ·^=ág¹pâ~óã ”ªH¹FÞsã¾/MÊdì¶±%óBâ6²¬ðžCÚ;8ö:ÊÜk<¬üÂm±s6¼› gi|µÙþ`¿bfW|³ªVdad yr,àEd¸Š–´c”$Á$j/yᾡ¹Ò©ï“964r«t"]^€8•ÌJ·pgÚܽkîˈ;LÎÅdÄK}ôå *Æ–FB·8Åz‡‹ a7¦0ÓC~yõ*«ZæÖ^4IŤï\°4nß0Ö]õˆóí%þ¬%¤SÏ·¯Nî±eúé,Jœf†ÚòØÚbäãëˆ@Òâªp®µbU’»#û…õÍcÿ{iæÉ]ìÊQõ›ìs–ó<6Õ}ÌûåŽJ.uÙ™™ëLÅ_6æ‹Å9š,^¤JgÈniQÌß5DH2L#1Wî ØšÄGô2kKÉÕÅ80Ê%F¼b,,H`èiÎaâ0Ú€ M:›ã¯°ÊÒj͹g  ³ˆ>‰dã†îwsšÊk =ñâéo»Ñø.t÷·‰‡Ñíé5ãžÚ»èSX¾ý¯³¡à¶ÕÁép Á­®&ZlExÊz`LËÖ;GÜ‚ í½çŸ0Ä;‘ض²ÞÝ‚_ÍWí‚Çe{mÛ"q}Rï;…aܶÚñ3ÊA›MÏO-Œê¶¥aƒæBl¶ÇžK¿ñ¬†ÛBµ3@BϱŽêvMöÎç v[9ž§ÌZ 붬ÂuDzåÀðÒ•ëqGvÔxpg .îc–wòŒo àžÕt¢ïÐVÑʯî7íŠw —씨‚QÑXEÁ»ÛÝ-aI/F»feñ†v"E˜†Œ;È5ÈìJFØÑþÕÝ€À»tè8 óm’º#b»4Ô–Vȸ3‚€ÎÛŽ;ß ª%‡Œ;_W½*ަì(,WÆN§KVnUÆÊc`ˆ-E:GGÌœ>‘™ 4ÏÊ#‚¡âž»çQi>€è'ÐŒ°ž2¨¥Ž -I¯†3Á^¿vä k.ž”ÃåØí ãÀ…Žg*û!‘h¸X¥í…¬ÕbØ 2¨UæÂ¹'§s‘U„¬‘BDJ-²W¥×b!Á¼ØR®ÈJp¤HòG) †ü Bq,;?r±Ð}ã.jþPqSÊdÉ>F®—9½2–1ÇP$;èwZP5›C•€DÊ칺•™`ÍcË ±û¢"Z3g"kH5%¯¸ØççÊÁƒ 1ãíäz¯Xl„âj¢‡`èÔÂò`K•?THÊà`¬û ¦ë?…ªÄìé9|Œõ‰•!<¼ÐyŸËî«B7µŽQÅnÄÇ¡^†E ÍíÈß婲"4¶!ëŒÆ‰¹>T×òÒnš0Òï‡MØí8˜1\ì"j<:ɳÀN ámåÏêäúÿ·!ËÝý6ÇäÙÌ·£¦/Ï ó…KPRZY†!ÈZTæ¯ܺS‰g5½7ÎuºU>ïàŸ½qïß÷®ÿü|÷Õ»wÎÏîæLðw¿´x"ÿ}ÎÁ†Õl9¦ûuF”=‹kß4ÏW«ßô-Ó}õ ¯árf‘Æ4EŸAÊšdAqæÒ÷Àô14É­×5oÂwõüìõóøkw~–¼ýóŸ}íÞÏ‘¸ûúŸ½rï;_ùÊÏ~q~öóŸßýê||r÷õ¹CþÔAÔíÌS¹]Îß|çµ×ÆÀÿãÆ¼6~üþkãkãWƯ|eüîx>â^¾6ÞÏ¿:žŸáò ü3…Ë/qwÑp¾whÀ*}fqkÐ3ÎÐíªêûþüÎñYö~g>ΤêÎBžÏõïYŽœÏ.îÿ­Nü»V‡s?pïœùÎÏοv~ïvÖß¿òõ¿ÄðvØÝ×ïÞÁ.sLÆ·G@ÇÝxçN8öèÔzÆËñïîâßxþåó/£ýð Ô)c;öHܽûâÑ$™:˜’5ì˜1ëï¨y¶Fü¥ã 5Ú±ôfÙzÖ›ky ?õ| øÛ/Üô¦¿þð¦ßyî®ú“™ÎS™×_ž)Ë1E9ný‚§³#¢gdÀjz|ÿNù)(Î’&-?‘ÿ Æ¬Oöà¯ûÁwø/žø‚ç®ÉK/œü÷Òs5µ¯ØËw^íìî±]Ç1Ù„²YÃ7¾ YK»Ž?˜zuÙ©3U|Þn{Î×ý¥ƒ\ÎÏ0ÍW¿ö½×I._/¿û¥»çÕëÇ»ÇëË„Y÷É=_¡{‚gQ6r»ú|nÔÏw#ÖŒŸ=îÅ齫7î½õν÷ó»­ñõg¬\S}ȹÔäÿFËÑÅOCamlmlmli source.ocaml capIdentifier[A-Z][a-zA-Z0-9'_]* identifier[a-z][a-zA-Z0-9'_]*hxÚí]sÛÆ‘úHšÄùr;vìØÖ‡-€4`Yvì˜6ŤӗtúЇvJP HB2`Aж܋'}êô½íLûп–_Ò½ïpw¸Ãúp’¶òȤ€ÅíÞÞîÞîÞ.ÚüçÝÙçš'ñ®Ÿ¦þádwÓjˆ?ï PÃäà ˆ3n¡î…[œ}¾#ÀEá„liöù¶tà‡q³¬‡aÈ^S"ËaØ@¯W±‘~R´EÞ¨ºKÞ¬ºGÞªú”©ºoIìQ=°¤›* Ï,INT@)Ð{úUalz_?Ð[•³@lU>Ðccü>§‡aìþPø}^Ø}AÃxý‘†±ú¢†qú’D…ɆOÆ~–iÌ)ÔÇÒÀ3àd4gîÇ~6Mƒþr=x¶WêÁ3ø¤<[Ä«’xåð“, ã}nš×”F(;£`ƒ»^ Ǧµ" c÷ÔOCÜ€«@6âšqhÝÈXsÃÈ„ü¦Iú†‰»ed2o™à7%›¼K„žÞmIÆx$ÀO3zû–ôp¾•Ñ»Žd¤éÖDï»’}&1ŒÎÜ–D%ŒÃ,"’Ôß°ø0àMi"½yGÚÂø9nIvOPh tW’_Yq(Ü=iN9\ìQ€O%C£šÊ}‰ë3­£·H|¥ZDï&ÑÀV<œ}¶gŸ²'qd¾KÖÒM†þAÔàਣ ðÚòPßfP Ò° ’:Œ§ñ0›úY˜ÄîlIñ×ar¤‹ôÑeNînHþú–„êœ(rî J†_—'³ÈO†Ê†×ôØ\J*\ ›¥Ä–¯šûÇi’#w”La $,HÆ¿MåÛó¬ç=ßÙûÂùŦó°Ï}E½Mg«ï¼ê â4ÛXõ¼¾½ I¦’Hªzîð‰ŸúC}7˜ ý1%x‰§î=^L°š¤„ŠºÕ}¼â!´m[5„åFµ°´Õ²rgNY!ÓÙÃè0‚ê…ÚbSj[mÛ›4­ÞN§ß²í.¾Ò±üâ«Ý —Ș¶7°‹‰/k&~O1ñI0†eKQЇ•Þ!Ë–‚-Ë8>pc} òP¹$AR?êëàðY’[ÇAŽ@/Ï­\‡ÒŸ(¹Žw©Ãƒd:1ˆÔ23<¶Y”nW‹’y±àç îXž…¼‰m[ð,q ¹¼2«²'A±ŒG›ñ7IÙƒ7JóYž¯ÉàÁP¡žË»("~$I„¦ ç(x£dŒåÁSw·ðÿ÷ï!ðsçg/IÁG¾‡"ÿÅánƒ+q’íï ½n¯›*Q'Øâtü$:Ä=þ§‡\äÁ. Cüw—ùù†}i~[º®¶J´JaºWS”ÓÊÒéP=­ÅÓœ–ˆv±ù䃪™µ3ÌQ˜ \%ßžü\bP®mõ@ˆea¦TЬÎd:'i&N‹P¢åÈ-…Røu³xEã!/Á²ž$Óðýñ=78£Q0ªÜXÛ5|廬TnÌ1;°Š X–dGeæ‘%4Ú7|ê-â¢m[ímÔ¶º+½v§ž˜ÛìÚ‚#¨34­Ê%8aÚV"39ï&5x8öÃØtöÓd:>q%¾&)1õóÞ9£¬$u¢$¬é[Å£$ê|UC²ˆ±àËë Å(ñ2—åQ8š—êLÚ&]Ž3TÞµú:ÛG‹wʤÚ)6¹*çù={‚Í:…¼®Yç«ZJaÿ^q-¥£˜RJ[šé¶²X®Zˆ¯,ïv¢Üºx„žú‘vJž÷äÇÅc+òã<\Ãé¦ ÁB×he×”[¿4‡ãZצ¼nhýaøOÕÖS‡íSŽƒˆç?$Àé«`ŒÏ$ê.Š‚HÒÔÉY×”œ¡3‚€ÀgOœ•‚„&q[è¢fq ^ &cîh›ªdþ4ü52Y¥»ÒˆBâzù“‰Tœøè÷¼‹eúfùB¬œC2Leò¨HÄ}c¦pM!<œ°ð .¼Á,Ò³0{Rö:I nbšé ¦>!Ù&P9z…4I½¶Í¥:Ì¡æ œúp/ Rµ° ÜŸWš¹98¦3o—äµÓm9W‹_ÛðQçÒz„Û7ö©ˆ«l ?â)έGž¸8Éì±]½e´‹¢=Ç¢‹d‡°Ê| SXªcþ® |SOUVFPâå] ‚DÞ[à ±X(屃Á¸Ê8 ¡V-^¿˜zÉ\¡•Ø¿‚<(>…š}ä<¡Ѫ£!ÓOGqŠñ•šIµšÏÉfþ>—AI´È¤¸•+¬£`©Ì9‰kÛàã>}¹z ªY¯TRÎ=¨³4Wt–FÖÛëúõ&hŒÙ ¦Xñ’ŒxS³°jE¡ò^FþüÑ<Ú2óüNZcVôüßQÊë¥]S[tÌp«™1J/jèÜÒIëÜUÎ=ø¡é¢ìk²Tj­2 A™W¼jÞ¾7ª—v†]Ìe‘Z|éy¹Îö®{Y¿I‡u*n6*X–$ œ ‰Jîèq«9虉¢pƒN©T¿!øLž×óÐçáúŽÛluáB¿_cü4Øžuã{ÛVæšR„xîC²·Ûvmymà p8rÃ( öÁÚhx!V±œrBGÖ3[@§8Üš?èÕHåoV‹õ)Û©ÛŽ3ÅV ) RW1Ÿ©½Öàæñ+I*7MSøuC’ÇÙâQŠ£'Ú˜(ÈχlåÊ2F¼G8‡Ñí7tûŸ,)úÔ¢V4^/¤ÓS2[ ¶n¨è¼)ß|¿d~\b~x¸…º†çØ3™ŸWõš—MǪ-|ùÈrºZ­v>c¶P5%×­z®?Ga[¹¦ç‹.¡¦QàSH¨Éø”ÇLÏXg)1•7Ý1'ˆi(;ÁªäÞ‚´@jVÏž„DZ4r ´¯Š°VÚ…fCC—Ý"#ºuRçôüÊzDr÷u–fµÎœÌ2+ÿ,H¨T;ŠžÓQâ03X´“pÌ \wp¥BM¸½Vý Ù'ê°»ºb±Þ/ c–N´çG|†-›ü2pQ]àÇ¥ é·lD§Û#±Qžå6»–p¡ü¼ßk9ý®gwáÒÝ´e—’O‚4º¤L7)<¬‚¼¯Š ;]ËÚ´ž£ßÙxô<‚ë_óâÂM+A¿Æð­ôâý.ÞkwòK"•v\îŸèâ ØL]V{ø}‘ú¥œïÒ’JŠ%¿/2£yȼ»U"s÷Õ)ûZ*eúhcÔ†å¢y3'ö†|«ÈmÈ%K¹¨Ùyïó€0& T«0±ÈR­õÝbg…ŒnªyŒ¶ #=556Ø%}:GßÜÌÍBÆ 9NŠKò\y^g¢(¾Ì=Oe!Ù,‡?ã˜3msuÆTÕ¨Îìá¹:ò'MæjQ™`Uåe©HT ¸XŒŸ Œe•;¸HQpv¿›\y–ÎÍ?§ä‹’…ºn‘ð gŠ8‹¿¨gBŽ4ËÏÜkNíHy<—ÞŽ *ˆˆH3Yä£ÙQ÷h!ŒîÚ5ÚµæìïY:ÞãË Sv'^›û Ú ñ;+’ÖI9Ö9‡™Cªh´Z8˜–ÙôÊã–RÍV–¿YßW.-ðÅhlØu¦ã¾pÂ6€üH±ƒ7ަ†nsg0pi ¢$áIZ쬹MgÛ&ªE8c[Íg˜#ùm£Á¸©±ê’±¥c=­›þyaú/(󳋜ۂ çÌcåж‘Ò,Ø Mš·àW`É÷ú¤ÎHÙ"£,öÌËÔe‡Z½±•zCFrj^ªºÐˆWRŒ¡6@æŠÍFã¯*FÛ„ذ×Y1¶ ö+à»Ñ­WðÓÄÊ+•¬œ—‹:Q¾ ˆò7Qæš,ÿÏÕ\ýHà꟫ ÚWg'¬² e¤ÿMö¢HÿéDSàºU¿(¬ºSìŠy+fÞÉØÀ¶vÉõ[¤ßÈî–{çkOιm(AœÑž:(™TZ®ò£ËÇÅ­ãòë—)E¸¥û6Ú°­5[%þêÀ¼½zèG‘!+« z¹J§Ã/%õ—¢Ô’–æŠN_¡ˆ« i§nJæÛçìoW¢:g¹´þ8®špÈãRÓ½ÒAíÚFµ JS[“â•úöš­ÛNßsåÚ¬Ò8a¼>7Òíÿ¥SŒxK7âÖÓ<$µPív•c"cäj»P’jG|ô¨ÊG„ã ƒ0&„ÏTÈ&å“\:Â#¹\SÔ®!ÅÙ®WÇÃiûk™ê%ö:·?ß¹Ùòœæíõ¨ßC+ë7n6[îíöãÎv÷ó—N¡½Wª—\ƱÎD;N2H ® ÞŠ×}Ùï•Q´ŒÒ9“ÍÔF˜Y´ 'ºF½ý\¯¸(Øì§ûSœ v¥û\ÙÈÀ"§e'ø*u—·Œ¼×¸—¤'÷Zö÷ìÜôI3þIvóë(8+P0GÝåÄÍ‚tÒ–MþKRM"ø…Ïçðìˆpµæ ªEýø5Ïâ,Aá ¢I€HžÁ#¸ŠÛ®I¹gé!‡è¼†K2žsÓ˜ H¸i6k;*ÜÄ<¶<±3 ñ†ÑtÀ'l–a†ˆÑô£ðE’÷9‘†%ÌYÿÝzãàʳ{áhöÆ6Ø’‡¢”[”wCÑlî †ªöî©<ë»oÿ¾ûöïðûOøý—-ï0rÀ4ÆéŸýf!~ÝC~á…j¯1VïÓÑW=McpwÒ‰ ù ÓòH8M©öÅÖÐY»¿ÖÛ ¾kw¥ã6»p.ÿ×)½›»ÇU§nóŒT…tu]ù‡šë[ õO©d“îRÖÓü\áXmÞsP7U›RîÑESî…ÁG~­EÝ€à²À:G‹¶)¾JžØ:žPb^![>iTHPds¹°²Ê|ƒW4")Þ­&¿ÊË\TD~¾*žâ+ûæ,E¢I‡Ò˹ì¬ò%~u"¥ª%¨ªu=ª1›µ„Õ¨sºV%*o)T¯·uÆ—òÁµr3tGó}® Åë‘’½cìÌBŒ~­dñ'vŸÞFYDæ”¶_*)uuª¯­ª\jÙD+¥kÇÌ ›ó}ò“—T“T%Ú¹¾¯gA,'Fé>jCŸNHVuvÚ²€¨h?€5:uj…ÜWok‹}ЦlÿªäUç`9fšº×u’ãj|¸SãíW?ÞVòUa].2ÑT¿`þ7è4ì{|ç&âibïYû.ÛŽù÷„frÄa–ŽÁyF+…©LAí¾¬5AÈ~ä9÷uí<ꎽÑPYBÌã¤ê÷Hê[䯦ÃÖñRp8.0ß ªRàb…M*vŠÿ3f=ZOCamllexmllsource.ocamllexYxÚ­XënÛ6¶së.mÒv[·bØ–¤ÝL:“—¤+°ËŒþÙìçLÇ %Úª‹§K—dÐÇØ€íåú$£e™¤HI)&À¦,žË÷úaguíã„Á„Ú‰ñäwäë¾$f‡¾Ï‚DëÖË€ÜF1Þ•ä|êk]›f™RÏ–Yæd¶Í2Ï@f§)2‰}i-h’°HŒÆ6Ò¥ïiC'‘Ì¥ï+¦LráíÊÒ®€F ¼þPy]$+®C(ìK•/ï)vB¶àý®kѬ=EFŽVÐÖ¾ÃëÅøPÑÇ ”%t°òhÚÔ÷x‚†gÜ%8[Ý¢(õ¿÷ÏžbÜ¡ûŠMŸélÊ©\5gS4ç+Ààð,-¢ƒÉ”›qN2\±¦ÛÚ*ñù]eöcÙÚˆÖ< ÓEsm€MÛSV<ÐÄg§S(tÍ+½Áï?!âÂFø™RýµÎ•’w–íÑ8Öº#åö*4Æhx@zÍ>=«÷Iµ â—¤ÌRËŠLTŽ š„QEiDƒ9[;·©‹×=]ÍõT‰Ó¶v3:lŽP¯!ë+ÊÀ¬£²»®Í9ßFû$÷ËXÕ†¨Ðê΃0b =±äþ/•ÿ›²òWŠ<¸T©õùõi¹ðˆd„çÄzñôbÐ?òãq ý›³«…I?Âvp+ß2­A™}Ìyq6ÀjnÝà5õ\gàrÔÌ©gŠ…L6]]CÜÓÈŠÏã0l°ÝNÓÕŠ—Ú‡ÖZ—_ÐNŽ.HoŒþh&À·õ(º±)›»ÖÑÌNk3Šö0â¦òìÞé˜O•Ÿ›Ñ&w7 þ÷›K¤âý–¢µÐ VV#̤ŸQésTóoœí£}ÌG‚[ô¼F‡kç0‘\Ë5®õ„Íʆ»4ºÔ2 ßàML,To£ŠÎíØ’_RÚ‚-'Úº®íQÛQFÈß-›L!N„›%n^Z¿r6ô&¼Ìñç祩¦<à ¯ØõïaÄ­J.9L½¯°ãƒ‚çÅÈsîòTÔgƒäš×ô²KÒ…ëXóÐq¨X—°Wãï–äï/ô¼ÎÛØªË…Çè<ÿæ{hÌð²Õå[uºBÃxë‹–ŸáònÉmCxiÃcŠÒÄb¶ÄÀꨚD׋ÐåÜP9®r¨\mÁV­€©¨Ô›·Ý¢ˆ¯Û éïÆ mw »ÝÃó]Ïáfßäy|íO¡ó)C‰Õ5€I,Doßü½}óÿüÃ?ÿbµÇW;‚4ˆ˜Î÷†9Vuó0wÒÆ¼>n w«$†ãF»JrG2þÕ©–˜;l¢wÄfŒóxù¬%ú:6;eõ¢1™Â:_ÖÕ!¸cáLÕQnð?T¤”Ÿ+¸NLœ¨Û|UC¸¯YSO<{ËÚʃñs1ÄÅ÷ysO ž‘ä «J¸²€Cºò¯1ÒNXþ"ýŒed¨F®B`H¡:îÌÕÓ¥¤r¦žŒŒê¨·OºB¥#l·mÏa$.n îêH!dÔ~@Uç?~Qùý OCamlyaccmlysource.ocamlyaccxÚÍXënÛ6¶ã¸I›dY›¦íVlXÝ‘”Jõ2[ÓfAÿì!f;-Ѷ]/Ƨ ƒ+;ô}$ñUÏhЗ@î[,×,ÆÇ”œmD qÃÀôAbO!¡zCyJ¹JKyÊ ž²©<å;<¥]Œ»Ô¸ÁÊø[b™ÒÚ-±LiÞv1R2Ñ܃æ $ ŒÂc·‹q¯"LÝ)ÆG”P }$®m;MÈïã}Z~áBÏL3R÷.ƒþ*Cc0fm•OãD ~ü'~¾_ŒÅȉ‘Ád#.iÅ]&гÚåÄ{Œ“"8† ì•ê  ƒñU›*2F²®Çr§’.Ç2™`6™û…­‘Ú×Vhß[Ûnâdã/Ê{X2õ& ¼àsî‚q¹ÁÄúe&бœp>ò ‚Xi‡¶!»zØÂö[˜ã7æO=óåø¹ì÷Ì“áÀ8Ëþ(ˆ’£Î`0Ô±Îê µ‘û Ëž¢Ì²QL-Û`FÝ"-ü'L€•„×0°ˆ´äCÝ$¡âÀ]bCÓ.ü³gúRËþ\œwu]¯ÂCRÎÝþóçaúÌwÈWCƒµáv“…Zi:–s0Ö…¼SÅâ8´]„ýmª_}8EOÁçÄÝ(i¥H_é)Géxdk¡†h¢\ñÝxVÙ2nêÏǤ?³Îhæ%Ïwdk]Žü?1Ia^58>ä6 o9Ú é“îzëŨÏ$!êOÇ¿‡¤§8¨£Éûï6Ù”º¿—Nm6õxÔð^šZ?Ï{_ s Ū0pV+SÁÁ“Oêê誱B=ì”Éqv©§% ËŒ}¦E±L¢Éìì™QÙ¶®` íϮܟG5þÌ»S†è°.E26“‘©\»°ú°ƒó3X._I|O`ÎÁýÁýÚ®I:ÏxU +ñŒYš‘a”yMûŒÂ¯I³sâga"xž¦)gc»Çnàf?…‹+i·JÒiJY7?JqZ¦²¶zÛipVl ’ð®Àº’Ò‡óÈf6±fCva r¥½:anJ¼R­ôµ[6ËóþeÊ•µŽ.UѬ3Œ"yø,¥uu-ËUÊnHúß5\üF(‚Ém!(®a^p “cÕ|ÅÎÒ?0Ê©+b…Œ÷à8YFîdš,Q£É¸®Ê©qf•׫áÞ<˜ÔEÅ(£žr`–ŸÁn+­EÌ~yP¨l+_‚dé†Ú‰)CÂ㥬²§| "JËÃÑæ•R][IŸß"'ì•ØßëåA@ºAÜÍbo#8qj‡2¦4[»x}ŽXdÅ aoÙjðAuoJ¯•S(ELÛlcãm…<†BíÚÇ.?~ø}þBŸ¿uöʼn¼žëX®çÁ b/ó½— 'û:æêuDÎÊZ Ɇ•]/‰JHßr!ïkZ~A_èH’ŸGÐIQËAÔ]]çr¬Tt²Ã±Ñ67qx.).B°¶:\¼™›‚îû¯ŽXmA¨[J;7}R$c°Æ“"½R%Úk9òÖ%ã8Q7x‚Î gº–_äÿªÝl*\TÌ·‚«bï>'(ÈOR+•C%5ö޲±¸G!úv4ÔÞÿwg‘©;ʦâ?¯¥žü¾ÞÆ ÕWìç˜í6þOÀ&þcamlp4source.camlp4.ocamlkxÚ¥S]OÂ0ÝPðÅcB|2j†² ñ qüGHY»´%Æ8ÿ»û¸Ú2Äû°Óì~Ó{Ûr*kÞÆÙtN’eš[O*AI"§ý{Ç´S#>!1Ûĸ€-ÀiéGoðd핊…î#Às@› Æ[¨·hZÐ5ÆRE‚²ð” è’&”©€¿-¯¡«¾ôž}oüÉnÇϪC8ñ×Y®Õñ0]±¹ZsHšAÀ§"ÐÀ´Bi«\{·šý*ðZræ:mG6·¯Û6×Ò©ç4kb »”|%æÔnÙi®FÊ^«½ ó:lP3²}‹Y\ºŒ“tI{[;TÇs§˜=·âj¬K;C Ñë¨ØÄ ;>d»‡¨ÙÚ¡:æŒp¡r6Y8ùG·H|+Ñ,’Šh–¼Q6ô³0Ì¢;o˜¾û?>¶»ü _Ÿ\,®Þ©ùªªò¿P5¦w Objective-C++mmMh source.objc++ basic_typeseasm|__asm__|auto|bool|_Bool|char|_Complex|double|float|_Imaginary|int|long|short|signed|unsigned|void before_tag2struct|union|enum\s+class|enum\s+struct|enum|classcasts4const_cast|dynamic_cast|reinterpret_cast|static_castcompiler_directive'inline|restrict|__restrict__|__restrictcontrol_keywords[break|case|catch|continue|default|do|else|for|goto|if|_Pragma|return|switch|throw|try|while&data_structures_forward_decl_lookahead`(\s+{{macro_identifier}})*\s*(:\s*({{path_lookahead}}|{{visibility_modifiers}}|,|\s|<[^;]*>)+)?;declspec%__declspec\(\s*\w+(?:\([^)]+\))?\s*\)generic_lookaheadV<(?:\s*(?:{{path_lookahead}}|\d+)(?:{{path_lookahead}}|&(?!&)|\*|,|\.|<.*?>|\s|\d)*)?> identifier\b[[:alpha:]_][[:alnum:]_]*\bmacro_identifier&\b[[:upper:]_][[:upper:][:digit:]_]*\bmemory_operators new|delete modifiers={{storage_classes}}|{{type_qualifier}}|{{compiler_directive}}non_angle_brackets (?=<<|<=)non_func_keywordsaif|for|switch|while|decltype|sizeof|__declspec|__attribute__|typeid|alignof|alignas|static_assertoperator_keywordsEand|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|xor|xor_eq|noexceptoperator_method_nameq\boperator\s*(?:[-+*/%ˆ&|~!=<>]|[-+*/%^&|=!<>]=|<<=?|>>=?|&&|\|\||\+\+|--|,|->\*?|\(\)|\[\]|""\s*{{identifier}})other_keywordsvtypedef|decltype|nullptr|{{visibility_modifiers}}|static_assert|sizeof|using|typeid|alignof|alignas|namespace|templatepath_lookaheadC(?:::\s*)?(?:{{identifier}}\s*::\s*)*(?:template\s+)?{{identifier}}storage_classesBstatic|export|extern|friend|explicit|virtual|register|thread_localtype_qualifier)const|constexpr|mutable|typename|volatilevisibility_modifiersprivate|protected|publicA$xÚí=w|·Õ´ä‘Ù¤NœÇ+2O2i§IÚT3énÓ¦iÝ&mEY¥È“|6E*GҲ⓻÷HÚ¤­›î6Ý{¤»éžéÞ{}éî¿ßßßÜ8ÄpÇ!;ó‹Añ€÷Þ{xxÀý7}Î#åöbµV.Vç*nnÆ/–ºúôž]ñs¦P{¦R+Œ+­!å…b¥¨1·œ+Õª ·Úˆú,® ý–¡kIy¶ €£o)Ïꕊu7Wvg‹Í ‡õzR^"Ô-Å\½á7K¦ïÖs3µòR ³”×”*ÅzwèU½†W«æŠ³ ×ÏyeD“7ë¹~Üà)¤Ìiäš*ÕæçQáVËq#§¶Ñ“ÓHy¶·Úœ·£ìtR^©mo¶Y-… ÅMäæÜªë{¥¸©3H¹CÛÔ|qiÆÍÍ»ý5Ž7TÒ·èake ý%ƒcl<+“ð³“Á]Iᜠî* ·‘”ÃZ¸è«Ý€Ÿc5ŸK n s®Õ|jVqÏVHl’ʨA&e¥b¥W>Ï¢2Øó•Œf•9ìD•q)·áŠ~qžSf&…d¸^”’‰áŤܥ†løE¯âUçr¾‹†¦Ž&nírx_¢TÂdVKp©¹.£j³¹.£ã2s]6…¶˜ë²i³Õ\÷ê]÷ź•ÚL±b§ø¶§mñl‡Äg¡…HcÒvân/OÄzæ‰Ô¢_wZUg­g­ª³áw$$T%pÐX•!1d¬ÊÍ_5î;§«ÅºÍëj±wëj1Yß#ͨÖAwi±æ—ë9Èo¼"Ãü!ÊQc`²â¸R’¨ú¼;?ãúu¢ô‹¥’[¯×üܱ½*8CöêTàŒÿMÎæa©À™^ºFÒ‘;C°mz¸ÒN´BaÜ«6¹Y3œ’±y$)$ãðhRHÆÜ±¤Œ¯ãJ«ß )Ûî‰dpŒ;×&ƒc¼¹N9ûegøºZ ‡Gêj±¥«Å8ÿh]-ÆåÇH¾©EÔz«¢x¬]}FÑãìê3ÚoWŸQùR>X¨_-λõ…b‰›6×*2ŒŸh¨ÈP}’¡"ÃñRŠÎnÕ+â·x²Rq×f”8¿<®~£UuFÜS”B!òS%—‹ÔòÝ¿Fôà|±ä×¢iÁ1yoB@†×ÓlåÙþtÉíPÖûñ’¥Zª4Ë.Y€Ç Ü”²†úͤ¼ÈÐ@Üå3l!XÏ´…`Âù,[&¥“’ç €ð›È×({õâL ®´VŒé+´Û£{ªÝ–?ö™‡YlIv§S6ÀhyvÊ Ť̕ÆL»-1¢Jí¶Ä¨+“2gÛR½Ôç´ÉGë¿Eš^ªú4´HaÞJÊ‹40Q˜B¼MR!*iŽ‚¾”—Ê ªý< ôIîl6)ì;%©ÎwIþ@ä<Ñ_ï–øozQˆw“r›BVï!å&RÜ颕ß+fiŠV{Ÿ4y¸]"Zåý’@÷Eèï åùÒï9µóóA 1i›…Vû)©ˆý>•Úù°¤:äzTs(gÐGHIóvxOÎ0ìqP°I3—ù~m‘Vú¸ÄuZ©\cžÙ'¤ÉJ«xÕ:’59Ÿ”DU´”Ÿ"åy¯²¸Glx‚B|ZRGÐn­ÿÉ·ÖÔÄgIIRð¦>'ÉŽ§õ>/5ÄÂѴ¤ÁÂдÒII—ÈÕšáù)én¬¸x~¯45¤¥+­öe íڂ뵸˯Hr RýUÉ¥Öy!e9<õý9QÕ}”ƒF8oÏújInáë¤Ì'h!^mÒV¾!)|¸•VØoJÆI !ÿ-Rî´míùÛÒ|ÀUÓwt”ºÔ[©»jt¿Kʬl+¾ß“f³ߪ‡ï“Ä\¨/¢ö}Y1•*î:`‘îk Äý”W§j…ˆmìG’×4&òàÇ’ò€ZÇå'¤¼PÈïQ€ŸêÐã„åÃÏ̽ˆÊüç:ñôØ/H¹Q ƒcM´æ/uÜRí8QÀ_ét–v7„¶ðk]ת= øû®þüVrm¬¢êøw¤t@` vMø½ÎL(bÆîÖdÿQ§€H(…ý)7ƒ°|”Bý™”Û P­ýý…”ç« [«ÿ•”Wªª#/ø`ѯ5«åœ[lYF¼×ÖeÄÿ’æC·vv¿ä— N#_Šýü7RR·žWéï—œú»4Ãþ!õBb¯ôç’r÷3Cá_¤<ƒÿQòÑþ-9;‡Š¾‡GŸUø)ÿ›Qð1>ùþŒÓ/4h¾€Õ}³ˆõ`¾î†š?O–`y¢ËcyŠðxÕ /Øi›4\‚œÚb>ô(8W±ŸG‹®3²cû õÁíèÿ,¶Ó¶Óêß›u 3«ß×ò­°¼Fž: Š"dLôÜ/ѳI ‡†¤4­ãib˜MÙ`V/!O¶³ðC»ÀL¹aï¾[öJHB}(»@ÿºÙkìLÍŸ/6²ÃcÔš~‰ZÒ•M½¹°Póù0>œ/ÕJµ"A O‚Ø&APÿ _¬.‘°$”ûT‹6¡ÈoÏ3Ï‚ã'…äE&b˜…Å! bOa*¦| @yr:â¥*éMàp_Ûýôu…_kyÁä8&u·—nÁëË3éRÈzŸÔ<Ý?hÙí…p·e±>VÜ€s†jõÂL4X´Ë«,†/ƒsµÙÈÃCÓÜ'Ø€ò”l´úmXs®BßÔ5C¨›:EH[5éÂcز£rj<*“ÎÈ.åÀP̆é—K´ÌK‹W ‚‡¤h¯#À«¦ÓmrG}*c©ÑoÐ ÂC·ÜŸºÑö­Þ‹4=àèó翞xþ9¾Ã6}³‡<S |ïRC¨¬5Qn9XhÎT¼r è`Q/´Ž$§8çæiÜ‹Ò ët<òÙ‰ááad8œ ô­03YX8òÄå驨DÿÜ€þDj¤>UDÕ¨/ˆŒ3Ã8-L”Eê4HC/« w%š3ý-ÊËù‘`Dš–²Àžvc)ºüy¯ŠþõÂÝwNu3vvWF÷Q ÿÙ¼dã-ÛL£ÄmvÎw”‡ïb‘ÁØÌÄö§• -C×ÅC:꨹ÚáA’%U…ʈÖ=?b³àˆX&P&Cúø,¯kb•­©ƒp7ÀcŽæi(¾ôRÿ„?pJäI‰àE™0¥äá~£4ÌVK@j;¿€Q ßeçY¥9›C+òÒ“v¡Ö³·CrfôAÌ`–:ým7¾ÃH¶­eíø®1 …†`ã0v޹ó|—Ñ$ë€ OÑjw]¡tÚš¯†¦ƒ@]¨Ì:íVZ5Ú9^¦Z÷­•¾S?tœ§s³AÃÙáa'tç´¾©E1¢»<4ºÖb—¡%þÅ æÐ½q`mo»n‰³&gMzrúWÐrœŸ9Ié¹*ºlfÿZýìOÕnr~Òt¯!ÓørÙÉ}Ù‘©¡ìÄüð'ÈŽ8æ•Ø eÓ†#Õ/q@ä6 +ÕMŽG‡fÍEi?ÜÙzõܱqd[¦DÀ[ìãÐÞ¡šWNงvî T¢Q9[˜ v'sYÛ0µ*G¹~(̘ &ù^yšµ’G"ëÍUq„·~*>\ Éè]€lhd·_ÅSD;&Z!HÒQéòxôuP€”ؾ£ïCï3˜ì°ÐŒ’¤Vk´ à rH²: ^®¡ÞÁ¬0­ß×&|LR^ARVÃDš·©Ú%Èä õ[ô'ï† j˜¬›…·;s Ùã;ÉL¤Ð/ƒÙ²Ú öʿܒÑ(ÌÞo¢?P¼Ûª·®’mL€Ò7šZÙ@’»íø\¹“‡¼»ÑmËG)º…U'±Ù3!2A´ÌqÌÛ—o³‘.³b§ŽááJ¼˜c±kÌNÙ2¹¯°X¨O¥à‡ :Ê®ÿ~ü©ˆ…]V·¿÷T[JðñNjûuõ^¾þœL¦N>g¡+lšk'Uã}º\ te2üM9 ÞÍÜé½Êü!÷0 Q éÓD×ÃÏRâp]Çë¼Ù²;‹×"ÓÓ¥…J³ŽÿWDÍÃNø\^S˜™æâÓX>Jå×*yo>LÊÒ/ö(Ū“{§ßánPõHuÞñZmgͬÛ‡dl©á¼ÁqC¸ rNOÕ+g7…]’Â’Aé7h¶ðCÃÁæm$ºLo D§1M*íj•Ö—’VõNGÏBŸÌ$´"˶¼°äÊ$thvB4?,“^4;ªŠ ¯¥Ûs*–¿t2³˜YO!e.†lÞÎbŠVW·!ƒ¦œ¶,1:§äMò ,+Þ­®Ÿ«xõ†IFä~v+F’_CpÍô§3+²Y‰RM}·X^Ŧ’uX>*ðÌq…òi[]RÜ{£3–Qö¤Wý›Œž,d'˜‹•Ýå^ŒR.UÌòž' \+#Þ×ìàãvM?ø´RÑœ|é×A³ÿ.|öJ:ašþè"”|—ÔJ²ÃñšG ¤žS¶=¸ U Ï…g&Cð@¹›šH÷ÛÈÆ×B Û£DOcˆÆMŒÅG㨿¡ òBgâ8‘c,Àg#m÷¯SuÚÞiI•d,VqøÑVf‘ê±ì®ðØn!ÿ³Êé°9î#Ãnæ{¨=Ê^É@Óc2:ÛkVé=øÓbH<—VîØ·av‚¤ÓûO³2‡8"Œ†Í¢%kvh‚é¼»C¢€>¿hí–>iV,:KÉ¢‰.òhl?»É*U”3è®ç+& ˜  Â5 ÅFÃ÷fš,=Ί(óU๰y³–ÑÞê JÏ%üŒ1»ŸE‹ú¹j€¢\5|®?(ÕÊîtÝ ÊhÇÅÊø-²¥ ÙôÊN”€È›shrNàöIävjáذ'óîÇ……r _vÈÓ\®T¢ý'üÍ=~;àUñ­1u¯T‹Q¥j q¯XG¥W­xU}‰ÌúÒØï×Qy¨µK@vÃgx(ÆT/κ3ÍÙY´´ ên‘S¬. >¸ˆtŽÐ»¦Ix¤Åß²´õ+6û¿d3'ÏŒ‡eÎm ÍÇ‹4Kž´§¤ÛY2‰7“h}y5‚îdW5 .QعNçÓž”Ñéw¹¾òz@4ž¯ï1hß8<)[Ãúh²:ŠÓ(vÛËOH·Ý8xL§¬nbâýŽeýs[åiÔæŽi°•g²®?‹$:Wósø"ŠZ©&'ô\ÌDW:10Èü³õNöZáéÄ)P ¥Õ„›dAC9jAæÌ/€¡¾Wêî"có •ðZ¶¢”+†?[¬‚ê?pùu|œ’Bâ›y섟ð‚>E(Vw*ˆÞžÏòhP¬;+õTÖ‘w»•+aE’hÜž&ðÃ~{K…óå’ ð³Œ…9¢ÓÛÏ?ס°!Ì>]_1šU™®(¸–8Ö¯´ŽÊu`ÑÎÝ…A'VGƒ»9PMÞ&#î±C êr½Ö¡m©UV"à˜Jú­°—édªu¼ê!äT•óZ Í+ùf-‰Â{—r¥ýhÀJ²._#]·™¿¥YÃ%FG‘òä–ZÛ–mºA%‡}©t-¢-«*Ü\#)^ãÁË”?™‘D¾ãÚ•]j8Ý™Ìmg'Íš¢©òV:Ê^q®Z«7¼’æªÌN‘¤]f*Dý;hu•×vD4¡€$²w¯ŠìÉ!²¥t"[^9mzïªhž¢9›N4çVN4ï_Í“C4½t¢yª”3 ÷^$(‡ ±<'–´Bhë!¯ g„³’N8çO@á\ÛIáLë#¯ m„¶–NhV5ªZ8ï]ÎÎ §ŸN8ë«Â©NÙOîfĽ“‘õðŸ–À' U}*1øqæ¤"÷'2¹ÂùîE…èY%uþõ¢0Þôq8Luñ-'¥ØFVŸtê{"h—…ü‘+—ÛØŒ½ŽIW']àõ ·ïxø; 1ÿH9‚z]±7WÈØƒê™n/ë²0&°ÎæóìÀÛ_è~Ÿ ]—½;±Å`É ŠÐhnÏœ1"¡a–’Ww#}Þßm~ ‘fèÖkM¿¤ò`àJƒÉXà&¨ÆÑìÄÖQ§ã—Íd¬éZçkØíº…I'šiºë‚‡&‘µËâUˆ::¢Œ<›Dû¾äœœ¤'é+꬘¹Î‹±BAú¦Ø¬4‚R1\Xz- ëmP=©k50²WFú7òé …↽âa³\iä~¨ö Ïë4x „ŸÊØš(; 9󱤽¹]KXÛ˜ÏYÌ€hˆ¥Æô´ÓÛË3jÉ ‡½½¦ïȨŒî´/ñ¤YB[ý_ñl~fÆ—Æ›ï“Ùšÿ'¹3ž ðëñÝñHò·wìø–ìÊ«T7ÿºÀX©_¼/2aHôN u [ܱsÄ“û€çòà+5ù†×½”GïÇŒñškðd š´F3¬R&~ê`88øŸ.j ðÍ™ø‚‰z0:¹odjpÜAmŒ8r>©Ã2l¶æ/ýr®ì–*¦ öaHí3„/{OÔ!wÛÄäð‹ cEpÓá!ÁÒE^ <߃áŽ>³¸C÷Zœ’±0óÚÈÉ]¼ÒCršÜP3¾[<údèŸFi€ý/¯Útꯕkѱ$Á\­Q ¼Ù`úF¤µæ‹9‘Y_ô0ht,³á/‹û½Šk&¦}s­ìGý@ÃHH(”ï}Mö®dH}žj+Ýk$ã%¿:uU[JÚr‡B_…üJ¢,_‘RYžuž¨¿Äºòiu%$U' ª<]5³ñ§“7þ'õK­4Ëf^E§}õÓ¬¦gÙveÃ`0 ‹|K¹eåCgIdŠºhU‚bµŒÿŸvo f¼þ ¨´ó¶PÁ—àÿñ¯èYÍÇ_£o‡£¯Õš{¸ä.4‚ðœØ4¡²„ÄÆ+Eønx†má_ëø€$ù±ê."*.RZ$‚`…ƒ¿Õf¥²Ðða­FBF×õQ³Þ­nm6hÖ½ê\ؘ‡¨Â×E ‡a‰¯> ÇºªR[|v3– 銨s/øÁ|3º#…óÕPC‘uNþ6÷ScÁ FÇ ö}»¥´ûáç6F,•Æp‰3<™Ü}ù}/ŽnŸ ¢û‚±­èϱ`ttl"Gÿ ô_P* ¹28¹ñÂàDPÈœ 0Y˜ ¶mCNBŠo1ßk¡«@øaNñ0tÑ@g'·SCÁäàÀ^Ö†¯C HÄ&Çby¦PãÆ5=Ay7ŠC7=—ByÈérˆáH±7”FóƒãØ-*”Ôß8½öMtú4’Ã?{•04³=‘¦¶~¥€ð|¯Žd)œàÀ;©ƒ!x=qhqÖ÷«ÚlÕ74A”1¸©Ôó OÁàE  €òôQÕ\TUºh¥Å÷ˆþÒÓv¶ÀÌ›ã‡m^ýèL5ßÚªùUw¬¶¼¨(ákÚx}´)ÙKYc~E"¡|b+¾ŽÕÑÏ~K ‚š^‰ØãK¬6ÊóA^ ÇdÐÒxkŠx çÉœ n®lVHVë;¼¾òËÒ×x¼Y@â™cC(]¥6Å»á3VüI˜UôÚŒ„ÈFQb¤W£?êèJwŽ%‰ÿ¼F¿ä×i(ºOÔcâž ËÖ :'|Öpö¾‹ú^‡,­bÊ‚ß ZD}2„lÛZjÚiÿƒ«a„u‚X¤”ñÞÆÔÍúâÕÂ>Œ áááÓ¶lI“ÍÀÐs <1†þÅåVÉp ›LOc¶ÕÜR®Üp×,NÔ~lýÔÍ¢ÙŠýWò@ÎiæÄ.MB4@ç 4šáçXªÄT³L¼PèòB—i&MtU­òõÀ]þxþé¹2ÆÏÛÞÁ©¤s‰Ÿˆ7›y‚ ‡qÕŸ³Ï}ˆ–Ä»3¥;wØ{¢7peãÌݙ֙åJ÷¦UÈ—[^Y_nSR&ðÌ€üÖ7Ïß<}ö'Ï`><ÿ ðüÀó¿Ï¿ 8böß"K’·Ð˜Êêà-Fa{ablù×uBÄÓòa™wd` du®p"ŒÖN¤sʽ½³ñ®ÍîÂ^žrè/Éh†R@z’ÏLÙÊöçºkO–<Kƒ©Pã¦Õébæq0¶ê¦ä©ÜÇWL}+—šÿðüƒ|‹¥ '7]•3%ïƒ(ù2ðüu|‹ôàþ¾pO=ëFn}•ªÜöÈ,Î[t&¶9ífå2Nç:Å]-µA懲ƒ?+™° ¹ Ê`Øðp’TØÜÉË>$ChRÚªÆíBí6­[¶¼#1Ó&§¼;®«9å«9å½É)§K›–MMšþÉjÆxÿ/gmz†Šë¬`Â;É.½.Æ zb™5 ë q³Zjܳš·ÞIï³›3Å™ÐJ©*gûmŠgïÆ¿g¹æmãýî•Á;Q޼ïN]ÑVûm=e^:±P©®{nï)G;GFö8“dŽŽÔBÀïÏŸ9Ö«Y}'`Vß{IYÍê;î²ú…ZÍêÓ.ÓÂ]cÚ>šÜWpD:'ÜÁ¢!a”Vd§ ]`œÚʲԥIªLž¼[™“•;“ù´ lV…ý¨1j>Û™&ò‹«Õq}SöŠŒ-â{bÄ©"öHe±vìÖ8elN[öxÚ\©ã ” ôàù›mä¶Û)K´Ó_HÚnû*•iÆp¬.i,ÍËå­n¨:ƒÉk¼ D‘8ŸŸèøJ®T¬T¤ó¿‚–ï‡ôÚUºìVå£fKÃhì¸kÀº„¹ÕÍ»ó3-WþuxrA ú¤@Ú™kl„¬ÿɶQj¼^Û0²Ði>|Û,’o6ðfñÖ¿7[E…Ó³—àBÞý×3´%ÊÈÈýš±ló5ÁÐÑuÃk€Û¤Òê%¬' Œ7lt„5?1±æ>˾ѳY–ˆ‘kÛ¾ž°îkëhb¼øºh4ÞäMÞætêïvr(R«‚Ü0}³ÃÃô½^ “Q-é4¶ ó{à9ºUÓ‡0â›TÌ´{;:´½5ýn ºÃOâÃÛ¾¯]Ç ™ƒ{¶~ ÔŸêÿ2ÅhÿxþàùŸmó3E¸8AÞ¾‡0η¸‡ É0»7ÜæŽdÛ$50*dq1ÅmDZ¸ $"Ìšœ6®2ïe<Ó‹ õCYJûl%I»±ºV©nÙÆjúÆm­µ€ ïòÅÖeÅM¡ˆìqj¯™¾c]¯¾ãB¼ïܯ?ŽF²¯Eþ;îw:à[uÒ/y ŽÑ÷z3FߺùnŒ6Šv#tñr–&:AÃάC(Üq a:—"ä;+ŸqþƒLBYÔyªBlò^ XÂX­k#›Aiœ/–üš¤ü™Œº3Äg÷ªè°GA•yKÝÓð¼ <Ÿí¨À+œ´t«Ç~Õ m;náL#ô›ë×MᕼÉß Á|_Ö»†9Ž s¬=¶Ÿ)e*Ù¯È>=“PàÁ¢ÒZÈãÿäÕ–,«‡eU¾Í%Ïî. :y4Åw;ò}x¥Ú|˜æ%¤àA ©ËLá¶wh[ê%U"à˜ˆør|δP¥ÍÑÝVù:ÝfÕ=¼MÄwéæj³¹ §cßûGàùo3–D6ø­á߀ÙÝãŠ6tâMch8QpÖgdŽ#ÿ$ŸK|s}YûÅ¢_ÅÙ'6œÙ®ï4lÐÀ1“k‡j8«¥J³ì¤œFذÂîr=v¤=~ÏðÛ(ãµeƒÁX[ Ó$¤ùtÁÄuÝ0Ï,ÇÕzoÚGBe·÷zSFÕÓhzº9£áìÌe·ã9[Êîä°yÓÔíK£oúñjÉóUt±£°ÊžÓ«ìàÙ1³Êž®5;6©Ù1xÅ‹!ûW"2äà*CD†TW"2äk†´›æÒ‘µLãÄB·©CÚØýðüwÀó¿Ø²„݆¢;Vt©îQ«<}ˆkÂmü(ÒŠ³œ‹âP¥Äï3ù+ðü>é9]&ÜÔ?–`0hôº%á·@ß/± Õ=rlJ{Ð’¹C:™vÁ¸ l&,L'¬˜ž“]3S¦I5 ZÒ´7áEgÆ„fnØ[XÒmÐ&d€±‡&â¿™x™-ã61Æeé&G‚³biÜ=:qtkµGÙýV€Û¿¸úrRþ?ã_ÂÝ Objective-Cmh source.objc before_tagstruct|union|enumcommon_protocolsº\bNS(GlyphStorage|M(utableCopying|enuItem)|C(hangeSpelling|o(ding|pying|lorPicking(Custom|Default)))|T(oolbarItemValidations|ext(Input|AttachmentCell))|I(nputServ(iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(CTypeSerializationCallBack|ect)|D(ecimalNumberBehaviors|raggingInfo)|U(serInterfaceValidations|RL(HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(ToobarItem|UserInterfaceItem)|Locking)\bcontrol_keywordsKbreak|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while identifier\b[[:alpha:]_][[:alnum:]_]*\bnon_func_keywords<if|for|switch|while|decltype|sizeof|__declspec|__attribute__çQxÚí}y$Çuv—ÔiY2%Šu˜—¬ê]"—’,‘¢@œ»àâ"f–Ë%An3 ‰žîQw²;NǹÇŽsçÏø—o‘O”wTUWõt÷ €]JV”vfº«««^½z÷{õ?gøï+úóÅ0I“{qÚ;zðÊìŒÿ÷m¿QöŽd!û³½4)dR”\™òWÍW§|à¦yàšþüZÝy9’'ôç7¼v½0—³}¹ŽbgÔOêÏzmûaÎæE6ê£Læ³2 ðÙ(‰ŠîÛÇ?§?ƒÖÇùkmŸ×Ÿ¢µƒQÕ>ÿýù´÷üþ(éa»Ù^Çeã/NÑØ.Ï—ôçsõËÁÌî¥ý³ò%_ÖŸ/L|nfáÀY·ß;ï“v¬“¿î=y§{a<[œ eù’ߟØÔöúUýùŒ×ôHž¤Y?ÇAÈÄþ×*oàæY¦ý²Õ´µ²¯~ª­•Ý_okõÚleÔ¶úñl'¾å·JûÑ~$³ñÙ~sºövFÏL×ÞÎí[µ¸šÈƒiC…X}»vÇ'Ðk&ûQ)Û>[»ªéÞÇ=gǕͿ3Us;ÍïÖ» ¼ïéÏçýV™fiOæyšÍÂ^–2Î;ƒÿþ9´ãúÃi¬nÊçj)œ÷`ZÊl6Jzñ¨/l.…zþ‚Ø¡¿PY¸¦ÊW¾8íö/Mû„ÅÏLû„݇¤?o6?‘bàQQîÅ€ä.PÎíÉÎ[\¶' `ò2û=1É-'uý‚عܸ`v /ŸDcö²=ÙIÍ]¶';»UÆ6±§¼º9 Ì™Ø+—èÄÎéÕKtr³ ÚW't"“ ›éµKvd§õãKvd§ö“Z™°¹£êNúéÅž·ùã‹=oÇÿ³s¢qýü’Ù½~ÉŽìÔÞ¨ŠIÕí¡_\¼;¡7/Þ‡Ë/+|©©æÎU$›¯íö§ëàðVEÖ5=¤C™‘‹ µ² ´,Ò^?ˆ£ÜÑèõçW½Æ(ÙƒLT6[ªÈ±Ü ­_$.}”8#X®0ukìÛi»2¹­]ÇÕÉmízÝÒŸFç|ð`F‰¹{[~ÞÞ˜g…¹½Vy8ìá"™»oëO£ “xmnÞÑŸFsÓÐMÃuýù¿¡}ˆþ4zž«‘›6›•>PD´1÷·ôçíýæé4Ø®,U•Ö—ß©¾Ú uZÓv§"vUÛ:Š)Ë®³{ò \™NEbœü¸Lúæá®þüƇ+– óØ]ýù|Ãcc óà»ú󹆫–óܽ ’È0‹Ïfå)„<‡vðïéOc&¨ir_­Þ3P˜FïëÏoUU ¦ýúó»-ퟣvžn³«?Ÿmy†õ%óć•m¦í ú×G:¦ï³=9k;7¸‚Ȧ±Ö˜M³P§cÉ0MÂÊž² ³O+oªX8L³žþ4vŽHzÝ ÷õ§1ùTJVàÃVsw¿²¹K뀙\eUóiwXÁ Ïl`EúÓ¨êðxÔZã¿òã Ñr ¦ÍQ…öžÜsºˆõ§1×øÒ…‡¥ƒÊRTÓ,© YfX¤å+Ó œ}ð +›ÜãÚ #ÄïüpÖÇß_Ux~ósÑþ,Pÿ¤Wí!ÓŸsçè¡”L/¹þ|ib/ãφÓ6?Û4øQ…´>:þæã òo`S'm3•1¼NÆÀDk‡{ª?ÅTÏŽ÷¬BaýçÇ÷ý'4÷ÚûCû´mZ% k ¿jC¡¦gÃì`äMî×úó'ëE£—~øêÏïµwæÃàO*,ºá¡ñuùSýùíº]ëŸyൠÏyÀcè6ù->ëûÇmèÝ@Çþ‰þ|ªöÒô?oƒVýÐ<øOÛhV«mËôðm¯®³(™ÿÙô¯n€Ï_êÏLîaOþ¹þ n°D˜þE›¨±˜çþåÔ/n˜ö¿j# z­yö_ëÏï7>ëê³æ©£?_˜ðÔøûþ­þ|¦îÉñæÿN~É67ê®iñï+²‹§æšF5öV݈œfTy¶LeTôgŽÍζ‘ÒƒÝü†°2û½¨8\M³AXˆ× ¢+×*Ó¨N' ‡iVÌõâ0Ïçz°×«•¦ÏUšÙa.LÎfYÑ¡W_õRí\‘¹‚D?ge Bóœ» W]pZ%'¾{r#<˜ì~XN÷JÃtÏ;‡RïÔïò€zõ’o¹ú uÍÅB÷ÆýÊËžwÙ“ç,2¡õՆΦ|é3Í/m¥Ÿ+)‚³ÌZÝwɼðæK‘„àû,ïÁnÎh,8tžUº6 Pžª!)y#è(ÊÚèœé³ÔÝŸ©ÿ{»yçëæË³­ ™þW+< ‚&@ê£4ç××.Òße9ÆN便¾Ž…ÂKNëœ=>ª‰y¯#ê%çu¾ö´¦¤U.2]Éè—nÏZÒôÁîðÓõ_?ø?áŸMøq}wÏ¼ÑøjŒ`UR+ýµq‰Ú58ÈÒÑžy©6ÜŠLùÜÿ•–ò¥™†…Ÿ¡†15#@píR¿0q²ç£Wëè³·$-(þD;ŠŸ»Ïób9ý]\¾^>)˜²(Úˆ ©g >øH¼ñá 1?xý¥@Í]ßý´”м=ä‚÷™!á¯gšùΕZ0 ÆïÕ‚Ñ2ò¼ ]ÊÞøJÓÞ¸ÌÈšˆ`¢‚ëMCßõÆ] PÇiÔ/i’‘µsàäáœCͱJŽ®O¤p,¡‹ÝÔËj7‚*µÏ—Áf&ÊO.Õ-ÎOÀ[Hg ™š@t6r÷C“þþLÛ_­ôö[;ï+i¤;•Ï׎õÓviÝ¥›Sìò§@“ÌÃ}¹7Úß5Hå2†É€5VÁS2DèV÷ƒñ¤Í‘²*L‡ZŸûLP«ºÇâiöÞWÊå8…Ž S)H^>‡Qvüé7«äuLÂÿìd 5+ávW¿›/&˜_Ò¤1Iø¶Ý§è<ûÕ(EŸ^?!Ä«\ï‹u¨÷‚ùòGíìL¿¡†"}³Dƒùèõ…Íeµµ£6·ºjmÓÁ‡Ù¦e‰ÓpÙ¸¾râU×èYÿ-ëëjaó¾êlm¬À»6Wœ7ýQu÷Åar0B*6á?ó^±yÞ±¹¶®:+뫪»swEÝ_é¨Õ…õ¾R­®ítºj}þ鬽ÿPðº7€…îÒmxãÒÖfwam³£WnÁǽµîmµ²¹Ì_Wº÷VV6ÕúÚw¯4A»—`#E9štÚó]o0Kb¡³o_Ùì¬u×Þ]QkóºÕ×½³Lã\Ó†e½³+{wñ»+;÷ÕBÁ¿½³²¼¶´Ð]á5°?q¼P;Ž ¯7Y5»»bwW}îÉý$+ŽøÂü‡êƒWf_ûp·ÿéË7­>øñìÃ÷yuúA8ûÉÂìû¯ÌþüÃAU³±«Þ;ŠÕC‚'ó^8n|ºfß;gú0±Qr Lª?;€½1JŽ’ô$™ëèJ…¸Ž'³ý°Êi6kPSY8WˆçuôÒžl—ÄÿymüÁ[Õ@´Jèó0Ä9Lã~m~¤é»ê¬ôòè8ÞZ3©ú(-ÓB¯¤•žxÑØ*§¿ï—3ÿºÆ’×+hÜxu=Ì =êý¬ ¨Ï¼Íßt–€›‡1M¸÷âÇý×rò[Õî/Ê¥ž,åÇ_ÖEÐ<æ?ùÏLs˜ƒ¬ië ·y:Êzãz[ó_²ßnk|¥AÖ~}Šg|bw± †¦AÏÌL;€9ËÎ?˜k7sSീž÷ò%±ÎKgê&qeæÜPüÀ\þaMá¢)ùÄÔcxªä4º:»ÂRíÁ”ŠUÓž¼ú½ÕòLSFßr~¥$ÌH{ý”ÔÆ±~<Ó0ž…–ñxÜ-XSË=ÜhE϶›×?xóÝ> ÎSƒ¢ÌwçáLSÁ¢Iÿ}×›zYçv™~ïzý~ÑöK»LÇ÷¼ŽÛrMσg'nçËNÇ×{"¾5Ö~¹?¾µfÝG.þƒä868µ#ÚáÊÀWfß÷SÎÛO3uNEûêÁ6@}*Θƒ(Ø;T'‡Q,'ÛÉÆ|àŽùvå ÷G„ü}Àþ¥ut2õˆŽ§ÃùªõÅϦtÇ}Ó þ ‹¼¼1fàq5Fz?@û$Ìú³}Ù‹›Ô&…?ÝÔ}¥Çù,éÓÚlÐ2Þû¡”ù\u›4qû è¥ê<œ%z¦ù¿Õ‹ôùê"5T¤û ÖèÅòÎ}³±ÿßêúÂL ãxªa)>™ÀPª×7®¿Ýpý?6\ï5\ßk¸Þ”6ž6\ÿ›†ëM¥î4\ÿ ×·«Æ¿‹å™,Ú TYÝÅÔªÉ*@*³Y­ÌZ£I­½o½aì-xÒTL뽆ëý–¾<®üb¹WZå\§†„[÷¥_¬{ÛÌL[y¬Ýõ³Ø›_¾Øˆ§÷&Q¡-ád;U`{ cðûÈÓž*=–Y¦Ÿ`\ލ-ÒÑEöiP»øî°?ð@0L>˜®M&÷ubòXïÜc©Œ¢nDÉ„íå!ËGÚ¤qrcò–ø3Ø _œnv£\¯bÇX²a3)úÛ†7M¥?Řf€àAÿ­mYbæk雥Šç¹fâN­¢×õöò½½Yémr©Ô‰Å¬‘óÃG‚œ[—Y¤†A4Í œiÁË/?2¼¤¿ÿe‡zúú—ž{®ÆXWðÞü›ð/~>?®—ªPÐÃx/ VÍèÁ´Úx?øôÍ7>AáõØkð¥K¸› ÿÀùwœ¥«3]¹~Sïx=Þõz|¤Ö†1äË'ÖŸ¾ÉÜhóÄêêVÐ?ØXü)ŽUêû¦7ӧ܉Yöû÷jBÏÌL‹n—ªúÚôúo·½Þ+Þþ ¤ª'6;bÞþó¥[øE­f逿j#<’KiL¥ ±ÄaGPÐ61Žzô“îÀý0~çüržˆÍ(‘ÛaV¬ 0J¢{˜Éòg ¶E%üòmü¦; ïÒ¯Àkzq VŽA²Þó#¼ˆ± 0’Á4¥“^¯3H …̇XÉj,ƆëÅ2#O¿µŒÉ–¤îï¾2¾"%}ÑÝtd¨hË­ým€õî°îrXÊ" ˆb™Ûa"cXÏ&w,»é½(é§'Á¼Â¸ <, Æ6©iëÝ@I‘ËBl„Ã.aÄí0?¤oꉳ^,ßO© ±GC±åô¸*ÀÒ%îæ°€[Ä,Q Å{Õkx¨—¸ư\Ö¥Y^iï‡ÿÍ«LwkšBÂŽ@¡ˆ¹Ðïãɦ*– £–sR¡èoG§ð%rfg ÇaÓ\¸2ªƒïÐý SfPõdnj…!=.^Þ àš,$0]8R¯MÓB¨»I/+d¿»&“©UÏEçeÀÑÈŒGï,lW‰D¼§îªOžQ.×ÚØ¡ŠÀ4„£Uðüô¿–äÐXÛ_ØËqÌw°tÇå>’€œôt‚û•°QïÎS±ƒ½(P‹"*òm™‰Nˆ•Ï8Ë0•CEà¶? ƒ ¾#‡ß w% nL|½üНìˆÃTŒâþ…>#ööˆÜ,؆ÃR IÄÝ­ìï#i$1”Ì› EìŽÀ©êÁ Äsµ„GÇ@› `f€‡éÉøëq\›` hYç´7Êw —Nq†»‰_ìtf½ÃíN½[Ž2ºÉ|-Y¦Â¶y N¡XŒpYÑMo§9ÂÑ|[¦Pýc5NCsc=M„ó¿"t±…?L—Ø=lÜ¢ÀR×Þó ï¢~•wM¿rìš) wè^¹µ.èÞC›#^Ç HY`‘Etp»÷°  “¢.žr+ú4`?°dFô›+ÀwoMØT«ÚÑKiŸ°Çlqµµ_a ›‚Âë¶ö‰ .¥ƒ!àORpè è ¨ð¬ul‡QFÈY^¢ˆ7Œ;LàÆÈi6Ç8" YÌ»é6úúüKus†ÙO=øFs[77-ôO„ß(©ã ÀÓósM¼rÞ˜ `*‹á™ØDÊ­åJ?n63Ð +egv“oí}L" À§ƒì»¤7X²TÚq8Ïæ0DܼΦ+FQ¶ö­óåSîEz3®‘@ÃÞö^ ÜVŽ& T^¢N‰ÉZavf1G­‰\,q˜ìú0;ÔZ ‹3-|IÙ7SKÕÒå^F•$WNÁS´#+Ò ž ”/0‡’ £‰˜ÀïÈ3àeY“\7q&€±Tˆ}Zâï«™/¥:ŸJbw[b(“N!‡;iZ”Úß×ƒÄØÐHÐ1ƯLî123WÈ1¹AZ²OØ@–¢'0–Tì ô£´€sf¤L5Ú+°rlä1Òã¥T Ïp…<Ÿá°ÖòÍ´XàpTµáË€8ŸÀ@„ܽ0_f)ÞÈs§…5µÑµ`Àø¨zaö@÷xx¶(?AŽ‹LoÕ¨(@ÜÉÜÅ&mC&&Ð>¦¿á†Íà.€&Vsx|=5‚Ò>Àz…ع¹Æ;cæ'̆c$é§ /n×¥Ur@Ê”í²_ «ão›¤tkªCÕ´¥3×…º¼óž ô –´²¨›£Ñ¤I¶ ¦§:³‘„•SÙãDɰgˆhëïýì§jí5øg{{IüôÇdX)N«Ìi[ÚÍÊÓ1 é·`‡±´O*Zˆp¸Ø(¡µIÀDŸâ €¿æ@éAòå:ì´’ôR&HÐ`*AÈ Pe– ÒŒÀ4G9(´7Ÿ¬§yŽ´h´÷«‘ÌÎ*ð ŠÃ!P´ ô$‘Äõÿ(D@UÊ+˜|i~[Ɉ X0€â‡ ¯éìQüÌ—¥Vw3B÷PJõŽp?Ò›`…ahyÑà•ÀpV²,ÍC@ ÞH° óµ0Fj#ûZáZŽˆÁxè6šá(`u &ÉÀ±!?Jÿ¥Œ*<Å 0ŽÈnRnÏûv5DŘ{»ªz%ÉÂÖØ2Pûã(b&†9ì2…z„‚-µ…eçû抦hãí±)ïî2kè,RÖ˜sYŒÓ\Š;˜$+6ÝËBÃm3Å!ìH´ Ù¼ßÙGÛŠ}hŠ«ÇçèÊi¥Z4%Yç ½ –ϹæÎX¨…‘W ʪ #È …÷ˆ±$ƒ‡èo±RXÇ·£Bà~7æ+ÐɼAá5üPÇ ”– ]ƒ6/â3æBDc܉gdFí„ÇDðõõ`ìôºÉJb"´Ff+{YÙè¶±Ìj<‘£8ÌT‡bˆl*-à Ju($õaSHÀ+³r ÄF°4‚ÕÌ4ç_K4 Œ[IBË£ŒÈ4ô4t‘ç í‚M¹±(°Y3ÁXfG>œíP&Äv€»ÍíÆ ñ 8´‚€³³2HxÙ8‰îËSÙ§•#{&"˜P‚ì€oDòBgC>En‘øŒ† ÅleøvÀ):úrˆ¨”1â+à™Hn­o¯.Ù¡OF6I‰ÛØÛ;#9!\j“Ø) Do”_XùƒŽÛY¨–\m˜Sïä ëà$¤2†=rí 9 ‡PêHôc(ö[;"»0:m.ÝUñêOÑ/€¼.LØDdˆµªüd×A]Ë@½vó!ô³•ÌVµNžƒØ ìÕØÆ˜‚ —å¯ö.J¢3ÂâP ü ç¢"ºDîyà :Z%†!ÐymÊP^ßLÆÄS>“ q¨7²ÙÁ›°AhÝa›i‘¹á†ÂØÙÿHž/ÈJšY:ŒÐ|šE–on pAÂGyú@jï!Yz\R 6“Ǥ}ÏÊ _È:À’@á{‡ÌK€³ )ˆì|-Ì$‚äˆ@kÍÒ\éÃë5@ýLG[à¯ÉŽÉöÆÚV÷l§-@f>Ðxæ£=®†²Ý°ô‡âZŽF<"®HúQKå+«` D¶´lðT¼`=Ìô4îòù]>æf™½ë“mÚMÖ(™yô!†]¼ D,µ˜y’lDƒ@[º‡%¥-j‹".ô@dµ›2Å#,¾œ¼ Ô…~çe 4AŽm}ýÁAFÅüîX£^l·F5˜–ÞvrqkQTõê"?ÑìbYÄÊ _€2¤eÚ¯]A89ø­«­"'»ýbJîB0l Ù¸–¥'†Zvj¥z‚YÞb˜!A–hâ°W»éz]ð+pðh€°åý@i ¶c2m )ñ¸.ÜŒBEpHCôG kÊ™ëcànn¯,ì¸Ëä«?xif%aJ‚¹(y6`k®§éР¤r'(CÁØßwf˜n+ÀšBWIAÊIž,Izƒ¸ÉfTçjÀq(ˆXø÷Sçm`°×›3Ò±¾ î§ãXÈã0é­Ëc§DI,5"1vV¶X¹BÑ¥ Á¦3íÁc7·@hŠ ´c{aˆ¾ phŒö$Ï⡃˜ÁMZ3†~”ÒÉ¢SÅ&$…·ÄÚªu£× ÜÍ0½=· ßXßAm„¡‡#T¬cdɰ°h~XÏÒû¶‘ÎêƒxS,pìÕR)ýƒÌÆT|³ÑxAàÚ/ì[Õ ûPàVÔ=Ðnr逮լ B°X²ÇH?XA¿ xú‹µBqÐt9gw6©ÏV¶ȱý²NðÈSï ~ˆ A¯l—@¨÷6ÖHü‚9زìÅ!KCw`;€ÈƳèäÁÕnpI.-/tóœFžPúQçKrå:VÐTÑ×£D¡š,Ju€Z_&Ø¢°Ð;ìüî2>·Ô‡6¬¨,|sFë·Ý³ÞgYù T7¨(ζ3Šhas¡;Ÿ€¼Rô0ΚÌx@€Û‘¾h‘¾/£Á›ˆ÷ÄÆ:]ºÝÕ_ÖøH¢ ¼úDÿL¤ééüÝT+'¸øÎØÒ?Šw—ù„ °3q«‹ê/ÞúÐ?> 2ófsÍIFUà¦òc}¡ŸÐïãÖ´°+hwÈ,OV$·Ó§x$JY1à Ü ;{–ÌŒöI\V&ÿÔ»ŠJêFwëÎʦß8Å“±~îI,ù&‚ž½Ȧ¿\ƒÍÂÆJeò¢ÎdzA=&N4µFæ;bekU¹±®Óa1dÒÀ /Éâà^·ï¹Û@>eb`Š Z}°)<ÀèË›k¤½Áhø'Ỹ-O—œYêÚ‰ {m-Y¡œ0GTÅø£Ê ¸¹ÊÖxÏwwÖtZ.$‚áö‰:ߨØÚgïØ IÀӨ÷4Ë߯]Ã7¶–º÷·W4*WàrWì¬ «V1±}ÁÜØ!Üv¦;Äî½+$âzÂ-æ°Ò»øfu¶í8ÿ°ˆ S¢†K¡ÞþMçEˆtF»¿QJ€­¡PÏK*P†—…·8S!)°hDŽÒP"g1ÃâÐ}¤ÏeQº*µ|UW”Â@ôoô†Aÿ˜MªÈ"jT[‰»)è8@Q1\˳t‚5˜÷ØÕljÚå ð÷µD«)»¦/S2¹ƒ 1Þ/)ÒüÐVgäIouvÀr?f°ƒ¹Éƒ9ë±a_j¨|)–nk‹%Ð< Ù@ÔÆ¶Už@78]!3ŽA›ãÀÎÊáA裱¡XÕ3MÏUç\›° ‘]€eð¢íQáÛo¡´‹‰Ã(¨í¢Q1âØ†\æÀÐQ¶Až©œ?Ö9ŽffDI0Ãf@—£œL”ØØF©h͈"Vp,HêX¼É82h¡ Ð$ðQ‘üy™ìCÖûSà {ÃÍ#ëS\.ñˆI¨Âþ·zäéSh b/¾0†bfúW4ª}"ÉES†ÀRçX‰cÜ状º­NõI`|F$`µ ’ÇÐV ÓåŽE‘ì ‡‡ŠÍÍ8^± „@óª ûT¹šÝI Ôaœü·¹·´Ç–¸O·t»iV¡Øi‡h<;`9/“e¤g5AãL7-]¶†‚ý*÷Ár±™ªÜñ6Šw!/caú‡kÌs¢´Ï)pÚb*ßêP7ññ¾u+V¦TŒÀÓÃ}ü¥ÛR³KrÖ×^ ”ÏùAD@­4ÆÈL.ñàÛín/¥éQ$Ñ12G4(S¾£Í¬ž£Pëî¸U€Š¯% oPz€:I³£e+ÖÀo\¶’=Pü­V¤q_ÚYy¯Ûé®lW±¦‡.= û •ÞÖÔ#P)V¤ôŒ‘÷ËP`C } ‹®›Ü) {;C„1²I™ã^żäÆËdVO(ºÅÊØ°¸ûw&ûý²ùuâØ‰9{)ùYëöC Œ®¦ \,ì¨ë\88»Céiˆ]eã—Ò[Åìp^Á’ý’iÙpn±sk‘ôв?nwÊK``áÜÑ,`/P0Þ6P³‚…VzÀ1”˜_ZD´7á÷œï™ÎJ£¶oCÇL^Ø@ E Ž_)ÞÛÚÑq:`¸R[bD¹ˆ¨¿£Öc{p Ï0_›ìŸ+j¿ûØCÛ1H„Ëœ%ÀíEŽã23<ܳþaÌY!ß‘B½Ab¥ðq`WFTÖ¿.÷A:f­‘}q8İv®§`âžs»§À.Çä\ö)+µ0ʺ‰³^ ÈäGÄ,góÙ䯀#s2Þ°YFœ ¤R½X˜3+$`Ü’à[D@g:Z(ØJŠþ™p•Z/øeÎ\%„TX…³ÝmÄå6åZ3‡JD’K”üÉîaí„fJ Ô×7\¥½Ù`(Q §GäicD)èÙ¶tñ3âM§Î{gȘ­ê (Z!zã¢0Às\J>MLî©J$YߤÈáak}é‹8¡…>:Ñ &ú*+lalû³Š‡ûlé„Ô02Gº-0.·0~Õ;ÂYÁ±ÉìóÆ=`Úž^Rj8.±AþNEyšJd2Þl<›|¢864]p0Û°j*:Ïl"pÊ“±F3 tc$ñ{]؈KkÝîêÂ{â5õc²½½½rKÑ?È+)«yýý{-ð@q»òøt‚q5€ˆà²'Œ8-8Hg- 9¶6“‘þñéRù•µQP )a%A–J¼Ž+‚)ådwt£YD ªNÇ[rL7ÑJr–qMŒ\¢|át£ŸóVÙÖˆV€÷Äc9 »ß×™ðÇjïc å !±¢C½UråæóiS¹ñÁ^ˆ¡iÎŒïŽ^E*Ç ñ"Éá Œ1®ÜÀe”±ÿN·gP„û(j¯£t´híëŠ<¨Æu‚–Š5Cö ‡¦ O ÷#€gøƒ‰é€@âclÑaª¬KŽÛ¡æ¦ÉDìôL|æË #4+–tžÐª®9H @Î(ù„»r[óÝÊ¢>™b:°[ѽj ÞAŠO¯yÈ!H÷"l  ½³NW½…©«ÿÞ4$Šç囨{7ÀL‚–ûär…)M  L%"p™\žÖÆß@þ$ìÖþ.'®É*Q‚É‹ll»´]ðœÑ˜®t¦:«¯ŽMa,·ÖÅ­-€ VÓXö°‡BÁÆÆÀ¬S²b WT9ß9Èo{u“ã÷@{Rú¹µe‰<’-t +Xˆœê)6ƒÃ“p_j6ÌÍ¥ãtÉCæhI› xÒ‹Øp™IX^ 3#U#˜Ÿîžþ¹öÛŒ‡‡!Y­vÀ4 ˆtFÉÆ¨;re6¬Ö‚Žî8 ª›öøÂ Ö…Ç‹¡"$ÃÝ*̪×À*Núªuç'8/Cšu&+Bôzb4èè2JXyý§§ÂŒ˜Rö;˜ŨGÀø©q\. åoÛ ôà@1rýE sÌL,“ “àB'­”æI¨yG£aææö>^XÓc¹¹JÓØXä¨ÞÙÈõÁRF¯Ð‚«”üc3åŠ0@ȸ¨áÓW]A¿ÞMŒQAgq-»4âz2\[¿qé" ûLù½PžiÏ ]Çj52+íÊCH¶ NñZUBxA’ËÛ¨¨P u '·ÚÞÞÐõÑ·£‚Ÿaì[XªPVi“@ЩûߣøcAÔœ¬ ”~‘#Ы¬²éuKu[ÑÁˆb³bRNÚŒ™j ÚæDH™ÓfÜN‚›;z"èžÚZÆocloÄ Á‚™ÇÛ[ÿ ­}!†Âz B––Ô XØ~,øÖZI§ù¾±ˆÒ.f™&µÒ l4yãèq&;QÙÀããËÆ,P,á`’¨GiëJ‡ä1!áÎs*|°B$ fNö¦ÀT¿Kž5Ñݬc×ô€eϘ:A˜ ~€¼)X¦@•6RÅ©ˆh9Á’1Q‹ë`ø³Z @Å\È´M? úL˜™å*=ä™a—¬ˆ?¾èXÖ´ƒ.×Kp $} ßäæ¼…EHÉ%Òj»œÖËTÂP Sd§:·‡x ¯@­šm'Œ®"7r.h¶œbÑ/¬Ò5ÏFmDuë°:a-aÊlEʤi%ÆàHwÌu)ä0»«?«€o(Ч ‰U¡1‰\¼-€yGsÏ*9H°¯¼bCDJÈg¢ab…¢´¾Ôå·‘gÛÐ]«ä*ò ønH2‹R VúÀ}I2x ”?—Œ›U·a³I o¦Š#ÅeJiŽd¤Ð‰é¶‹jì¦-cqgQ¯ÕÃ5öšê\ å«5ªtÑÃsíQ({éµ&Ä·uŸXBŸî>0°éÌ>0¼sÐ,¼˜Üê]t 葟%=…!– š Š¿CõM'cxOÙ!e‘0VÊ#°¼œ OÔà Æ|ø1¾þ¯hwn‹ !Æ œŽ‡‘]@“ £‰Q(£wSŠñؤbW1¹—`xM2æeY|ÒßÀ îFo'œ•kO• eWÕ¢àX =Á€yL×½—±RÅ}"G¢RqÜa€„B?¢ê†è¯À€zó嬌kõ'Rë^=×$Z-§2OÈ€¥@ýÕሔ¨£˜Žd}Ì…¿9){^Åù+ÇËNn‹àdć\•aÿ7RI…LàXÒÂÛ´ àP¬1‚ù7$ë鹆­Çcûƒ]õ‘pé¬gîºÝtl=ϰ ËäJBªàå^Þë:krѲèw¥¶"¬º%Âlh‚FW¬õÁõ]㆜ó…lÙ «DQÕÌž/+kãor aÁ”µd8*–âˆ|>BÊMºËªë…r¬«‚¹‰VÆGGõÿ°F¿°µ?ËSJ€ƒu©|²)%'lí;öEc ¹C®mŽí˺¶t¨Y4ú¨ä¤sOÛ´µ… Àq@–F§ ®ñ”â€2gp«a^¸g?ðIO‚*ÒYxŒ9˜hÔ¶ækw™Ÿ«.3Ê?íÅÆ¿â òE…ƒãÒuq`·ºdonÅc‰FÅ¥=­AÏ£rQæxÊ›XþIše®þÄ úˆJ:0’NÌBíÌݹ9‚ë!.Ø ª»LWÈ C¥r”‰UGQ˜òÏí(Rð–KA3™W¦RRP®¥ªÏi‘…[êÌ‚X¿$(:ƒ ^)Œ¤RwwÖMÄ™f ½¬Od c„al»‡™bc*zÂÇ ÁÀ’m*U?õp °µõ; UP© ‚y2¤v`Æz•;2JÆ;È‘rÄé«2Ó‰PXØEZäà8òŽ€Î; ì 0¦Ô»JO  ‹¶|:U36âžÊ8[ÚÜÐÌ NI1ó XH„t“ËÆ“uEf=ç´0Záž’1?V’ßœÁR.'TtvƽCPKº«§rF2“€)é—V \ÉI‡Õ ¹z?ÅÁ(N¥R×N¬f׆˜«%s¦K*À+PŒ¯z¢°05©3OæãÐÖQƘ¦ƒ44@ø³ÂÏ8w‚eéPö8VGF„-G•k98WÏ4‘çéP5ïfÑAC§¸‚™@§’"í¢¾û@Ž¥Î¹-ðȬnw[pÚ¦9Ö-ùˆè¶œ^<ÔeÊÑ­ía¨ˆH˜'à[àg¢œÃpÓ› óÊ©H.t$ž!Û˜q§ð$aã?¸„¶NË‹Œu8èKvpÛŠ„ˆ Õ—Vv;©Pz&Z4#Sģ¢a´áCÆÇ€j…bm§|‘f…ÁhT„l[`¶J´º8¸Jabˆ@Å*TJ!IÙD€)VLP¬¤ØßÈÓñ0 ½­LºÝ–X®è‘ý}cê b &­â³´d®º€Hfûð––uRJ'Ö&9ƒ{ê ’ÛËÌ Ø1RСS™ML`"VzRr:êç —ʧfn`I¿åi¹+÷éi’ hS+ͬHõ´¤o:ŸÇ š#EpÌ,ÝÑTcœõW&ÁéÊ’%sxs+ì K{$™P1ÕF$ô. âì˜nhŠqYæ+e"A)»œ½œ¶Ì=4„•†äõF]<×1Á°.åçJCÌý¤™S7`’BC )¤øF›¨ŒŒÌ-õ&ßûX,!aC“' ®Šb©´º( ç`7 …æ¡i¸`Blb¬‰Ìƒî©zOÓn ”e—ZÌ-Ï÷Cžå]÷}t0«¥^öƇ¢Ù$Ÿ\iîAꊃ -q!C}È ûo ª8E…&LPý 9L –5´9l¶uîƒC´vX0Ê¥b˜èÁ b1ØX0í£¼ ŒÉµñY%uåò§XIÚ•9ñhb—q?D{¨Pü!ö¤Á~K(ù¨”Óh$"‚a­-—¼³ŸœEžßöQIë·°ÍýTpÅé% 0ªd #ˆ¬-uKÚ¤ÃÏ cITË«ö&lP]„_¡IÕ$¥˜h\…%M—Px1\Àm:aY3OE"ré§&2á¡{5TCbä™&ÁÐ`°”* ©íNIQ;úÀ0=ç†æC;»õ®ØÓZç€LcÔUIÖzåX„cy\âäB¢£ x‚j ÝMÌŠqÕgÊ#}g„¹e†@ı°›No³ô‰‘R‘¡O§—Ä«”Y4\çÑ÷@Ô‡7L@vp±Jˆ² ÜÛ¸ÆL±ü¢'Žt=“5®rÁÐñbx­ ‚ëme ,UÏ}#(@2=¡±UÅkÊW¡c’Ád«nǑޜó`€À°­kªŒC! øj °vPB…Tƒ?C²G#%ì[-JXEùúߟ÷”/ Œ£ ´náÄâž»óóIAı ˜!Òííaýl;åMê]\øVG@—g´Ø‰¼Ô¸üB¨:…–ë.›ûF3µGoöÆ’¹ØD`ß 5mÙIO9'h,ÛÖ;"EkË ;ÕSû²FV_ó åÏ©æd;–²@Òí ô»=ޤ樄»9͸>ž—ëˈ²RŒ©2cDpν9.r[ÔÖL±؆MØVÄ©ôÕÞÆ‹SL³èà´°oÑżõ +æõ®¢ìX;9O£rˆrcl©ú að " 3(|i؉—Ñj͉©IZÖU@­³¥T»ñõ.µ–VmS­üAgy—.ƒ’Ϭӆ/PvíPv²àmz'ð-™éÌËjÎ% ®^¹žñ“ÙüãATcþŸs¡Å“‹¿Ì ÒÙº¥Óð€ iäË2½LÙÃP@!¬ Ä-BoÛ•Þò@:PËZÜÃ8Lbr@!uBËdô=—/}T$‰Œ$,"n46½˜+èA- JobYJ7¨‹ìA:ι°™:$•un¢5 Zƒ,DŽ›r„…–XʨVï kg”ב«zÜ´lçlÖ£XUŠP¥ rC¹¬­»ÆcEñ?GÖ9mD°ÍA|:¤ }¼ÖÂDr‰ñ ”‰$‘Á†X-c)lÜö Ò+…¾YÖºEùA˜O¬(t -ïÜ{°ƒ>›ºzŠCÀSí"¥RÆ«:èµ,Öœ% ê’‰¬ÄfýV4Ó¥QvìYÔÿ°Âå1µ¸ÝÒúÒ“³G=Šj=Îë“™3ëã’°¨‹Ddâ4Lš‰Ì†Àl$¿%lÀ‚G£ 6½;:VŲW–Ì ÷!ÀkÞkr®œ´>·'®ë÷<×<fOž´E¶EMh‚§gt18š¦ìe óAó<_Z(,(—u˜‹#k¹b± &;×*<Ô9X؆©ßè8éØåÄÚK´K+Aûú¼’Ca‚ïq±ØBè:Œ™­#±FJÙшäÎÍ}pôš¦§š^ê m}V¨IâEÄÄRçhÎñó\ŸCg¹H懡Niê’ÏÍÐ ¨lFgiÂgSÊ8².ðÓ´ÇY’‹Xkÿ¢èúZ9̲O1ÙØ×­:TºY•Á4•}¦™ÊV¨ë£œwOn”‡];mÆþ®Ö]Äw?á^øœ9csþÍ݃š‡¿eßîüëäOTy ^Ìln6†&g³Y€Ÿg#‹Õ9ö^Ò+ †V,x3TNa>êä0ÂCe/¦ 1Ê?ÝWàp…ôàkh\‚Íœ ±+oêu#S3çÄ6™Ç3b}ÝÅ]\>çr ùn#† BpÎyd¨Oøe­F¼ï×ÍaÚ×»û¡*ä ×G ×÷" ÖˆBÑ1®µQnÓó'ÀÉú¢ò6~âBÿ .$¦ #³â¡ï«J0 P¦”þ¬‹^¾R™G½g«ÕdûÜÌ9QÌC%ƒŸ»søß• Ú›“ê  9‚x³«0û=C¯~´{=˜ƒÍ|ýGzOš–ÒÑ㎲¥já¯: ,ý¦§:'Á9wZŠùÁë/»‰é송tcNKS|V}ª±¥$ךH_“ý¯®ÿåÌ”lö*›7ý)Ëñ(»üxáÁ ļ² fÁj–o ËmBÐgi>3c-XNÔˆíRÁÕó¹\«ïÕÀPRôçIH9¦‚Òóí¯¤[aõ’«—ê6¡*J>H0‡u𱽨>6Ý_ëè~àî©ê踧iÆ21OTÔDõ>iÙ5O> flçôУ žŸ©{Ï/ú{^˜iY³À&^Äm ®áW<ü»öYoÞ*RÙƒ¼jìeM€øác@ðßõÇ€à¿ÙÇ€à¿W¦ÄÓõ€¸þêï (^{ ŠŸ>…Åσ€âSƒâ²A A;™ÿû4Ø·ÚÛäÒû× ×ÿyÃõÛòÏ[ð ý‰1ƒC];ˆ«b#W¡Àv¦›‹¨ö¶§¤n³å=xgEN®þ‚¯ÖN~¯jôÐÛÔ™U£vûÙ@¤ÇÇ”Œó®r‹Sï1£Öíî‰(Qé¨=ÿMyž©½³‹³w–É}ØÆ\e"@:µs΄+O°Ì4íœW¹nô¿wÚO]]}æ¿6¼ã/¦Ù—-ÈЫ_Â¥1²¶q¥–.B`þ›Ûð+f_Ì¿ió%&»X>žiÃ_N †o”˜s¥£6·Ôf«$ŠƒñËÚâ09!dÚñãI÷‚õ'½ˆþY¢žÊm½%çm?hßÏ}Î9–í9Úâ¢ÆfçÁòݵÍ[ ¾Ý^Ø\^_ÙÁ¯+›Ëú—3ägXSéÓp€ô}X«‡ijëÝÆg {ŸÔìÑj×òTW»x`øº3B¬é CÂúXýš²vÕa9ÍÁÀžrqHîçJbª¢¬á>ò<ü‘´m©—À§†£½°~¨³ ‘Ê’1ÜÿÓM$¹u /·O¡¶³éæò“€–ÛhæçëhÊ ¹>qjé‘¥I\»äóMpYñ€ñû%IŠúœ6òæ/ÊY_9﬛޺ÚðÖ¨oÖ¹FW*ëáueWÿ¤úÚ"לSk‹ºÜÃâÖֺꬬ«¨wˆÅÿ6¶g®OËË=íl8J0)ó­¦è¨†EÜlµÖ%±&¸~FÕW©XLõâ¨æÃB¯7`Õ *÷Öð¼*Îhª½ËEüîÈ «2­FXûÖ­ÒyòÚ ÂæŠ4†Ýh€ÕLÑú+³;ôý²{a½ë̯ ‘«¾âk厂&û*ÇC{ƒ–XÎ&AÍMÍ]›«—Q¡Tt×åüžÚÿ^¹nÞn4éÿƒýëÉ PHP Source source.php identifier%\b{{identifier_start}}[[:alnum:]_]*\bidentifier_start [[:alpha:]_]path$\\?({{identifier}}\\)*{{identifier}} sql_indicator9\s*(?:SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)\bòhxÚí½[ŒdÇ™&ÖdK£‘F#i4ÒHÔ•¢(1©æ¥š¤¨–ÈbVVVu²³*“™Y}Qyöd橪dçyé®"ƒ³3;³;;³;³3 † ¿yá˃ Ø0ìÃ0à7ca¿Øïüêà øq¿ïˆsËs²²šMj¨Ý†ÄÊ<'â?þøïñÇ¿¼dþ}Ýþýq0üî ˜Í®tƽ3ÿÅç/¥ÿ¶|ɵ|ì¼–®åãçµ¼êZ^¶¿Ó²õGýy"h?·^ûæÏ¯×>‚üwÖkÁÿ…3Ã0†üwí߯fZŽg‹i¢Ùí߯¥›‡Ãp4ŸÅí¾´º]„€ß[Ý.šø—W·‹&üûöïdÚfó àWÎiAèòÍTÃpØ {½°wåd>Ľ~mÆQϰFãnÿ0Ýøt2 g3¬ybjxnÓ„oœÛ4à›ç6áÎmú²kú­s›¾ò|†æ‹›¾êš>aÿ>™jz´u¹=®tƒÁàÊ$˜bÌÃisßÉ]‘Ô{qãï®Ñ8Bô÷2/eçóýµ_‰FùAfY3¯,f‰üÃÜåÚÆíž\Ý.ûG¹ ä$œ†½q7îî©•Í¢Þ~œ;jÔ,êîéÕí¢þ~²º]Då?]Ý."ñgV·‹è[­n··º]DÙÏ®n÷s×î¹Õí^sí~¶ºÝ/\»++—-Bßó+»Ûˆ–í…•ÝEX~qe³É/­láxce³ÅWW6‹0üòÊf‚_YÙ,Âï«™]išõ{ný£~8½â$Ó•Éx烈çò ¾iÚÒ;ùµ‚Æà!“ñ Óøk4Žv×µ5G4òË5Gð«\¦ßŸ‡Ã+A· ÆCüzF²›¦ãÎ{aw·z#Ñ3¥,ó+ó³I˜è|óB¯Eˆy3wõ''?ÅK¹¬~‡§WzãEg^y1ž‡½ø•­µ_‰€)¯xeÖ猲½ö+Ñ(•ÜWlãA^Áô¯Ìƒãx”û7­¥‚†±Ìiµr÷¼–×ÏkÑcõ¼–1¾eÿ~+ÓrŠÉ]éÝ{ó~÷^ ìŒìO5/XÖÚúïDSÝ[ÿhÒûë¿M¿¾êj¬ÿN4Ÿ·×'šOsýw¢ù´r)JÒ•hñ Û§Ó¶°â•eê #¼óÞJ²zgÎÅ=Ü|Ø"¤ÞÊòszˆtÆ·?F'$wÖÀáhfæýë\©‘z+n|×þuæ²ïƒþÈýzhÿ~!ú]Lçîçw2"'8š'çB½Þ5}7£î˜¦1\;ßþuæ~g0îÞs?þƒÌ2q÷c`ÿ~)ù£8)\‹Žýûûé‹þ`O¹›4ë1píz¹ÃÑSàZ„äYûùÈþuîg¡»ßíß/F¿[ƒÛ58ÉL'e»F}û×yF kò^·~î÷{™q¢õMâvPÔ(ICû÷Ûyfšk?²¿‘ÛžÔÜﺶã -æX®é¤¨Ûi8_LG¢™¸¶ïÛ¿_ζÅ~rm¦™…¶*«ûy–‘…ªªk>Ï`¢9¦/ÿ"ƒÌl»+Á æ'®ýýÌ ¥T_×èÁR£„®éfhª?º?¾¦Vú,Û$VC]“ì_çLò3-@Ûñê Ó2š«ûõ£ ¾ TO×ü3cY•Óýü3t•£7º¦’Û4%R]Ó?Í4ÍQú\Ó”a4±ºåZü™ýûÕ¨EJÍrÍþ–aˆØYÁód† ÛK‰6no¦ÖMm¾þK­6¯½{8{Vm¯=íy^Ôèñ¥O‡ºÑœ‡oB- 7š…fyŒŠÀáKÀG¶’wȇäÇÏ»Iàߌ?<ÜT‡»‡“kùøÏ>¾<{Ø9<ôž-þÕKö™ æåÜ?sžÈŹÛ|<•ù_N"/o¾’|ã-1âò@øèbËðø*TË?§jvT0ó;eˆò^xö`<í=?žC–x³x†)f‡.(É 7>JôôÝÜž¢–qg+—ÞáòÚµÇ2[8‰³a°–•vǵù#4ˆz,‹ûû㕤L%z6 ºB²éMqiiu_5Í'íC2ØùYDø/8]Ïr·AÇ3It¬XMïÓGHöŸ›Gôï+1)ö‡“Ñ%2lxåî}óQÓrßþ|j"¿“¶•o!¸×¥†$ÆŠØÃgs³¬¢OwÉ‹Ø×‰ üwôòhèemò±¦ÿ°Ìôñ€l.ÑÀ)Ñ?þ;ë±¼V‡Ê!ý{I¤FÆFÂ]‘UØŽ§ãÅ„Oó'hÞ7:áq´R'žd÷˜‹çZ?”Õç` /øÕ ‚ig?…7»Ãg_p=?•n¡æ,TÿaÁ"¥!ÍõØ'ÿ}?38Mv§øÍ@-'+±ó…OÚ|c¥í3ÊߊßËßøG`ž>ááÏåÆvü×#|˜eóE[~•i{÷ÝÃC?žÁ;yøýO±zÕjo«ê¾®´u¥Ùôô¯+ûÛ¾j_oVJÛ~«´SÑÛ•­ƒ]ë ZÛöðe§tPkûÕýrí`»â7Jí뺡®7|ÕTõ¼{½TÛñU}{[o×oí냆®Ü¬ì{ºR«”Zÿf¥ÙªÖñ}ÃÖ›î».©Ûì«VÙ×oÅ=OoU÷·«MÝR×kÕ-¿u°³S½­ï´Êõý>/5ªžæ—ꮿS­U|Õ*—ö}þÄþ<]Ýoûj¯t[·ª¿®`~í–®«–>h7Úv»Viâ¥v©Ùf?@Ãþ6†ÝVœ¶.µKèÊÓÍ{¾^Ù«èëõV[´*AÕñVIµZCyúíƒJóŽÞi–v÷*ûmO7šB[Q·ÛªYŠæZÙç_:®×؇l´&ytÛ¯ïì Cß×mEbP Gh¼³×V~i¯±çm’‡*ŒŠ1›®ð¸2vý.&ŽŸ¹ÀDeOƒ÷îs§6K·° ¯¬4…_cÞzGÕ.ƒ¨OX A¤f~д¼­²³Ú¬ï“¡ê›¥f•¬¥¥kàû-‹ÆM²k-­ñ@ µëÍ;œL =¤¼¤î`ÏÉ^¸ji]·É¾ÈÊwÊ Ûeãª~ñ*o¼¶ £ðŸW^ôôÕ«WáQàÔoT+ºÚª¿öê‹/é[WËuažZû<ˆK ¨öÂ,)œ<â§íßj‚#©UŸ2I×ooµAý1GÕäžY µÇM¤×¥øV5Aåíë*„êþ@Úuì— É—üM (ùˆ3©`Ö;àûÚàv;‰d²¡Ûm®ueT~£ÚÐÕ¿r»ÚâB˜iØ9PUíß,ÕªÛÚ5ôìF Uï×ß>¨·I  ÓR[þz³¢ÍC´IÐØ^™Ò®¾_ྣ+­6w¤e@e%B ²b“ÍdH¯®v©Tkºu§U«ƒe©º©r«Tms—ÕJèïVËp‡j[“ëû$s O×M§Töøóå´>(7¸XU+•M x ˜nTšû‘Dª)rÆý½H $*©,Y£Y½Iæ^i¶Imdš×õþv?ÖŠkS²4±¥öÈ3²ìýjÄÂõvi‰ÔÁÖo›„<”ÚV©|ˆ®‚T°@±ì,“” ´ÝfÏq–/IÒÙ¼÷èiéÉ´ Ý­Õ·¸’Íz „AV¨ZTÇ ¤a2@¥F…+W»#º –¢tóÕd§VÚÅŠÞÉSºíW÷5}‚Œú€¼ÆßÇJ“8ŒŽe¾‚„eÇû—kòˆTRß‹_؆ˆýVŽÞ!_¹m¬7 ‡ç^ÁN¢uÞº^m kÏÞ©×¶‰xü°ËÅØ/×·E³ÙVD¦  ’o$sóœj§’ª‚yF ¬7ÃÑzÇǦÔ{ÕV£†ÙlûĄԴ;ì¦dp2Šd~ÕÜÙoCXÑûp£=?÷^­Bx¸C1%½î•Úåëåz“Œ8š†–Íï·ë7hlƒUV©Æù¥6t„­p‹¼T«·“*'q©Ý;`&ûøÕ€¨oìÃÆH`é­ƒý~i§ „…ô-hd¯ŠüUæ‚ULÌP¤96'~´Å&âW˜pÙ å@ô³íÙ ?“ZÊjˆÉÄ@b-~î-Éßw¤¥#\ ­Ú“i«66¸”P¢–·9ººÍù3DBd*™¼ÐHQöÖu*SÐ㕽mpŒ×ô«hTt®nàÃ.Íü²A.á-\Emà+øÈÕ×^6 Ñ~e§y°ÁG×±¡j¦§_l˜ÎlkØ,_ÝP[€«]Ý­4£ñhà\¯6k:µ_WÑçÖÛ5ˆÑ.ÁÂu¹VlµZ5‘M0xFèᘜaOT[õ²("ÍŠjˆfjíSèW;;Ö*0úú»NíÒXÃ4BWš,ð áS$´ˆê™yͽ•$šÄP©pÙ@n%ê†Æ 6ª¶‘òžÑí…Ëè=üZm€çܨÜ1OÜ6“/¢Oƒ“ñ‹¨ÛXsÙ¢o¡ù"ÈÛÜ(Э*rµ‚}æ7ëVD f…ÁDî@üúb%d·^ßö>”±môÀë¡óAIÄöŘԿÁxD-˜HÛ‘>$ž™)ÖüÀpPZÇ|kJ­ÀŒù´IÎO€ l‘ëV™6,ñˆ]â›YRßñÍ$ÛxñÑ@¬îÒd€>è€|,%ÃîVê{•6ØÔ”˃=ZþW M¬ •Sf¥Ò¦™±ë ÊØ-ÌY´FM°0!rvŒþ‚½hyÿŽ’.–Ü&ùÃb§ú¿ w§÷ ¨…°a…$]Ö™F;Ð Ïþ®éL>J` È"c›Jü85Í:¨­fÉHí[ôÜ2ÏhØ@?²¨ß‚çD!gy/õ](´?|gtÐi‚A| Ä@üZN-ÈиQü6…/x!×s›'ûbÅÈ’%J´²m€«‚:£-a|Õx‹@,Æ? ¾ìs¨ÀØé|·ëôC5 guÄZnŠE×Tep20©ê[ûÛ¥JÍw|J8žGSDz<°ó¸#§0JiT·³òÝ*ëпTÊø€­áEf¢òš "€íÔlPÎ@®¿EM n3p< ר¼ú²'Ê$à£lüeC¸d›ì¸F½]ƒ½TnA³¼Ugï€{`]å/Û 73-}“–ÜC{°÷ä/1WÂf-‘é›6@r‰»úWìFõ?Üel&üKP*­Qi’0„W gl€®]߀ÊäGJ]IB,à%ü´a±G÷+²}ˆìmu‹Îˆ[thQ[mªí=]º ¥+oc·ÞàÛ×Ýó´øµÀñÁ‰Ð80}}ôïìˆÅ*×nв$%í2 '©ÂØ€K±)òVtrêvÔXIÇ š\…ž!!hêÔõ]a;Š>&’;{€"xÐÄJж}G … 4Z¬ºÎqŒ“œè¾ÚP‘;Έ'ÈÄì“ÜGíZkù¡åqvãÑ:n H"Ô:ìž¡rÇ´™2ö •¢Ç áÔ-ùoóàb·Ë°ÈTy¯¡a—l7èRà.V ® ÌÊ:oƒwù™’Xo–KЬUð€Òè+±H7°¾ÆÌýKºÙáŠTÚêUÃÁ~õ6­H¬P‚¾dOÕj­->`†±FàÁþ8G ëaå7aÇáB!?…“µ†7”ø›oÁ'¹M™Búh)£wBªaŠ‚õ …_¬ü ƒÆŠ-'b²;º¶Ó¢Ì-ªò¶ü›MøZ‰ùýv½A¥³]¯oUwi¼neZ‘Å×Åcó}›Û‚ÞÔv½ µ¦ÒÜó¬ê ×fûŽ8<à ÷†Ú1LV©èÙÑÔ\ÀÊ®Ú1p‹hÚ?P{šíi@#W GiBdP§D˜ þÈõ*":(1ê 43¹µë ˆ´ø°æÆë ܵ¬¶+ÖD‰è*>h‘ÞÒ(º2“:,S8|«ößðÄŽ¼îËRâö`5"àëUÅTïø«·ißÙª—øI´üF °‹©~`•cSV¿3d`Ü]ص;FwÁò P¦GK]o·~äý~‰†î‹ž€A=µÝ,óe³­­;aÛZa\?Òö0Rݽ݂4¡ â>b©0>¾a§Q÷ KòÕMõ2åÊ­ë@8†Nxß©°T7_¥µ¿ñÜz»dëמgý.à3†¡qßÑ'HÔ€|W1Ä[´b“&"¦¼ß"?Y˜bp…Ž&ëo¬ÐhÊ>ÿ*pT» ´-±q: QÍ«Á—eUºÆ6ØW‘& Û£Lx@´ÎœÈÊÛœ÷ BæÍ\'7 èTIØÑüDÔ5aWT%ÌóºÚäÄ`ô;Mˆ¸öAsß½MIà7ì3¯4ñ {@Ì r cæ`ÏBãc¸Ä·Z 4fñ+6[NÉ¡ 7xÔ¹0¹h”%g¿!,ŠÄTQ8'>`ï:úÙøöd#Y4Th1¨küÙÁ²W× •3*ðŠ atg”+ÛÂd1ë¶¾. ¬7^|f6¼ -…œ€ºÛwÚ@@Màô 1¨u›FÍߪoCA§ Q‹D§ÇE,‹T¬í8WµÊßãÞPˆ¸–ŒõVÉz;7éú…[”[ÛÙŠŽ·>˜ <"êYay冘³t·a0ŠJ¸‡9@<®Ø""aò‚mÑ"àÐBãßm[èûÂå„A¤å‚øt#Ñ1ÀŒ”ƒLkªÆ-0è]òûèBlIì/¢N» §çH<9\êÛv­è÷fG ‰ë°†…€E“ù· q''@¯Ô¶[‚71ãv·[”`¬ÎÁõÜöô ÕÜz¹þisÇÒ„ëD‰uë4 Ðø’N2X½Oxå¦_m8ÁA¯ XÞ®/…x©4¾›žàÓ(Bž™ ©WdO ñªÑD¸±m8«-xxšôáU¿E£Á8ò¡r/ϨH-eé5¢A†*`Ö #.R«îÑ' àë´v›ä¶ Ju›2˜i)qUP ûp~ÐyvøÏÄoÒV•DyºM—À޲?É®­m—Ì7£ƒˆ¥ªÊ7­Ð3ž|‚¼[§¯}]"vˆq‹@÷%´!B•¬SøeäìB‡D)ŸÀm… ÝFÊ!7m®¾/æ£kìL…¶f™Û“‡ÕšÜEx~ÓçÇêŽ8Ò,‘ÛðM5¸Þ}Ç3Ñ&(¿ûšÁ773¢Üy».f‹—|£%5H¦¾í«e!‘ÈAmÛ„¢¬X4|Œl&2'¹¡ëТKûô’чà—÷¾PãRänØB?z“JFÃ:°Ü–7¬.­’E -ÙÑhH´,ÖCØN*6“Ä[DH=ÍÈ 71YAØ8nîXÞhÆpÎÈ‹ôЊ0…•S·Ï¨ºn‰taijZ5á/vh4J"7[“ïm6DæG$åÃxNeÃ9d{Ûº¥D=·„Qmn; #5°576~îïX³=Ūe?ß4%˜P.ƒ}AêìW+v;‹T¹]Æ^ÄȾ[n±Œ´sÔÓŠ@éÓIa7¸éM:¼â¦Øs†éõÁˆâw1«&JDà™(ã]NAŒ•.,/·¶r¦š¨°e0]²3L·¸ÊäŽ\LcÀÚ4 M·ø Kõ ¶šS`=÷|·ÕÚ¯`ûW¹Ã;Cx Úè˜É.¥¨[Ѹ™ çĆñxíVwôí­=½ã¥ukG;oVÒÔë*›—ëzg‡ØBÕo©-„òÕmDkʈW+Èò¥cð(Ì຃PjˆÝm+…ËxýtË¤×Øeƒ»!TÙ“ðˆ O±óvÕ}¸c€NË$çàl+ Ï½Û ôæM]‡{Ẉmì86^(‹Ã° ©¯êûwÀýu©T‚ª qVß³öœ1Ài°ûÊì}ùr½Šb Ÿ0ê0ŸŠß‘йaoÂ+)S*ºL¬%ñ@˜1 `ãäo^¼‘¦ˆNÐÃM»ÞùÄ`zx>—ŒùD |Ø^]2»È Ö¸Þˆ;‰ß½…Hönc’¶ˆZ´h=\8 É>g€¯ÁÕ󢘦o[&¢ƒ€»cÚVz‹íkL]n7m¨c»Ò ÜÞyÞQšáõ­·Œ_„©Q`㋬µ;êLÐÁ«ò :ùn¤š`s¢W_Ù,'¡Œth)Dv$ØáWhkÛ !9(õ4Ñ•ûFõÒ I¾ =elÏ·Ðð^¾‘!Ó)tH¾ãºjí€dÉQ}f\!¿rÅ¡¨^P·@¬ÊåZìÀM‡.6)†¦é,šQ¤>#¦ŽÅiú°õoó?-¿J5 ¾ü¾@-hA;üýþȵÚßã &)>øè,iVëô–^7Ávð\e}"b­JójJÍf‰>Œ¸ªØ}`/ (§w ª/\½Š˜€eä2¡ð­Šdlµ[@²Ø UJô›J ß¡3ÏoeßÄ3ÄŽñ’Åf¹3íöÅ›C'“%pQ›v+·z Ji_¼%âxâ˜2¤‚¾¢Ì̬´6&Öù‘©ŽY‰DáÁî°KŸÈ-Ïcâv. éê‹þ¢8·E«øQú,sc¹Ó؈û>@¡Ö/¡ ƒlH;¬¦«ß&÷Åï ãá:Ñ‘Góëv”W7¨P›Ä&$G}>R $,[ç#µEÂw‘$²cš?Æíc|û•[¶!ùT*ù2R‹KB¯¬Ù…F馾³G§Žd ™>ÖôfŒK,%jà‚U“ÿ!ˤv]mpák&‡†DÍo[ (ʲàPË÷j BbS”öo´è€±qÊ„/Œ Žªnœå'ntˆ!F¸•ɹ1€h“—GY£’àwý`W’ü¬87ÜÀlï(Ðí\v•è`ô…ðtþèÓ¾÷¹Tú‚oE‡ñ:+ì·²X¬»ðÒDÞ¢‡ê6X=ŽYRØÇ-ûŠŽùpP³ŒöS†íP6étr@[ƒ+­ŽÈ*8Ô€¤ mÉ»³‘}‘_äØHWb2q/(šË-Iº2L &ë´^à³l‹îV•>×Zô2­ !b“jFò ¦ç¶Ùsq¯Ê­H(Ó»à %Éøn[•ŒIUj0)À¼H íÌ…Š%BzG™^ð“PZEbÃ@!Cô:JÙzî ä¨gUB’Â@ DË`.­bð{‡~ÈW¦Ýƨ«*Äh°‹ÊÄ¿Ì^gx2‡–¶ýOqÃD+M<Û…Ç…'1ŸY(`’â °c‰È¶«Q“ˆ:Á˜£ò±×ýJùzCPÏ#sj›ÈLšˆ]!ô[vDBVEL×S°ÅDi RŸm 6Ÿb%Ŧ%‰§˜ìH|tZ2ƒ|p›WìtÄíB߈’Œ=z¥ÁMGˆqL8ßÜ%€CRE‰v›¢¸sÒ[ 2€çIÚ­œäL?*âLà1³pze>¾Ž=‹r%5‹Cœf!}<]¦?:fwpzN>+¥b:Á¬{~ÌN*uúÁ%ÿÕá¦Úì_C/Þ¦kð­ä‰Wƒ&>“óÓg•âÖÑq¥ç¬.œdrÇK>üúŠËQq•"6V \t¬å%}-> ’ÄTÁÙï%×u‹^¸òôÎïÅÝÿRzúðsNí¾—ÁZê4Y7˜w—Nï|¾`šE…î'áû\âTÏÊcÙØ‰óœOGÝŸb]‰CímžZ ×w³_Nÿ…§Ýp⎿eûûáÊ©D8ŽgáöƒR‡O?ç­žÊ'Ÿ»2ËÇ—Vñ¤Ä·¨ƒU'ŸŠÈcœl8‰ÈôÔS×®y_R›×¾ô$þ)Á'æ,ß´yv’mW5K¬ùç pu¡Ú çž‹Ž†^δüvþ’Dí?÷ð óù‚¡2‚ u29eú©•u•eÔ,iSVKƒ„ÃÑ`úÞ¥ba‘:"ý͘ß}7A‚‡‡OŸÇ‹?i\¼óˆq‘ Otù­éïBkóx†hS§§M ²ÂsÓKëC{ùct»þ ‹öã»KdÇ­zpÞR®žÛ¹%Ö:Ùë˜Ùª*¯S´)¯±ÄgáW ltéB³»”>ú÷ÅxK°R˰rä´<ßì{¬E4›…s½ñ¿¡º ôp2?óô ?K2Ód4hÊÂɧ‹î¼xYÿirøõ†Õh¾œG€‡ÒlÅ ù÷µ µ˜…˜¨(bñ?·'WÓV§*Tr¶ÒÅœ¢nìëë(<UŠ–zšZêÏǤrí|2y?—m~øxcÌ¥U@›Fç—v¤F^U%Oà¥~øÝøåŸÁäXÓÞ¸]þ·Åkáâw XlªÏkiŽE\&è€mݹž@¥ú6íßæ!þŽç˜[سz]‚ŵÇSªqÃqÏ”âM󃯥†sçè¶ÝHõÔÞÕYâƒY¦áQtÉüïì wo}•uÄ=u/´ŽÁˆÉŒ“Œy>nIJ 4 ù³)b®gƒ0œèÁ½p1ÑÁbc èiSß]vÇÕÑј¾"·¶N·5‚¤þoròß)bôÃà¸ßÍLn}f~Þ°eÖn?úXÌã³Qò&òǾšüîÄÕ»êð%î±Íkê—žŠŠVŽ6½„½™5ݼŸ^säú²ªá÷²"níÎÎpyö,°8Cà›q©ç<+õI4ÛA®X`âåutö«_ýгçx ®åż|y sÂâ5dW:X×A×¥2øqjí¿“žá3œâ3©9:Ì}=‰±hRô ~Ú³ÿnÑìGã‰É?ž3ùäõkY¿gÊúbIßJ#éöo¼”¢‚'2Tp»ˆþ —N?S4°‘xVÍlƒ \]A­·?û4ðòJÀ /B³÷?K4ðJâ™»SçËy4ðjE?H£è­ÒÍR«Ü¬6ÚŸyRx:E OfH!žh>E|-—"Þ›}†â'‰g®›¿Î#ˆŸæIOL f˜K÷™'†gRÄð½ìŸá$/¢#¼7>C¤ Ͼ³Š7x+äC¹ÕúÌÓÁ³+åfxùÐ}–ØÁs‰gîæ‰ÿ>~–DÑSi­ˆ×­Š|z |%µÀ*³ÀÞÊÊ”Ï<Ä.?üB=~ñW.?9ä!ÊÝB¹]6†\ çXòL–œ}‰|†wiv%ëCçúO@ä0çˆã,h³ñb “ù!Ú$@‹…ÿ…Ì ÒÔË+]09»‹˜÷/ÕO"¢¹ÔUAÞJ±Œ{,³°øæ§Âŧ<½0n³’);ïb0sÀ[Â˹à‹Ù¯f0k:)Ài¡Èp ¾”†Ùþ’Âè— C6]¡Y6Ÿn!ŒË°-!ã<ØÎÅæWÒØ4} 3Jã1Œw1²÷e‚}å±$%Âï¾´6×#>rÁ%¶¸’ô Ùâ¥ÄÈÎ3ÍÎÝ4+œæÆÇ&n æ…ˆû4¿›ÄÉiޤH’Ïí‡Y/Çz¤ H²­$ì<È.JØ·/ŽH8 ¸„ý¥•ðp\•YgÁz¨$˰­DflE¦éã"W?${ýD/‚ùT+™¯—¶ôo½ëd r¢žös+ GÙf&ÃÌå›1÷ì“Í6Ë›IjŠqþêGçß²‘|I(ýéàË…³Î®‹¦y>t.Ü“ª+o¬4”Î%ùä@¥eÓéøAµ?‘%CíC²œLùþ(y×}J¿’—Þ“°ÞAˆý^8Ÿ­lüÕ¥rü»Ä&ѰS0=^˜ûó2oâÀu&÷ô:“[™§×Ùeî(ÃÃcéñß$–~ã{û\–¡¼Ïß@NA7SÍWñ¡ÍsÑÇÊ?/ûܤ`þûÞlãŽ2XsBn¯<Ÿ¾vÕ%Ÿ‘`ÁSwûÃÙiXÚnÜ^¼ó¬§žòÖ”›vði¤ö+­_úÙÆGwŸúÝû‡ï|øÑ;ÙýçèŸLŠÂ:„³n0 ͤŠUˆ”9÷õhĽÃÞsêgøu¼¼ì•IiŒÓN> ¦gW¦á$œ÷£¯"º{a5JŠú»üh»‰UúûjóÚá»›Ðß6]çÏžCTÑ™;óXP9µŸ Ý}úÝçž}ç\W¥Åqj“\ ½E`]Z+“þ!æ|® U¼ÑÒw+?ìF{æco´ëÈþá,é uhú=<|æå{ÄŠz,èë“Ýœ•ßöÍ)ÿ~/Z® ×úaÖ%7¹=ry˜‹Ù™ÝÍ.šTîû›‰—?Ñkn«kÃüȯ-ý¬_vœëoOõ°UO¤Q%iÔ©·päºüVš ËfŒAŽº‘kzÿƒ«YD¶ÊáóÉmWiUßNOÏêQÆ|I®ùO“aê2è;È}+Å^OlOæ~\³uÁ«û¼ÓÇ^Á [,¦hª{jVú“»EXxÛ[‡%ì­ÃŠ^®_úÍ &2@?.¡\*âÏn¦+3÷/³!Ü¿Äa£§.ùŒaôá¦b¬‘‹N%ýÖo`ß¼ýqöMëÒo5®›g~³û¦ùûæ™<¥ê ŸX‹ç³ºæy«—dý£lïÅç yÁ_%FI>Ÿ¯ ¥Oš¿YÍykRänOL³œ2té³Å‹Œ¡Õ–ò­KC§jâ\P/\­àšÞÇËüÕ$Õ.Ûu kêò:ksñìIe=ϸhxs´tç·‚–¾‘¡¥äÔ¿ätîÚÇÈŸ¯üëÌš|9¹ø¶PB–Ø–h;óÚ¤Žy¯òÄüó6¾u-BðcôûÏRý^PÅû—ò÷òëXÔÇ PÿaN[þ[öø%-þ—ÿáªÆEZ>Xaª~nõ¾øÑ¹ûbYõŠ«?¬Sÿ#[ç¡ßÿ ˆ1÷ žÿÙŠõI-y5!G”1J8HEïpöœ\´k‹¦Íž;§î]4RÑ!ƒïgvZäWuçñô?ÊÛž…¥ÏV‹è÷²¸Ê-ßu“_Ô#IU+DLm—b˜ pìw³ÚBT'Z¬"ÿŸÃä’*± “—.}\ªü¿˜¤JsÓól®ze¢EOÃ`xkLïñt“×îâÛ‰.ãЇ>˜ôàMÄo ¬ÿ0¬¸Â‰:T†ùm-F½A¨»‹é¬?TM‚ªs=Òå {³*úÞž†aôÅ}PîoÜíOúñô,jµÓàcôµÄ4“è}4@sxÔ^8?÷´™U½óžë†re(ô”-Vmª0âÀ$>½c¢*ÙÍ"„Ùkb žFÇñ´YLz0îDàHÉ{j{<Ðþi8`ÜÛj¯D=Œ{‹zôÒªµÓ±I<áÍÁãÑñØ KïNû=u4ÃDC½ÓRe`ÒÌ;dg[ýÑv0tYU/Ôƒ!M,ÈTºjcU`'ºªFsuuƒ—cêKoa€#L ÈRÓ‹Á¼?ÄøÇ Î°ÿwÆÓa0'ކ],W¨zr;ÆVг8-ƒA¼îk©§žž÷{gjÜ åòÎþÝ¢Á*ƒ)*žÕ §÷1Þuƒ¢ò Ï¤Ñ×Jß 0õ zz¯¡Ë%^‰w€¼Ó3]wƒ|ä„& Äuj_¨=աˉNùSf®‚î=MóHÂð´´k‡Ã Ñl©¥Š^êØ8>j \ÒŸwVëî…½Z`§ý1VöìíE¸ue´jóqGõÕ T¬)c©ÐÓ§aOÈÖÓƒq0gøP…÷˜Ö¡gÚýøƒÕ}µL|®Ÿ]oÒ€…³ ~ A·Â÷¬ªƒGeí²X«›Ý „¯ÞÏ®üíqWë¸Vá|β9åÒyk1"®®·szb¹ýˆ ˆO?èÏNÐù Ë¥fÒY0ížð±=3||»† `é«îCk>äè§ÌB}0ê,ŽX¨Ç[E@xBšº<,½óV¶ù|‚Ôl}3Ô˜6øX‹Ì}â^æÿhÍÉÙôv˜ü†%šž™:AØ×Ó…ªùJ}1g¨w5úd±!ê­Œºc’éœOº4çh_q ?èzñ:¹ŽÂ/™´í-Oö/x(—›Ø²–wd õñ½³qûl ‡’jKS˜šj4ôÝ8 Ð™P ‹­Ô|L&vò}@š3é“ñª‰·+ŒÇË2`]:>F$Ÿübs™µ%ø4þëþ¤„ÕÓgýóêU;æ„}Úæ*Á¸ëGª™b¥Øž³˜‡xœÕÑ`ü ÁV¶Õ’@ÕíÙ{ólÎNÂp®Év´£iÅíð-·%~m)ŽiÙú£Ò$ÑY`Ö¼Uçvö4×¶*)ñ: {d\¥¬œ§Oø²I½ÃÚ!”­«ä{ü.$ô6b7\\JÔ«¦+‘¥»$l9¸"£W¿8¹*}¬DØ@xÜcÅø¤C{:L05ާñÑVDŒ›Ý|í­™ŠÜÔ7ÚÁñ ß_kðŠu¥E¯?¶l¬΀ÁàXW·¯Þßð?îPtsþJ½FÊÙ4”‡¼¦?PIµ œÍt Âðlöþ á1§Ñ½iŸ<ýA0‘ÙM… Q„Ô ªúó˜¶äK¨Aø t…£ãùIâ{Ií½ÝP1k"[îiD€§¡L%XB£sx³YþZ’tTÈ"îðäD5ÝR^ÁÎêU?vç<¶RNꘟOꘉðÁ/ólÅuëø­§‹y:—Ö±¾ž´ÒRÙ*çjðk¥±—²'lDßquáøaqO«@ùKëÚo&œ$_¦¤ß]¤'Óæ—ójIÕ†ŸÂ¸a òõD™Ò'’„¶T¦t•ÛôÜ*ˆÙ׬|X€‚/®BAŠz\ÖÇ ‡Ï2ìúã7Ÿ³3§Çë!’Æ‹`úR Ëñ¸pŒßËu¼ðÂ#â˹ô÷ãG8Âï¯Z¼”Ë8LÓo»yPÑ;¥ï{áEY>¤#/½ä ¶Ñí·åZ©ÕÒæ>F¹ÒFn™6·üø¾æmj;;úŽ\z¥÷kz«©Û¥­œ£wQ´rùèüóSû}ÕvÿdÙÁWR-¾š‚Êõz~/_]›©ä¤g®yʧ™½Y4ϯ­š§ZG&>›&Jð”)¬J¨ÞÚ^b‚øÓ5 Í=å6•óv1v?(¢¨~d.Gɛ֦æòï¹%ꨌ¹{º«h8¢×þˆJWO…ô«ä#ã>èãGZÚƒY¨útƒŒzP‘m=a ¦jÿHÏôçÝýà„.}ÚÇËéÓºçHŸõÃAϵ†ßξo³?,˜sz“ýa<¹LÄ ôP­ƒÕŒ_h’º&­ßH¡õû`ôæÿüd:~`|Öƒ³Äü¾îè…©}Gdx–æŠÈðÔTaz]. Iò§ßyN® ‘ëCì5$ç]%"øZêøµ®*ɼs^soóKçó¦o^*@Èß<ÿ‹\Ž(§î<–eW‡ž—[ÖÌ£…¶²`Ñzõë/R‘ÝŒEd²¯}šðòŸNÌ;Âãã¿©y-ñ¥ˆàn’ÅÚín¦Aü@›”A8´á"×…ïä8¤G¼ÿX­h“£¤ÇÆnì`{b¯JùëÌÍBEÜ£(0#ø$- >1mîûpç:„ëè,‚·FÈ8í›iÐ\© ×wÒ矬¸.¤¡­U§c«ÊðD8ž§ÊÔb·•ØéXô»ÞÃTdÏnôòXÇ/ª@tþ³£“;•D>§¯èÃgõ ú'ú§úPëÃwõoè_ýJ>ï½îÀò2’!:?RèD⳩éñZ¸­÷ú…I7®7<ȼUrܼ¦_÷`zZý”…+„7? =1Þ—ÏÑ¿VAÿÐöÞåõVl=¨7½"Ý*‚7¤{îJ¾ÚñÎÃ+‡XÑç`3ºþTQÐÒ¦BùW 9™O™^¿÷Š>-¡xç#Á“ˆ§¥zùN²¾@eLj#Õ[°ÓŸ#‘ÝæO:è^ýuÿýHþ¯õ:øuý>áƒ~ã|xa‚áôgK¥øœ`$êGú§öP{šÌsÔC4QŸâÿ©”²Â9 Æp<ƒâ;LîÐȧöü¹‡øâr…97¼~Á]w}Ÿ½(GŒËn8>’Ü·ŸNXk…Â鉢á#YP g¿U¤J=H¢ËK.Ôñx>>/ÿâ\Å"˥ܶcçëäeFe1r×úÏ“ÀÇ{÷®¹ñõt½‹ù‘sµ›Ç?¾ÖkyHí*wÙ¿]´ì'¹»D=ÄB…c?q©àß’g¡“$;æ¤]“Ä ‹Þð2{Ž•8…O¼øwwÈ“Y`së{%œççå¤qüÑå‡ëñ‚ÉaE‰[i`>¤±Ui8)¿_ÂÇr¥ÃñVü[ú²³¢¹|7Õâi„VvOÆyµYJ¡0i͘ñš0?г“EÓþÞÚ{6:ò‘¾ð윻ö² çFºæò›¢p×wÖžP$ûΩ§³tß÷‹§l8ÓJ)ó±Šï¬¼Ûn½{ü‹ðð·q˜/æ2˜‡¸³îï±—\/md˜s!$K¤/E÷Äú¦=n¬ô‹™×çgÙ¯¼g¹ðÐIŽ¡w¸¹2Ä6Z˜Y=ò‹Æb›v¥Ó/»ßã\Ž\.|Q|AE¯åÉ]ô~ÐÔËÖä‹Xåò8J!?x޸ǯ8¢ZÚ1*;àÑßòçZ\{´<³’´Ÿ‰'ÎWŸºTðï7—9óóµAúÉÚ»=YÍäò£ßÖßÍlkãÉ-€ò¨j§|pxŠ.Qº²\9zGªÑeQqÇ'K…íân‡&:~.>Ã÷ì¹Ý.F}&ËOÆý%_ñïLjMçpc<}øÔCWSˆâ߇ŠÑúôóÏn>ò ßE‹ÿ‹ÔŠ?‹XVW,d$Éj‹_ÏÊÙ¸¬ûE´¨U5À?®xþjjZÀñš¾À`Eø½–Âᅧ6õ)s=\NÀ*DõRjÈ•7ÎiœÎð8¼û¤zò°÷Ü“ìȂ{Ò{òð“òñ%þÿ|aýËäë´OÉ­gãuyî‘ùrÌmØŸýS{šF—ÖEÇ'Z¾¼×óÀâ¿üBE‡ËW¹ŽSþõDuÅïv¶Þñî¾øRRm_’#£Å0œÂ9Ç„‹ãÁQ¦Š¬Ôá½ÕëëzŒ{Z x§·ßñOÀ©ó€ƒ( ]îƒÁJŸ_ÂLw1˜·³Œä¶v¹>ÜòŸ—üÊÏ2ÝñnXyçîsWÞÙ”b¹Â(È"¤Qögüºœ_š°ØõÏ'`K´Èå, t²µA ‘—ß[†˜RG5¢P¢Üñööá'uÃ#o¤æâ¥@4¬o(G\W²¾‡›ýJÿõ¹Œ/Ë+ÆI<<“ă‚͵Šä_~¤<÷¶ŽËžÒ·Û|F® Xo2™=û{„ðÏ‹îðøóuŽ•õòHœÜü©Ý¹ñ– {¼¢|$“!jCxks¸O=It³hǧ’WœkO7} ‡Ò¹{å|%öÍ"OVÐsêÌ™ãïÒ¯Œõ~Ö{>¾r7õZÞø¥Tç®ý»Òô¦Ù¹â¯PE™žVÏ?çÅwýžË$ó ae nf]•øù¹L[wá.ôpÜ~¾?„Çê¦ãѱÕ_£ðJf¼¸²ŸR'óùd¶©g›Gó‰Æÿ™¯ŠèàlØÑÁÑDŽfZ^ñ6‡ÁH'˜€žŸçÞµ^Ðà?˜¯yw¯\{3¸òAéʯáðŸÿãŸ<÷Âæë?ýñ;ÏÞ½’xÎÇ|ºtÊ.˜ÞƒŸ{1ê…S©–ŽÿÜËlÑȱôæ)•uÂZ,/Åã¹E’ª¸¶ÿÚm´7U ¢ìœ¾^@K˜z“õ™PŸyô n¯ j|ùýáæëÿ¿ôº–LçŸ=Ü|Ã[ºd½ëÍ ÛYÜ— ÄIPðü/“¼á½ïQ¨èÁEêkqšïd˜¸ðàÔ•E¼&Y.ké…<í¦ðòíì´"þšÇï¾›»×J”z+ÉKYHÀûóGÜ\—¿ô¾ÊžJ"6jœ¿—œÆ/j‚‚Ú-Æc‚:Hý®UQ×ÿ¾v¾\Ê¡ÿp°ŠP Ã9‰•Ò˜ÓÏCTåËÅð{벜¥û×»qé¢ <õ¨A¨]„g5U •Ðû“‚çÿ¸àùŸ<ÿ'+Æî$üç NrØ &]_͈=„îé³$ õ«ñp•Õ½uS_j’é@Í4þšf•&è@ªKí'ôá=ÃóPÉˬPžög<³ò\+œo½DË ×ã :_õÉ2oHûÙËQ©–ŒCÌ!³Å~þxrŽ˜ßÉâèˆ z„ã#—==bÑÌ| sÝ  Ïñ¹Lž¢ôpÂZtz1J i„æ{òß@^Ò5f ¿û<è<ê± ”>5µìô=Ó<<ÓSÓ–ÅŒˆH>Ú?ÁK䨓þÑ\/†z[)ÔRÅKó#:P÷¤ žaâ`O ¤þ}šé!ʪ0•’ù|µPh (gã.@‰>É0ƒŽV6X¨‘š Dý÷y²;Õ­´Zî,ýXð2ª|‚uÖÓqoA„Xh1ˆÉ7Äáé#eJ éâüf|{ПxúA0¸§|¨Ù¦²!kp©äM¡éßX+d±@X–CÅR{ûÓãLÃ`âyR`Ï.A8 ç‚Ý$Å}§â¢[;—=–¥¹ñß„ ôÙÌ?ç¤ëàþ1¶Gˆ‰ÀnÐvaq$É’ç¡G%»CÛÂFü=˜/fš•Ç €Ù0!ËMñ ~f‡>+Cô(gf8y°«}X*S_^Ñ=ÕYq³JuA’2›b/ôßï÷4Ítêû'Á`îw ˜²¾ßÄÀ8ñœ –#ª ù@÷ž?;̓SÖP»Gâg1,9¹éúÚNáÔ[v¤/!´Ìú]ß}Íf¬^K±¬NÈ•Q‹Ž~Ÿ[Š ‚ïëÉø‚…ÏõcªqO/Éýn!Ý¡»¨<÷FzÜ”0FƦÁ£dÿMÂ8`×= §S"JÆÚ”Å$í?`íIžÞí­ÃÌ:ld øSP¨Ý)Mß~0jßÚfî±îí¿×ÓRN¬€ÖÀ«†ãÑüDMÇCüIJ¡ýÓùÞëÍÉ4ú§ú½u±hÁ ûÎïê $†I½…}㺗6òi[í±Ë}Vkc(ô[ÒZïÐ ˆî¶ƒ³úÑ­0$%™g|=§zÁ²K:êÙ$³ÿ#=ý®¢C×WVªÀQ€} †`Ý”áÕ¤ñ¾BãÙ¢#~`Ü?ï·†@Ä}&¶Œ£} ÔkG[ƒKÜU:ž‘Ûa°BLrpìj_ÚØº=ß$è€ËE6‘£Òî=ÓŸƒ`ôð=Œ–AÏ/Òl¤ˆé‚—uY96ôØØÀAÈÚ˜_æližùTô…fÆycÖ‚‰³.æ}:ƒ+ÂÈbi:èw̾‚ÏÔ ­N´®àýз§É715©éO ÓÉïI&är û•íçR"x Æ{,þlÌú ¼»™_ÆSr­û,½'t>ê¬ mG_56¿ß¿6z ù 1Lݘž²À¡,)–ƒ gXgG¥IúçSHb½s67+¾¿éÎ&Ó¥³ ­T¿]‚ ´n;šOÀÊq˃-³/T¥R1~€GÁ@q™'' ñc©|*o¬#Òº9‡þUžÅt ´5žÌ£ Fuir‰!å‡ W¤â Y^hùàiØ•ª’Rï !T7¤tf¬VÉ:3zá^=ûÂ-¡9†]Rœë~Ç 4û Ù›h’ËøDá~6@›QçSIJOä¿Gü¯g$ë/‹¼UŒ¡ìŠ'ÀWB„A§3•£¡ófb5ˆÀ×ýPú›g¾è}cE‰qt,úò†ÅŠ´†¥'Ƈ|a§áý~`:“ ˜¬‚#`ð?TEEC[ÑÇA D~dz[ 8;’j¤xU`—½b„ oæ}õYÄ‚ìbÌ!øMÛ—`i†¡H§æW«µ˜°U£iqËicÛËÍŒc;ž8[‚Ô|Î] ¾7÷åH=¸0Ý÷Ru˜ÈÈ*+0ÑŽ ý9Tþž¬Ÿ<ÐÃ{²–ü¡ßšE¶Öà½ì‚3ôs–Ú½N€)žÁ&2 pG°1¨T;ꆄš“Ý¢/˜":„#¹ÒZó"aXñC#`Nµx:“.h=YãaŠæ»ïL˜÷30ŸúÖ‚Ù#¥4iøLCÏîe ÿÜbs<–ü…ï] ::Þz€d3÷ÒrÃŒzý©X:ü;ç|3šËO¡bµ_~ zò+YÁƒµÔ+4ÏÀñߦá+?‚ÜGá^rØkrm³±Sè΢º»ú·Øl/J¼µD$R0̧!)ïë>5 ß‚ùbgq7œ,?V~œI£ÞÑÓFÐH‚Å|LãeAcæSej‰`<qŸAÔ¯Õ![g:ü¿RRë‘ßëwçνà[²•¿‹ã㥫…µê¾¨¬33YìˆYwÚï°²t†iB)ñ¯\#HÀ+iK#4t ƒãPD>ãÃÛ ÉŠ4C$v{Ùþ¡Ÿca”O ÉPð›|¦%/E­ üzò``Ú$†Ê©#±„(‹… ¦^Ͻâ>W}ðþ(:6†=‚êǪ¯ÎðküqaÇ÷3ÿW™9©#låé4*#ìPžõ±PS3i,Lgq웳É~]¡Ž>ITÌ5–ÿúj0f_ǵp윱·™Åy ¬süY†â·ÌŒ‡YTŸ„0D©2ÅôO@§žŸL`7ðƒèv1¼Úó GÀîEÊ+ò}-úGY‡ÙÙ‘HFD!yÄ•ç›ÒðÆ5~œL'”ÇäÍgâ$$‚ÄOÈÀéxçU8œrHãÚÀ>Þ¾˜×ÀN¶J„,LEvùN{Y…òÝTâH8Mó{YÍࢮÅÄèÇÜÊæ£ÙÖöãÔ Nd,ý#ékÌ Vf©e5?1ZÔŒîÍ~Ú)ãÑAE§ÃèÈ æ­ ¥RŸ¥bÐS XÔ¼¤fñ]Ñ4dÍú#Hæ@çØE‹¹ï.RÔ ³Ó=óÈâ†0pŽÃskz( ˦úÿœîØ¼Ž–Š1Q¸I¯ƒ‚:±Ôfr=Ü'÷Åõ5Çx°[Nªî÷”8w7=ñ³}šÂ2>YY ¼Ës7ʸ…}3U±ÙïÐÈdâihAaO¯÷=ù™÷ Èâ¬A°|-C°Ûé-#µÔ ã?Ç3XZÔï3‹ccˆ®¡þ±°’•É )¾: fôÐŒÅdžROLáø»¨ôkÈ[Óofèÿ=ë‰ |/Äêì®:3ü@‘"1§pŠÂ©ñôA0íù¦ €Ï¬Ì¸ö)lÙªO;¿šÅR·IÔ=|Ç‹y„‘ÑHS ³0œço­åXˆdÍ0›¦q_î\´)þZPЇj?íÆí_oéC=•xß?ûbuŒXd²XªðOêÁ”mé#=ÉŠš 4Fo›L¡žkR?ïzpU'rßXôx|ñ9ÜowRääµ*ÓyêGèÉ q½-wAù’釂:Ðþ¼þñÊ {“Û“¨›ÓN´WGYo¡ývœÓ'Ça}eú×3_ÙbóšZŽG¹–s-–Ùæ˜$[—Ó˨&ó®'˜–<.÷ý„Ô¿µ¨Ÿ`&\š¹ñ302tÄP“ì» /‚Ù»` '¸ø~õ©0èò2Ü:÷ǃ…HàÉäÇLA[ƒBÇtI(ÁÑc.¡_m*;TkŒK_d`È.©Qa;ž<èh‡>Eú;m ØFfh„‰r Zkû‹{&ößxp?z`v l~6›O!ý§âåwªø{“ðXOðáAþØÇG`XDßÜÜ…tª&CÝJd¸cDDëHQÞc®_ø°mš‹ªÎîÝpôvŠ•­7d0Dü:fXü$ì1íÒ3`ÛDÝd';˰ã umðäù¯«2N%LHE[~2ÆŠ<£Š, ¤¬0<8;F·PÊ52ŠƒX0©ä´¢Øù|ÜLJ{` æ}÷N0íj²Õ€·µ Š0˜"©:~”nP;P¼‡ËÁœÁ›pt$w¨¼ Ibnš ×aÄNü‚]Ú c³•ÜÑÉÝMÒã©°õi@wæ=ÓD,—MPkeÞ°ËÜ3îm:`±7hj¬£—ÖÙ‹–Ì\ñÓC­ƒòEË”LB‚ê^HäÊîûdæ&._ùSs£¤[ôg;È ‡Æ±a#c¹íÑ miª#ç|ˆpŽŒ%Bþ28;½ì½þ|f‚¹è7˜ô}{fh‡#kGÍt¨¢fÏV‰#äÄÆÌG§¾y/ =˜¢ª!H(‡ÊOŒ&¾9iRh8V]òG¹dÌïžu T±×aÑáI.É蛀&`rhÄ>ÑGÇ´Ž<‡Zå&#Ón ‚8E(†›KÍ:zlÜuýi„–Ô:)»PúxÒ¥`Ý-R¼@nªž)c™3R:Áÿ= @~LÏ„>”i: ƒ{¾|äN€=GëøcòNÅqû4IV ’û~¬X¾ŒÔ‚ç\PÔø‡˜KÊ)˜fÊjUNmc°Ê^·•ôôƒÆ©Í%ÛFüýpEã!7éh&×9Ðub–Ar¿×Ñ›%b5—oiŽecP¡ HôOÔÏáÌøÆä^78P„Êíj*^¶–ºIbDAÓ£Ò37/»KÃôƒ oqCßDÏRב+aTb&i0 {ÒNRz¦B4â>¤-‚p’y6Ýœv]´o• zXLw`$“D§¼äzÚüVitÁ*I„Ø]Çm)¹\çlTési;VÝu†Ð€ÝgúÒ¢/LðbÑŒ1¨ag<©ãîR=ª2<¡ƒøš=ÒsA¸®lÓîYK=:>¿gëò5ËnÕy§ £2Ånl®^¤B6&ËyÐG„a(›ûe@(è¼ó-ù®IM Ô,‡$à9åν`;òÖ…Èè1ѵŽ.Ö©¨×KF™I6˜.À^<§öØæ¡ ô{³8<Ѥ4 ¦„5;‚?w1 -d³‹_ëDÃX(SϺÌkœq·ß÷Äb ã5wÉ3:жJB—YüÔÌ.8à°ÌÚ»ˆk"¦ºÔ§±YmÏfty²Æâ{îƒÕå|Sîp{YŒûLô@‘mcì#ÍCWÐ×ý´ŠìJ‹OG0¢¤ÁYô@ÐióM"‹XÌC¹@ÐÞHC¿EÆ5°Éù3É"²¯ÏÜkFUe_G®XŽ,[K€ff3#ïs—qÓ&c„’«Gƒš¨Z,¶È~S}~ä3kƉÔ6y¤à£Ñj;œ§÷¯0Þ¾ñAÛZKµžøšg#ŠÏ¤L½÷fL[´cXê8Œ¿Îï-×xÿÓ”„ôñ¶Ìi=Î3->ˆKeô¬½wðR1³U.ÄÅÖø|èI`òeÄkvbFfM IfزaŸªE24>õ%nÏ×^{åt,n,ŽF.ÐÀgü Mð>‡4‹1¤äâÝh—&³Aj\øÊ¡jõFž þ¯“bÒÉu“X 94µ~{¦ÐÈÂ[ŒôŸˆIÂUdr3µíšyic&oœi.ßÀvgž¸C×Y<®Mfñf)úô;dŸIX~˜YüîJ¾¹Í÷°Š¥oÎrÍuÊ0£ïø¹–2Qû9AjëxØ 4€ŸÈÄä>À‚`ÊÍu°Àv™N–͆g–—[½/Ià$ÌX­ÌŠ;í1g T8“!†DäÉ´ÆÔ™GwÊ(à}.æBa{¯0´’îoKf>Ì»S~çÒ6¦¤‰‰êkêXáéD _"¿€ž3žš`"šÇ&£\ÕKj_4YX€ ¾kap4»ŽÑµ&¢ÿw£{B|œÕ08…ªEÞÅo2ÑÄO44ÿðæÂMÍ—Î$zª×ÃóRâî);oØIð](¢š)°’C'is^Ì‹õÐØÁòY>ZÆÜ=!ÇæǶ,ZõçØ7~T( m}ñ›Kú;Sxhû Éhã î3,¤Ç‹9þˆ£†iÔ‘wÎÌ›²wf9'Ÿº¢ 3}/.Ç_¨?zQ:ôc¤ðw Ô°T‰Ù@â¢0.?F˜œaÝÎW(1qr*bD +ñlØPª¸10‹c_ü€iÕ(Êd2`Û“+ÙÿÄ´¸ë'r„ÂD””û"îHûªóÑVQÔ¹Ð39¿ñNxj@Œ«ÓnP1]Öˆ1 ;¹·uü§© <„¢x6‘TᣎµacvºL†ë0˜? Êd²ƒ#Ÿ!î\9Öå+ äE¿¼Ü÷Í?VÍ1@ÿ’E¨º/´{¢£fF›äûö£Ã8L4!¹uŒœHŒ<3¯pL5â"ŠÚËœ™Ð$r‚-q·c–}žU·îˆ,©ÁÐã¨{nÊ6î܉GÙ¹³ç[¾Ê“±Á7,v™Ç:¬(odùR¬M”[Ò_Ö!ûB¦×7Ò½ÚØ•‰±aF4Ig÷ÌÜùãò&ãT…n¯aN ê{©¡;ËÊÙ:þ´áxtœuZüëôvàeßF'3ªX×FªÄU»z}Æ)¡gô,ìép”ˆSˆŽeöMrÅ·î3q;š„æ¿Ni}iz$z¶pÓ‡÷b_…Q…Äw@–=2‰ *ãNˆÂ"–Òm sÆu¡d éYÜÌ6QŤP§Jû5dÂ|ãtFI*nzÜcgGR‹ƒ¯Ðpû^gƳ ,<&œ9I/‡v*%…AxÇDLìDœ-'Œçɧî@-ŸYŒcl½GëÐW9CÿÉç–è€ÞJ¸À%‡žÀ©›!”M=L&ÊC ÉLr˜ôû Êr‘IFéán¹yƨ­6e\P]k˜%|Pqºx<ìú™†r 1‰{D*æÓDšrÆ›…™ù̬à `†6%PÙ ígÎ9%вõÁE+s6!w!¤h²žpVÒX#œËÁœ+•ˆ(Æïå6“ô]D¹ [ç_jƒÑÒ‰]'ó¬?O4®•íÖä;Öþ¦x ½Üí)dnJø©°<=/½D²)¦µ.º<–߯¼‚ÞÌ÷ÃÀDptÄKž¡qâ“vË,ù…Žb&J  tîÒ§¶ñèüq³¤¢mU>”3xS+ õ½>†Íaˆ9.†¨4àyGÙfœ-Í ˜<1Ñyb²´äeç¨Å|Ìø$ñ›ïî„â ê3zœqÉóøeÇ9`mŒ*T’§¨‰0mÝrD¦ú[–˜â'އziÆ"ébq°!Ábâ<w‘ô þ(„¤Ì—ôÛ"gå/Á–t´¿ÜÖ£w>æ3-GI øæ4›Ýyûp­@X†Ç•/-ñ8jö3£mJîÕ„ N6Þl0 …Çpq¤É §®`Ô»2Ìž„| ÄûÝÑá.÷ºc!ñ9nÏi懮àÒ¬Gïv´ÂÌ^ðæcï"€¿Ÿ |ï=¶ycjð˜Å>­ Óo•'`6ë–á$›u1 ˜O69&œÊ?z3%§Ž©ÒŒüKª£ÝͦSqÚptÆr¸bÀz2'ÙM6ÈŽòI¨àÍa‹XfØ®0‘ Âìçá)™¹œyŸÉ4üÈ>C_GØÎ÷Lâaô‰Ýoô'& ôÑ93j‰‰"pϘïö¹Ø“vžÝ32ö£äÓÃÓéz)è˜(<›ÙÊO¯¥ˆh$1Fu¿?/‚¨ðëÐ¥†èd:Ìl-AºÌ :NûSzap| kM’ì'Eaؾ²|ÅÌìÓWż {þFÞDD“9”™÷›—.ðã"XÁ Ýøý%—ã_¦Ò5ÆÝ¾Qnå ƒx¿¡åNh%‹&q_v¾åd÷AlWÅ@ä2¢°FÐ,ÁSºä, àÙ# Æ©'!Ü‘q@ðÖÈv¦ `UNŒ¬° è šñ^Í2T}3ðÀ$ã‚eE¶ôGŒá ÑxÂ34²«ø@Ó÷â9é.›£cB]±{A$±É‚9¸Ÿ@ïpÀ¯F¡”èXtêäk±Ã°6g˜‰[ Ñè"Hêò•˜âw·.Y‡>/Ùøf¤¹¸ ûØHÍÓON”Ädvgà"" E3bHA”sv!«[¬—ïÌÏ®XZSX¡ÌÞ¹^ OJªãÌGø›abñŸÒB%‡7š“ý+~¡4IÊË™‹@HL ‰‡”Ìà,³ÏÓ*ÆSÄZHZøÿ|lrcôøì+%FÊ0ŒÕ£à˜IxÉYÚ[Lj=úZfÿ)ÑC~<›‰™ÊÜÚ˜ëÂ3É$v|…蕨$Ô›Tjf…L-C 0‚‚Ä%oˆÑç\Iu"it òð^Ÿ§´qOó¦9ˆFö—{ª;S/m0©( ‚9ûs fæMjPr.RÃ5¢òçÀD#3¦ôÁ‹,ÚeÍÎ|\†Ìøý䑜‰iÆ5§/8Q{z2 ½±oND›X¢A”eØnhyE†”pí°ç@ åÅ_X¬|[7R†˜,˜çÚ³£Et­#"-=dhæHK+ø‹Å»ª˜^8 …º%ÉÊðä@ÞqÆ##¹¶¼ßíó`ÏeH*ùE¸*b÷GºÛ±ú N €ÐWbŒ˜´Zû&–†QoHOÑô»†žk|ÆåívÁ §ú½\ÓLÿeª¿IW"áÜ|ÌÂæé»ÙDüºæ„riâóà!Iò0ÚhÈ÷±¤_šsárâw f<Á–[üÛ?×d]Éóä8†§ý¹ûkq‰ŽÕ¤/™JÁ ˜I¦Ñkè82‘ÌTÿ—TØar, ƒçXDSE¢šaôiñá)Ü—Ê1{TÍÊéù²?/’ÑŒõ  £I²œ׊U(lŠRʯ§ÆÎK`²Šlþ½äcÁ"dÇœQ3|-Q<&Ê&dpΊ9³¥²¶Î%· ǵÚ0(þiÊ£À‚Í7]‡3õÍK;;{œ°x'/;ÿƒ4ÿtÆE0±çÅBæ$jŒÌ:BL«Ï[šÌ1í‹-¢ÒÆHhê Œ;K&&C¹¥7 æLRþŒËèsm×°d1߀»Ò™NigVNzfT#’¼†Ôaï½¥º"ÿgªë#sœºŠÛ%g3sŠ•¦vE¹¨3‹ù#Z!”ï· 3)WÕÅ–vqÇëÍÁMÓmo1±) ®Ä~Gûì¾e¶ï/ú©Î :2jË´nž4éšeîP¾K&å3Õ›ÍÙ?oM-‚è¥lDG¦ae*4ÃÒ$wa&{š¨’<Í@\ôþwvÐDy!÷Cž ‰Ý Úœ4|š:•]Id4nfñ"N£î\æzG±ÐŽ\m±()ŽƒûhI!ÜžÍ"™©Ÿg5ú5Oü¬Êä;œN¬\¦ß7×FYÝõÒ™kfO²Hv…O)}¿ ‘AZm¦=àà`ysƒÌqrÁçTÐeHSi:ŸÅE³â\¡ˆt_ÛØðÍù†øøMЛ?Qš¤¢ÐŒñôcÕ•£ÑðÚ,š’Z›\1óðXããN[ƦMßÑ‘§þ@Bk "ah”Eqaº§XFwÀ• ‹H÷Î,¶dšá«/¯U„$JÌÐèóé˜ØÌÄÄBë¶?ßCïÂaq)Dœ#òÌ&‰¼¨ù„3IrbQÙ”îˆfÒnc/J¶¥X›ùNÂ8ÓìX-ú=çv•Z¢Œ²!ë:-fÒP`f€- å,åý`¶™tÿûië®×éZ™ëwaiÀÎVLk)^dæyëàœ âƒ‘Òõ}sœ9Ÿ‰X¼²N‘h–°]¦qOMC’“JÏTI""S^á { Ê;í4 mTgš+òŸMj8Š*ÎfÂß î†„6#i™Î¿`‘pðB–‘ 5О×N‘º–Ë‘H8-ÉÀ˜Ä1‡Œ›!š;ϸºŠbXÔa:¬¼rqÕ2Ëz7m5À?ÇJX̧‘|{›.šÈôrY"JŽ.›¤oW<~5ù#Þ5A›t§Yà?Lë63[\½7[ NòĈ3S>¡Aúàbtx!:ùc$6M¹:%*ÅPL>sÌ t‘HS6ñ¦±­LL&ƒ³µ¥+àΞŽIMìƒþÄOVH,DNê ÒØ0&;|’¥¬Œ(ç1¨jçE¦âJè0zºÿ7M0ŠNmη©7Á VqS+&o’³æ@‡îŠŠÙsƤ° ¹=áÒ @¸ŒVŠ,ÌÜQt á"¡>sõƒñÞ£‡î3N¢2ÑæôÈbHË œc>›Nd GÀÍijΙò‡ŽŽžÜƒRÎ;Ö É 22èz*…®Kd‰:2ïóÀ/ lù´ëuWïœÌ&,¯R\í‡j–O/ª‘þðR‰F û8.çm´üÀÈò}ÓY”¼.eMmE©E[… §ëžc¹xµ^õlr‘DÀl!¯¸¤Ð:®3Û Bþ›B„w²Öªoê†B©s§˜æ†1š“>¤œi˳¢ 9ôŒ&‹=Æjë¼0Q@¬n–mù,%ö²Q¥\gÆ—äzfý<ûYŽVKÎ<»§éÄ¢Bnè¦St·µ³9Vœ®ž²¹BÍ›™Îî|ÚsG3ô|1 Ì1cÚÚ”iW, ÛS™ŸãÃl®0¢„ÞÖ¨A€A3@ýwþ¯N†qÕ{,‹ÎB~5dzì*9ùf¼Ér.Ä‹AW¯qiLIM³ÚÆZ;šïÑð°* =2‹ÐÔ˜¶_LfÒ•2e7ݰßtc›È€¶õ3ž…Õ%Xí~qÉ÷ÆAÜÍ&:ë¼.²íÍá¾Hv÷Ùº§Î^Ø¡¤‹²^«“„Ð4yÔ„!žÁ5ÐÂÔ<ŒýÛóf t­oåXYI;’C:rfÅ”×IÀ–ŠB­!˜f‰[icì¼”ÆÎÉp<±¦„ô´–un-àB¾.}­ÍùDU ‚7¤Èzz ®Á棾2#þßéGCS.vÃ$J±>7'4ðåeäHª}xÚÆõᣊ„}c¡Úde[ñQ³8­ýE2ϧ!O)°b‰)71EN…ûã¶ZÑÒÓWÏNêŠd_#ÔDLdm¿4k`öÇ> sÞ‰ÉKò5L–<[k¤ñ’•™.4syÊÝÑ‘Z¤XÁflxGã‘$WXw­É´°ŽåT&¦õn8{߆›·©ô!Jª­1%[m”rȱ-aF÷¥Fªä3—a5‘d Å$ m™®Œ-X¼ÇæŽØ4Jþ.e 2ƒg.®ú<Œn³ƒÄ J^M—ü}ì:•óMAÏ%Ð@«§Efoбóï8Y%3xVõ…G'“iÚ;r¾ß\ßj—ýæ™jù›jº¼¡L ö§\Fs ª±©xlÊÊs±ŸE†Ÿraf.™è\ÍŽŠDù t:g?ýËI·³Ä—Ýá\©ÆxCä¦]Cö›µÊ*S)_Ÿd'‘£x&‘åmlu\KÙtÒM±Óy°+50¿õ™NÌå¼° ~+É\t?Àô`6‡S9¹ÀC¡rŽ\¼¥£7Öf<„ÿr#d˜ú^ø€ô3ŽG`fCFñ°mÌ™A¸ã¹Æ#ÂøeßVL:š2Çä¾,¸t*æ~Ý[Xª|QOÆ}øhF…RvAéa¿Cï%öè±x8`õ™‚Ç,± >-éœEgLRüˆéQöñš0L†˜È Hezއä±ÝžøÍ BF€´o§çê‚i÷Ó9 8ÁÇ ™ÇKËx²°rj““)ÏAg‡£‹[•åøxj믈te°>'¶ù)B?¾e²Ñ\ç¦ÎxÛnv ºµA•¹Â$1S妰™šÙÜ@å­e± 9g/äK¼’sqrD:ËÜÉÔá¾aÚ ùöÀžäeý “ê*‘úq̆»÷É„EnÚÀœÀ3óEH˾3j”á]FâÚÏqZž•7êÛ’ÕÎé‚ͧäŸþöè¡=óëtB«Å'N'βm$Pɵ6ušäÐ2S£ãSQ®â£«tGÆ+ ©cÝ,¢JSLñ4Lx`èj3æ€õ¹È–¤ÉT»0Õìl6bÕm4õoˆI ÌÌ Æ4×Q˜¤)šedvFâap–1/ÁG ìX‘a=&ª•œ¤”2ÚúþåŒÍ2“Z–'ÁKQá´¹Ôý'Cœ£]…­ÖN¤Žüf‰¯’/3é“©I¿ŽÛÍ•;XwÏ­‹OױΌG»»îÃx¦ýy e›üøŽ:ùð’;ô5AŤ^™ o5ž¿tF½ y`ÝœKeùg†ªäžÎTTšèÔž=R­C†af Ø/eü4Ï+†§æ µ Øk„]¸C¯›ZtÊ#Íû[䈴>Qó!B&Ö³Ì,ge#<ÝfªFa|ëK’õÜU×evX«Ñ»W©–ó趆‡”X€9ݳuÀ§’œožEªÀb‘ yr\Y`¢Óžù:Ý«Rá ?”T©A:…« ‡¶²}÷ô{ãþ(uö“VGÂü \˜sɼsfbÿ™¿žq̪žÑÁ… ecWCa”ö˜»…GN (¤ ™ç?åŠÙÉ<ìgÍa†ò÷ä –Ä7u C2e‡Æá™CtÚÉäd<2JçÆIxº–ž’w$ðµ´Úy–¨Üâ¢q¶=º±ê” Ä*z[Æ’L·«MýB,crA…”:(¡5Â?iÇ^"A\‰ßNÊ„wì!€(¾c“X¢ïç…ÖÂúYN‘”WÓùäó~e ”+:ú¤÷Á8 ’éTìF¥ éY è;„t9U$"=°Ú[/£«M‘¹ ÉÌÉÇLÍp—›Ñ£i|ÆÑ¹‘†ÎÙ‰3æ¹XF¦\’Íx1L†ù?¤VOöm›‹¦'´õ»'°Õ˜§ÇÅ“dÊ!z¦B!t‹“ÍWæ=À1źøQUÖð1Èk,e“é\§ g9)mê-z^LYfb–?ð@@Îïæˆƒ9‹Y#…‡_}9Ë›ÖqŒ-_ òröTƒ)ÚŠ½oªt÷¥<ñj™›:Lv0kª˜ÊÑ‚6˜øF<^æ4¶EÞ‹èáTj1ʾ5·ßë#Ø\"s.jG­Eî£zÛY‘r$Õ^?È•³LQ@D’ ¤cód-4/Sm†gzÌ ú¥Im1?zmI¾F55ÌdýèžYj#ƒH X§22õ4*a újôØÑŸ½ÌÅ=^ŒdÿõêNÜ•=²JÆÈ(3+5ýÍ9ÈØL´3¾ *s £LãøfW÷†¡lߌ¢§É³ÿÑE8’Ÿå?Û ²Õ¤[Åhö¶T²î’‘9uC]Þ}fÊ¡okb:QÐ[“¤—«ÿkš–†ƒ©\ÈIíÁ°9cgê{Û@«Mì¹Ê”=–RÃG*¤fYy85.Äþ12ÔLoR–Š2Þ…µ<ƒº¯0Y[ײˆË*¤Úº¶Ö"q™hV<–Á…˜DӨʄÑ$ h,*86\•©:1°g#sq×%» ólÒ§PägK QÉó]L®¾¸†”Kng>‡Ø 6ù{(õµÜÃìDó]Š ö lÉÚlp3ð² tí~4ÙâÆ>_î¼ÑÎC…èZQ‚hY2‹÷Ÿ¥ Ù\Ž+5ÌäFš°ÜCœ&¿º›ôl‘ÈéÝEƒy”Ý^\·Î°ŸVŽ69G%•ËÒØú™‰ƒ¦ë0~N!3Çÿ"­¥|0èw|T"¼~t3ÇñRÉûø—ð›¾5Ò¤üÚ’Û6:dªqÉ#JáèFI¦bÎ÷;˜"²z {+º,#t7"Å>vsÑÃzÕ¼8ÌD¿™š¨\Ïã’unGe]˜ìUkñ¿¥ ™Ó'Ôb¶îíêÌôíê‹ÙÊ{Õï^*øÇÆ—Ÿ“/'~)o0[füK]YBˆ{ågkßDžÆ¦{íËö/5\7õä}Óòï+įÿR«Íáµ§½ÃQt“zt#yÞçßÏ+y7ùª+±Û— úWÏç9‹ò÷šæß¬ ÁÔÞx3žÒáá¦:ìÜ=œ|XûÈÇüÅöñåYì—CïÙâ_½\¤&!ºyéïH·/}&‰á×%†¿^ùÔ”®º)>í)Èûr½~£ZÑ;ÕZ¥¥w+mݨ·ÚºYyû ÒjKhîXÝ×¹×R9sв(^ÖˆnZÈlœƒ1ñúÎZ3®`½~jz?IÍf·Vß*ÕZÐ*û7u«Ò¼YiâO«U­ïCŽeÏkäÃÏ2$ÓOw_JÌbŽèRŒêofAuG?]øœW¼]G_ÏGð§ òoøü™¡óËhùòßOz°þ XÛ•|PHPphpphp3php4php5php7phpsphptphtml embedding.php^(#!.*[^-]php[0-9]?|<\?php)\b.xÚÝRMKÃ@MZ[Á¯‹ àED‘¶¨=Ššb4l“µ]L&!ÙàA¼Ùd¦n–-xò]Þ.oæÍ3v:ì!Ÿ3È!ʘ€èúÊéÃsC1î÷1sŠ ‘£V'uˆ¼½V+ÉJIò–ÁzêÈ0¶a NïÂ`ˆÛbU|ÜO›çÙãsð4 ƒ‡)Ís‰\ÔËšI‘ƒ_ñ¸ež-x’ðÄ_ð¥¿qé­Buj®§Ãµü—\Lâ1mŽK¦¥yüªŒ(l¹Êë2æ¤ôÖ·‹Ü,jV³¾š¿øMó’Ö×5:$>Õ;]É,õ€¿¥¸Ç^$/½&Wå(GícλáudZ™ýáM¸Fý>F–X…}ä®qKº2×ù ¶3:›Ôq7®sˆï9izqÂ'5A sPascalpaspdpr source.pascal xÚÕWÝÛ6 OîºÛž†m@·¡X7œCÜìëa†`»§{-0 nÙ¦õÉ•äË¥eÿ÷RŽ•8nœ‡¶@H”eR$$%ånoõ|^ÓL*9™3.'£QoûÙÁó‹çéwóüêyNºy~ó<§Ý<¿{ž;Ý<xžjúqM'Õ÷Qkö“õWc™¶£Ö´WÔý´¦w[Ž?¨iªæs6\B”©20̘™E3)‘’Ðkˆö›{€b¹=å™~ڣȆ»P·VòmKI"TzuŒõ­x‡k¦~+‡üûÏ5-J™Ú’Y®d”AÎ%¯†^ùJíñöåø«whݽš«¹œFÏKe!«cTó7•ìÒþãAû‚ýöÕÊAfM·ê+Ž#¿Øý5 ’ª€ÜJgL³Ô‚Ž€„‹µÝ§‡54>ì¨9;ó«´ŠT©b¶mÎ,gï¸ÖbýÆØ%~{{h+þÂÃ¥J6ê÷=ýF}µ7°ãô¸Ÿ5¹/j¿â$ó¿–%J Hë`G&2™¹6±3È´fKd†~sd–pJœ@S.1á2c”à˜2CíD«H®z]¦ViÌ`3äט)÷A„7ÂM …%R(í‰!J) ™ÀœiÌ9© X1Á_T¡[½ˆ%æ´&µÓN•UÈsäóB€+Ó+½º…ÉZ.g 9e+Va߬Æ%)ËY «‘.ÉnP° žh¦—8W™k%™"Ùœ: Ë$(•E•<BOå¨$™¥ ÐÌù[ý&•¯ŠàÔ N£‚¥WdD¡Xh~ÍÎB«©fsGIÔ.ÝÀÒŠŽvž®ˆ™ÑÄó’,Ï94¤J;R³D ÏÈm7 0U¦ ¢Ôf‚šÆ*¬•%§ì², ê,ùR0xÍD Ôk¼æ° NSÅ\Ì\ÜÎðFé0ŒŸ{_×ô – 2ˆ¶II+ެק½­ôË]1º·)d¥·jl΃xA-¢>‡ADƒq†ã¿c3Æÿ8ÙM&úðûŒ CoÖþË"¯+rÈ*ç·¯‘“V%yúýz£SšM!ZÉ´¤O:Ûeä2¥[õ˜ám€ñ:¿Úíç~ï¾Ûå]K¸-{o¯s-—ŠKÁ(¸ÁÿÃÇ£áŸl˜ÿ;¼x21Üû“ó8W7G«¹0 Àÿ(ôç8 Çõ$¥Â% |t‰%e*> ̑ö«K7áæ/Ãñ&)¿iŸ,²œSù§ofå—þŒxúø~l¢`8ÜÜdºî8R¨F,*pXß°Ì-ûóå¨ Gס°ýìpçáÃÉí“q}» âÁÛ½¿uéß>û×·Ç—ïGûiïvWÃÁQ7œêÜ>`Á럽G üŸ¸Þk)Í?PerlplpmpodtPL source.perl ^#!.*\bperl\b xÚå\kÓÆÒOœÒû”BH–l @i!—†K)-—6I!ÅëÙÞ8:‘%G+ãäDœ×Ï›ç <_åùrgVÒ®%yµVß0ú%ZÙÍÎfwfïù1ïúÄO§UÃ4 UU3 ×®…/ÍuF3î§Ÿ h8£ çtLB4ψŽKˆn0¢¢›Œè¢[Œè ь褄è6#úPBô##úHBô#ú8Þ*\MŸÄ3šçVùTBÄ­ò™„ˆg÷¹„ˆ[å ·Ê—"n•¯$DÜ*_Kˆ¸U¾‘q«|+!âV9o®Æ3ºÁ­rZBÄ­rFBÄ­rVBÄeúNBÄ­rNBÄ­ò½„ˆ[弄ˆ[å‚„ˆ[eRBÄ­r1Þ*ÜT<£›Ü*Ó"n• ·Ê% ·Êe <%!âVQ$DÜ*i ·Ê¬„ˆ[eNBÄ­r%Þ*\îL<£[Ü*Y ·ÊU ·Ê5 ·Êu ·Ê¼„ˆ£»!!âV¹)!âV¹%!âVùABÄ­r;Þ*\¤ãýÀ­ò“„ˆ[厄ˆ[宄ˆ[eABÄ­²(!âVY’q,Kˆ¸U~–q«¬Hˆ¸UîÅ[…çv?žÑmn•ñŒ¸Dãi¸@¿D¢¢Gc`bãr¡h©%Lš-ÈG+"Ö WéwüÍ_#1³åÍl2zqÁbrqV¿ùé×¢wu»b7IŸVRqOdJ«©6XžÊ”拳y槬m[pmÇ~}î§ð_‰­Z6ûùˆñ1)©5à^ÚV-Fóg„F× \(™Õ*68ŸU?eMõ k‘’* ŒhÝOÏŠˆBÈÙùéç­oP»3²~zNL&dýÒO?¿CmÍH6üôt+‰åßb%x–eD¯ÄJ˜Ÿ½‘óSÖy£ZšZÔ1ûùiÞOÇ#eÙ7c¶¨›¥lÙ,ÕéGÕÖL#[Ö>x½ë^¬»µ¹XªÛœ*Dx…µ¤ju£d×=öe¼¥šûȤ 9NŒ ®ñ@ v/Ö³Rv­4"³è€SNĈ0%Ø–fT\ Æ#o²úK굚iÙÙ-Ê!¨ ñ@ávÆÄâæ†M܆„8waؤ’*W6q3RqSÃ&î!!ΆÅUr›ˆ J¡”C Zȧ‡Mþû!!X«[Q”®hU“ìågÓé´²¼¨ 2‡Ö@•»‹® i€ô¥ó޲\½3$DZˆXãÝø,\Á{5êÍjšŽCÞìðª8óæÞo˜Vr1lËÔýL3fëeBôZXÄHlqõÇ‚dP¾­ŸO ´ÜŸvÁï_D²9/EC°c³4(<câh,ÄãEÿ„&J Ò«H6)!¤-Óªªv6Ô¸kAv\ˆìí ¡˜ïÿŠdŸNˆXXáŽW…‹Ãü2’ý¥˜…õñøPÕÇ8¸wP¨cªëñ᪮qˆs‘ì/ËøJDžݺiãÀ"4©nãu/Ö3@(—B()¡Ï Ý Ú©UKЉÊzÝ\OæcÁìgåx«5À[ƺVÕ(›æñ Oæ­!t}ÐFd* u³Ä›H9Ú$BÐ<ÊC;iî¨M# ×tðùƒm¹›R4ÿÒ¬U›S†°AûéX¯ëR\Ο…ø²O1ÚêŸGY*ÂÒÅÞ#Ù¼ÈÊ*ÔÆÆF{ï,Íãl´ê8šïk | æÝˆ0Ó‰"Œ ÌÜJŒd"Îx°Þ³yc4Œ9{Á胊ï|áC=Ä:É]dùr`‘å«_¦ì Šz—÷×Q–7¥åïÙØ(ãò;åa»)ìdY}K&Q¥ TÙw fØ~ÇýèPàŒk-ÐkRˆ²)7ÁKGŽØ¢"tUÉ•8Ò’éøÑc§H™«ªb[ÍêX-ÞŒ­Iliý¸Y¡Áj#Òl«™3PíLÜ|›æË-Þ: ý“ Lf¹Lå‰Ò~¤Áo°A‰B ±6ÌT3îpB×F.'*•Plo¯\B;Š{Ø‚¦û(“IMìöSºÖM顉ÿJhâ‹íЂi»fÙâ}™ïyÞößìÒ ÁþÝlT6clCœÉnÛU=‹«E\f§%óƒÊæ¯ëOŸøãH-¶ózõÍ‘!‚ºáv"ËÙmlá²YÊ–ÍzQÇÍžå‘ê= "ó10N•µ×VWŸp]mŒœªØ¢­³ITU"$±ªî¯­˜ªØÎ€ÿñmPUÿj§)ÞÐÙümåÅÊÚýÕǬ˜ÂXÃýc`°ÅZĬ[rÉnòЏöç¨UÄ•Ʊ# ÓÒâíïMtcDt×Aœdœj£”uDÙ|60ÒvùÞÇï|ô@<1À@Ü!è#‡Ô‰Á‡Ô¡w#8N 08v»]˜KÎv<â¨úà‰?šñ¥6¯¡[nk¥aˆå‡’µ_| ½Ùsm4òž÷`{®žvÁrØ{=WP;7›D€{žêÈ…Î@Ü|­õƒß…!û5mÐivw·kËz8.Šäˆ‚›²²»{ï""EŽÈ[ƒ“éêœ.££×aIózýɶL “QÎÊ*Ž|áÁàJY¼¼B4Àâã^]\(|ZRi•¶×ÃTÚ.JÝôèMB·Á;r3²ÓíñŽØœ¬x«kk%iu×–¶s¤“r›Ê¼rL•Œ´BFÞEñŽº á14)G•nCn.>6U³ÌŠ¥V3Þù-Ò[šëÑé@Z¯ÀÑk.,lKÛ‹®ÅÎįÅ>”†›c¾­ÄlìaãþhÆ[%9Ú":è]㬥mÓŠt»9~ÆÎÏtWû›‚¤Å—¿n¢,Ýr²õ˜°®¶qL îÐ(/?-† çQ<¿ŒI¤º“xÂb|’vèâ9&SíÐÃj\5ýA=K\Ö'ÄYçúõ?„|úóbÐJ²>)äÛm†ø²ËÁ-Ówû²gú£_VQ™kù®yThâ3’P~)?g$:'f#y§­üMÉ­‰¯$¢†~êF†Ç{‘a»­òÉ‘ç&È‹C#Ï÷ùK‰ ¹•¥drl$Õè!ù&]xÙÞ‚é£)ô•$ÇÉ통!B7óΚ€–^l †¿²%râ/QPz>–@2÷â e;™¦k[!ØvÒME™NgýŽ2–[Œåö¼Ø¥[u]ÏÐóo½FiܾÐ﹤ÞkîF½ZÄV†hCóqFj"?’%âPrÄnìíH yÉ¡?Ý‹)€«¢j·¹È¹válÙ¸bÙâÀ…}`vd*B-ßµh“È­êmÅq„e¿d¤,/\D—ÓÐg6µhlåZ[±Y=ŒÏŠ„îÉ΢ëóž"G=%ÈêãÅ…T(M'†z™¶çúEˆâ3Î5æÜÅÅ¥ttÙ&w Þ88ب/àç=-/,¸ÝSÆîm:º,­C×®¿Ž°¼ÒdI±*ÊèQRËè*Xr-;»œf? t0ÿ6=«À/QÁûö¥ž%yÛñDÇo6~Aˆ(B@ѶN½ûòMˆ/Ëq“š¬cÓjƒç@ÑsîÑ*®ÿK/·xÀÏC^\W‰×Œç‡ÑDõûMLˆ9l!À»hö~ÖP«8kïCjæs¬“Àp¼~øZPc¤^tµ•˨™¯d^]ËüTÈ{ŠCPígÐÏhön~¥Ó\q_]‰íæñ1Û´À>ž. k¡òΔÊ&šËiwnÛ,G Ÿ B¿÷ðÑãgÎÃgœ×ÖWŸÿFÅãbbb±›žkÓíEûgJ´w߆(›NµêÚ˯‰àSs0&˜ìIO·P„Ng>³4+´O=¡iEÃmw޻᣾k(Á(“’(·"Hù°â©÷8yú&ÏéDòäú&Ï™Dò,ôMžðþ§Myˆc[ξÊy¢šÕ®ÆµùŠDCWåNv¡²N7•](üòøÉÃBÁ)ž<~æ=ü±rÿ÷•GðpÒ§Æ"2]5*u"ͱÿ 4V2KÀA¡Á[3êØ)kðo:X'˜Þ´-ïi¶óiô«¥m§bÚ¦?@è¶ïÙ]ô7»nÁ:.ÙNÝÐ1!Øšî4T`ÑØ†)M‡44x”Tàï·NàÍݺfa§Nó|£êH²FFP ¿QÝw åÀ$oˆQ4âVͲ¶¥a+ÊI ¶ãi”ÉY½k«/7žã“­²^[+‚ +;ë÷ž®ÜÏ7ùŸj_ò‚˜¡cG£}ÝY5ÊèwþUùû8žºYÑ^”%ß(³°¸äL¦ÙüŸŒãEçšUK#lB¨UBEYXHOÎNÑí[S´+d4{:ã€ú¼9=y0¸C%Îë}‚ôUD ï‰ÎIµpmí½ÐÂ÷!Hg"Zhîe~/”q^Z$Öþ|?*Æ…¤S-@{h †ˆÞ ML† EâEŠÆ‹TÏÕpø½Þ]TÀEY…HmŒ<þi)~ˆ#ŽFRÍè0âj¸$-FÿeYDHADHADq¤d:x :x :xÝsþ<ŒîªA‘…DQ±ç:H¼;¿»ÐÓ2/°1ÊÈgeÈÁý.ò¹ŒT¹¢,_Ì-¢2š™Ì§s›w¯¤¦^#’¦ëåFTWB0Øè2*îîú³»Š»ÔeæxI‚¥ÝÆÍމš) Öž'Vj@r] q?–+Õ71®I _ïó¿gžÆò@‹Í¼{ÿìrCÈýußò¿âþa¸6÷qÖì–TŽþÍ–ý •£³d·¥rôovì§89öú[>îHåè_ù¸+•£åcA*GÿÊÇbˆûG¿ÞDz$¤%dY.HÿŠÈÏrAúWFVBÜYh³P@¹B¡obÜ q?Çõ¡x)½%QÞ<¿·ª¹Ø4nýÝ¡få'ýT¸X(²™S$ÿƒüÿs‚Ë¿²úè…ó`e}Åyøì…³öø‘³¶þàáê*M?£÷ç­;*L—Ï;E &básÃØ)ºó×0˪cË)m—5z‡_à3¦ôîÞÜéO–iÚNI7aÛ½»/PBÓ0è„xÉnÖ~ÍvÊŪG0 k8®ÁpR:Uì”ëðš;ÓŽrÅ•Їm“Øþ£ÙSÍ‚¹xöÜð¶Þ¸&LÞïº3ê0‰Kt&ŸØ’š³U2lÝ¡sÓ†élÑÑtzß½ªÝ„.¸s*ôÏ.Ñ›'‰ûPÑÊÞ؉>PÙŠûj¹l5?Q²Oþ‹tÚÚ  Iî~`Ô>4xªal±ok«æ¦5/㚥™”ïTÐdÀ>º ùŒgƒ?ø’×u%UZ“‹÷‰[öÉ‘€¦8<›`ÏŠnJÕÖè×Imgï9ZÕe…Š~€÷5³Jÿ— J€ixâìhºîè%øÛÒ,b;:†?£bo; û¸QÍy+¼»›hÑщ VÒm§êTÕšSÝ¡¥­J*”?$ M¬Òš(Õ`J04äï¸%ŽÞè+¦UvWa85­†éSP/HëÞ·œZl;»Î.üÑ.4]èì6œÝ=Ç¢ë,¬z7ÊŽ¦®è†¬-¼ÿ®¶,L0]&ò[„~j€RÜ<åXUú80ªð€ñŽ{s¿ÅUŠ Š ’€ôpó‹$i2ÂKñK ”( „•Ò´/iÚ”lk[ôîå½íå½]uÑBÚ~êv™z%:ÓÓ÷)©›ÔT*?-¤¦k%ì&ôƒ§Y²Kqµèš“Øõ2Y/‚×vÈ~ÕÕ$Ù§JÑiêZROˆ}@\¥‰'‹ˆÞ¨Îl Óÿ²ãzs×kÙxTˆë%øóÊ\½ª’§fØ¢kvh–uÃ-uÃS]¯¸¬À•Ô×p&tM­Ž Õ°UËR÷áÉ2Oš}Zbn¡Ù-ÂnEŽÝ ~‚½È¢À Æb®n0ÿõðÌs‰™?î%óß3oÝ ÝŽ÷ï=äýäðJQ3ÚKæÏdÌC[DXMQÐLú2Fåk, ù–5]oTKSéÙÞ& é$ÄñÒ¶|‰öŒ¼õÈù†W&e{'ÛŒT¶š…3}‘/'ß%¹|Oz'à©€€h.NÂ9©„tñ¥wRT9'æ•81Õ² ²´“!du×öXÎk‡T'”D¿ùÍr;=s! f® Ñ,Ê¢«È¹‚ÐÝéK‹(óŸÍ;ËÑÌÂ’·• åÎÇ¡9ßM÷œ yòs‡Ú65Õ¶¡aß ñXWÚߦs)¯L§—ÓJÎÛȳw{+³·µ…fòÎ;ü[*vø—Ùfse¦]Ѧ-n—±,7UÒÊò1 þ½‡‚Þ¦;B2Ñ$Ýu”!‹æÜ²Ö4Ó•„àH —´®›ë¿àúòPythonpypy3pywpyipyxpyx.inpxdpxd.inpxipxi.inrpycpy SConstruct Sconstruct sconstruct SConscriptgypgypi Snakefilewscript source.python^#!\s*/.*\bpython(\d(\.\d)?)?\b digitpart(?:\d(?:_?\d)*) format_specN(?x: (?:.? [<>=^])? # fill align [ +-]? # sign \#? # alternate form # technically, octal and hexadecimal integers are also supported as 'width', but rarely used \d* # width ,? # thousands separator (?:\.\d+)? # precision [bcdeEfFgGnosxX%]? # type ) identifier(\b[[:alpha:]_]{{identifier_continue}}*\bidentifier_continue [[:alnum:]_] illegal_namesœ(?:and|as|assert|break|class|continue|def|del|elif|else|except|finally|for|from|global|if|import|in|is|lambda|not|or|pass|raise|return|try|while|with|yield)path%({{identifier}} *\. *)*{{identifier}} sql_indicator>\s*(?:SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|WITH)\b'xÚí= {Çu )ÛãÛnâ3IKÄ’,ÙIœ0¢hÙ¦l5²¬ê°»äZÀ.¼ ˆ¤5Š{'½Ó#IÓµ{Ÿqo§Mzåê÷õWõÍìÎìÌìÌì.o“Æ'qÉÅ{oÞ{óÞ›™7×ÿ–¢ÏñsÂö|oÉn÷ ê¬õ' ]xqüÉ’øÉ€?Aá‡òÁ?IᇕðŽß¼V ûvßé:^?LøÉÏø9”žñsK>ø§(ü­ùà?NáoËÿ ÿ¡øy—ßìØaèpj9lcÚ5‚1%|ØÆd¿ÝÆD¾#~Þ-‚ù]©j“\ËiúÝ÷ƒj{à5û`<Õ¦ÝéTW»×s‚rq¯+ˆ2ò¨éêvà:aÕöZÕÐá¹»GMÞo†ýÀõ–9È{³ YuÜ—Éjä~ ƒBöûN«êÙ]')þ§âçChâ{a«ž÷ñ(‰s èGãç#h»1\ œ^ÇnNpÈÃ4ó`~¦£‡$ÜǺv¿±Âu¯o¯%Œ=œqE¹¨]FQ®gPð§¶G•—aГؔTå<–…ÉTÎÂ=–……ŠqÉ‹DN‚‰ @Æ÷「Û#ʈëv{~Я¶¿+ùÏQeT‹à9F'`ŒÍŠŒ1iÁ˜§Œ`,âN+ãŠëu\Ï©‚}'RSº¾ ÍPÕn6ÁýÐj&(º– ÊBéƒ×œõU?hUí`y µÇs"0fN(ˆ*š¾~>°ûB—GŽu‚ªGòT.pÆÎÇ¥V‘‚‡<ÍO(»ë·Ü¶+8ü'¥¦8 úieÔzc`w0µ¨ù¨@jÇ±Û â§ "2?]‘YÃŒÔ"©þ>#—:n"Þø¸mlùƒFÇ©’V‚y²(&mVŠSÙ˜¬ÐS…QY©s…Q™JŸ)ŒÊ¢Íé¨,=[•õxŸ+ŒúIŠú|ÑjeZš/ŠÉ”t¦(&ÓÑ E1™Š^,ŠÉ4t¶(æÓó§‹b~Šb~¶(æ§)æ9©ß¥ÇL\û¥ü8̽Î+»gjVÐËXI 1ãü™HÌ./@b&y)¿òw—óã0æ®äÇa¼½’‡9Ê«ùq˜‹|.?sŽÏçÇanñZ~æ 9\)„ßÓ-^½(&3ÙÅñXÄd…^-ŒÊJ]*ŒÊ òg £2»´ £2ólFeVÚ,ŒÊŒµU´Z™–œ¢˜LIí¢˜LGËE1™ŠVŠb2 ¹E1™S¿^“¹öµ¢˜ÌÁ;9‚B„™¸v7?s//Gë@qXA~$VR¯3Î7 1» òëæÇaåôóã0ËäÇa6=?³öÕü8ÌÎ×òã0 _ÏÃlûÍø)fú0dwúU<NLúFü¤Ùõ¥¥®ízô[?ocßÂ@;èÓ¯oÆOšæ•'(Üâ'lBÎ_…aiφ\¼©8’6¦ÐoÅOšig™ ðsñ“&Ï! î.{ÈÏKœÉi ÷ ñ“æo·‰ ¡éôHz‹Bþbü¼G‚dy0 øKñó °¿ÞsÐ/KŠSùôë_‰ŸtN‚¦ðé÷_ŒŸ÷³ï=ÍëWI²vÅï´œ€Â~IR'…eÄ~5~Ò”fÆ<Eû5I! šøëñsTdüFü¤ uåþM™KâSˆß’ìƒKÞSß–ÈTÞÓtí#÷eIP¨·¿Á’z£€¿#å©*)ìïÆOšNr¦Ýš+6SÜïÉôb˜ç6ý–#Àþ¾$37§@A¾"Ùzz¢‚B~Uò6€Óx …ûšÄ jÖ€Âþ¤ÅTòŸ~=~Ò,¢6éOþP²£Õ~#~Þ©f$¿)PEÆ‚~Kr¯T<ø¶–Ï Ü&1 ôGÛé8ËvGz[R¡Tíù= øŽd\q r{6#öÇRËiz ÷'j8bÔ¸)¡p*E´8UN¿þ3Ék“9…øsI‘1„Û¦!™8—å¦ )i(•¬¦€%5{»ÛhÙôÛ¿–ÈDß**ÿo$—êØÞòÀ^vª×!vÙ0 d+“”³âðï¤hœ¬º^è¶œØÕ(ÚwâçZ4Ìœ‰¼+U+W¿Ÿwñpévôâç- ,L¾üG)Ltíe°æS‚ÿ“–ªS„ýçøyˆÁ&=—‘¬‰eô)À¿JȼͿ'y£²Yø®dðÞ Ûàèÿ›Ä@ª›óïR$sïê{R4Ô¦ö)Â÷%GK×ÕH*V%B(ìÆÏ‡ °ÑÈŠbü—‘zÔS¥°ÿm¤ÎÛ(ÆÿHJ—ZþH!‚ëòRJVÝþJ5 ‹?’ª|Ýð[ëàÇRäXwN‹¡ÿ$~þoü’ª‡]ÚœZo½¿â{pBÈ‚‡Bõý£nQjtN´‡ Eq :„&GÎñZ1ɈÄPìr»$ 5ÆóÊEc%§#JNéoÕÑŠ(Li0ŒprÌÎÐ_Æ•¤plſt·éP*#*m|¥¤þ qáOÆù'ÍûÖ¼[óþJ¦Ï°ÖâX¨AƒK¥“ÊP•÷.OžFêŠëYõ†¬Ð¸±­áV'ð;µ6 òHy®G‹âäË9¤´¯ÙÐ\ï:D¿V-îøÔºnˆƒD5)@i¿?49c–jFò¨&Åñã&{Å/mØdf”â#j¦£êF«4Å÷d&ßbÃ*ë°CÎ:>f²;̲Œ[K9~¨p¿¼z*^¯Ã¨oH‡2ïI< .Ømo™ÉËdª®å’y§é>¬æ}uÅí8[ÆþÑLö…òr1~Ï8êo™£™ØJj8ËR\ü©27[o,Ô{7ÎÝ\ZŒžðã<ü1UoXJ×à¹M·Øy+y¬ÁõV` 9$h).uNüá’ÆY©UG™’îÒ zæ»8²~§”»-|4]¼ é:½M©Ö­šÊ©®C¢SÍíæ–¯¢iù<RO>iü çâx¡¾ãsÌܤ…B”ÝŸwx~iÃ\1˜byª2ËìqhXâŽ>éB::Ò«±ÁvTaÕ42)¹BG\µ$?c&}ÑÓ‰7d(OÕkå)kj3w‡®!3õ'7ÖHiÃÖ†ƒÎ­\йd©lBôe¿õE­ '65áSÁЦS¯èÊÜ T½feÍ1:C«zL!p4®³€œoÊÌq„’‹Óñ5œ ©Eãþ*61…xCÊHâ¥^ l—ù ´=ÏïÛÒM3äëÉRÔSžQÝG4…'EÞªB{ÆfZNÛõÜH™"72LØïÎ<žÁ¾àç8¹ksõpjSÎ øõŠURY)ÏÁ¯)Þ}_Pé [Ê–URÙ_ú¯grÄ,ð’lkr ƒ'ì&Ž¿r‰wÔ¸K  ª§Æ&nÖqºfmq‹’Ÿ›”òqCŒJ“ÏÑÂ~Aiå¬U¬[E£@ªÒÞ2·çG¥AË©ÎÎÀÜÿù!JÜÃÌÒµ*k®2>>Ž&''³[é$Q3xËN ÏiÖ¢œ¦Qž6GIùvGW‘÷ RÝ/1 æ¬÷‰÷ËÖ1.5+Ñpæ5I°be‚9¤ëü¾æýïñ&ÁüîIÊ„•O@U®pã2 m O*ÐÒ¾ÌÒ$d½±4…ƒïàæôBô$XNi°¾jÔסëFç-ÁºqË?èFŸ z‰©˜òPÉÍGPsBµ?èu¶>žíÕD« óãAÏïh ^¬.¾·vÓJÕb0¶`᢬o¼èÔ6Àë0¥ìZ±–HY—¼è–2?*´‡dö…Œ~4ÛOæÐbÞÆXÀˆ½&r¢4 ¶3©O®Ï¯i$ ÝÐl`Ys Gßj9­TÝ™9¶puvÍ uÍ1O¬Ë ˆÜÏjÀäEc£•*^L$´As9i.)˜[!”;œ°ÎYÕyÚÊ L³N õÕZ}¡¾¸8;Ù]«dO›ï×5æ{T`2ž-ä‡Xýr¾C¢¬àê©|½aaNã·$R͈C(•Öÿ°¤1æw3Œ\VÄf¦M73hV (06[<;¥ÕVY&^UV²Lû¦=èôÅA…Î ?”èaᘵ˜=þ–âÝ[¥œ5—©96f:‘×&“”a†"Ç岦²™ÎZè´xXÐâìb¶|+Keé~5—[4#a)Õ•Á ÛÞI‰ÇK:¿¬d«ñˆÊ²ð‡N?ñ“ ’öLó ¿[2}†sÙt2¿B{,Ëâ"Ʀ •§fa6䮩f/^ë׳û+Y‰œo³Êš±½²C„4}Ôû"Ù_¯GsÄ%øßANÇmÃÐAÑ”(‚®Äìuí(ÂKÑrÇoØ`3Èõ¢hE§DÙÃÄÛ:Q»„úÁ:"ó}/àAd‘7)MM"5­‚m#զѮ­Þ´MÚSÓü?J3Œ³Ù ¸ÊÞVž…LÓc\NÀ`žüéTÉøÑ¡M—vKq_Lù)÷jN7YË4ÿt»åËšÞ4Cež¡d1zl™ Á*#c±KÓÉ Ü“·ê‹7­-ZøŽF_?4XôÎ.ŸÍ— >“(hÓó­ Ù£ƒZI©ƒ…œ:°òè@èHëyBUA980% g¶‰¥­X‡Í;å¢*¹£«§ [·2±r¢¤)ùm¾äüÃÚ¿P,fJõ°$Ñû¸]°H'Ì,f˜Hž9`ç<àý|˜FWñð„,Æ@uO´5«;Ɉb£«;G“8Ž2\$?jŠäQ™#«Æ?®«ñœkWuÒ l"åâ‹£ë*øÎ¹ÂaJb£ 'EUOîQlpîoÌd¶ &¶bZ°P9fÎ|±˜M8¤Hº%ÛäCÍF”ru(ÇtZ#+>è$ü®:RÑyìO»¹ SÙ* F2$Øæb¾¼µÅ gc §ôyq_AÆ{š÷¿­Œ«$ë´SÙù{¥ —ÌxÒp¿Œ6Ö¢m†ñ’MWŠV÷øøxÎ…ˆqEb n©Í6 8´ãÊ‚<¦$Yâà´¶£Ú¦rI•kß¶â¾¶ƒòÚòf­ Ë«Ÿíð\z€eÔÉ…ø¥ùsóÏ]FgÏ_š¿x]¹ðüéËóèyx ç.Îã¿.Î_8wú¹ytúÜåù‹èÕ³—_´øù%~N Bi2:äç¶Aª–dç½]ݲQ4ª4:âi=k "þm‰²A¦ŒQLQsýÒöÖL–ï\CST!Ûä¿#»®]|·×™Í®?\éÀõ‚ÈÈ–®/Ì ¶HUg D†7];vYÓª5ŸÍ«ýs9ª0[û™ØN°c Ùõô°©ž45ÄrÄ;×2}§°¾ÏË9fÊ)å-»,eÑžÖw4ï‹ r*hd™¹0¶Á?c "Ø·2u\=±UX¼/yÀl|Ûth—´g±œýŠÈÈÆýK[«V%Æ>à«"ï’¬zU—üóy«ãµuš£:2ѹU”BF§|k»x{¥·+é[™o6grrrçfsö ›š¦ÑH5œ!ÕûvZJ#ï¡= ïnMKå1ÌîÚ‚P³»ÍmP_f–_ìÉìnÃ@D7-Ų7¦¥2j&˃÷ï´”ÆGv]!»$øn®öf×Ê+¸–BàÚ«5c¹"Û®™ »¬iÕØøZ^íwrTa¶ö3±Åé*L`‹§«âzʘՙ|ÿMWÁFö˜`¥·6=ÝÌäûo&U…·ìrîyÚeíEì#glÜÙ?¨c•{5× D†7_%¨^¯úµUý¦fPöl=lqþú€µÞ_3Øp®£$ ôÂ]†f8è%ÃÀß30=¤aú_°øC¯DŽ^áòù¹|Y±X0:H$Ûàrœ^b:¡#Ùc/Ÿ âQü|,èùØÎT\éLÿ›ZîkÙZÌyþ“Ž©a³E gռѕhî²>…wÊÊ'øÈ{£ kÓ'†bTêSòæâÔñÑõ×8uí^;õUqŠì”l‰j¡óÆÀánqV4ecõMXÙºÓ…¡¿’…0d>ä^>”BëÏ[º3\‘Þ1PŸžEÕYTŸšEOÀ?ød=3‹ŽÂ;ÿ¯Î¢S§fÑÉ“ äÓŒLGN؃eüd›â€[È1ÍZ8ÇB»;üCü z^>¹‘mÝk–§­¹JÛ µÏptäSËO¶K(iNj{L’ uÊŽÙÁE©îWqÏ£Û6öË&öqÉüÿXàŸ;,:ž/ïqDéýT… íY¾n;)fÒTŒâ27]YÂmXìКzƒœ˜7fÔŸ|Ù›ª Á|Ùå`Xƒô¨C æ³p{3cYsÊão’#:ÒjÍ¥ ¢t†£¿zN>wðÞD´~°®JsG%@g côÂ_Fû2z6ð¯9Þ·oí¶ çÀ9Z÷…ÐzÎ÷¼ˆËÊé†@#‚.:íAHž¡Ó·æÐüËgмwÝ |Ò2 3à^ókøÖmLÿuÞïŸñ^ éø ¹·|Á‡1:‹Ç]Á ‡‰3gÃÓÏ»æëóAàýltZèY¯Eïî ¿¯¡Ï:ëèœï_ôÐKNPÐy»ë (*¡‚ À  Ñq¢½| ½|Ý p…¡ N@ŽIš±Ä1AÐ pǸˆ/¶Ê—ú¶×²ƒºDº\ðÁxÐe».Ã÷þ .¯ƒ"¯x ,ë9¿iw0þÏmú-§2ïázÞ!Ëí…xÄ |‰^yézÕõZþjˆ^sÿy÷º‹y=lQmT*`´ú³æžwz d¤ÆaÄØ¨rtf€OëA±úbгë}'´æ^µ¨`ŠÏÚÉææI Ç´FGrAöAd¿w¶Û~ü•¤I¨€†ú`µˆ^ gãaäQÅñ“á GÎó#wÜ8´ÌÌ®„`ñï I¿´¸´„À}Ý‘í­#èÈvàgØt]Ôp=„`ÇÇÊ æJc ²â·P³ÛCMß Hm7ýnŸ6ÛÂç†öÔrñÿëÐh#ǃ¾"ˆç ºàÈYsšäGÃÃЊÎÜG0¶%Ø£‡£coC´b‡ä f<²^?ðåP³ñÕ0"Œ¼ÇJ·ëlôp8è"¨Nà W&€^¯ÛAˆÞt{|å?&U~r€÷”æ¬þo”¤êo€G™ÔðýjDq¬–n½N~ÃGcÓ]Cø-ÔÆaŸKü¦ã˜XýXÁ²@Ã@¨KÊu×YE~ãuˆ%±1,9W´‚ãëdˆäصÖ/ø}*«/$,ÍJ³Ïˆ1ð=NÝàöA©ÇIÊ•ïþº,} ñ ŒÈí—ñ` ¦«‹s<@ü¾RoMÁhÏbïWÝV…|Qc_™p[5@m¥sŽ#‡¹ñ–[:ð(W P†|ˆF°›-g¾}fù×ÂÁÚçŽ,¾¸eHÎɤS½Ò WIîÛ‚}zµÕxö…îúç_<Û{éRûÍ×^\yåÕ&æUZÝϾtéõôy¨ÙWÍŒ¤‡7ê7PýfrÇLY&–ÜDè„M»g>_òëcrO'=×ó¾‡ûÐ8cããÔç;·º¡Üø.-µœÆ`yi‰‹7ÈÜv " ”'¹ÑÅ%õÚ§nâ̪UŒŠÜå: WB¡/û Ëa R4Ù„lj~TÙæ<=õ$cTx%Rúbëår•EÝUÊkl[©ñ‡ 75t¢BÌMÍa¾ œ›}&ûpÞ»së‚¶¯•ú «BrÇ7-Ky´ê^Qút— ˜.Ìà¨ðõ+GOáXl§Ûë¯WSåËÅ[ùŠMìWá 7(±'s£’æ2Õ{Jy{cbÕG×kB?u€(àî Í6‰{s—I?žIˆJÎq‘ÌvM5ü”‰sÝÁ’½zÐä0:œ¼‡Wn„ß”!8¸Å¼¾V_¹ñäM|qH}áxõéEhø¢?êõñI»Ñö‚þõÅì›C—›ÇT—vo>š‰ ã8–Ú“9(gbËîÌ~M®Ì MFjÅi˜0öm2ý†ÓôÐô§"åà×G¿ž¯ßX°«ož®¾V^œæn™Ójú©Lyã¡WíÄ'« ·_Õ+>?©§ž”HÉÜUs“RÞò"©P7©õUÍûw4ï…ãØgU]æ³›áë£%ƒ«Þ«‘拚÷¿ªyÿoš÷?ѼÿwÍû¿æd]d˜ôYµ]~΄v{Øôb(ã€à/4åþ@óþ›š÷Éó™îVªç<ù‹vsµÓ))‹Iu“S3Ò}ȺI~§F2I†>÷¢Üi1 ¡8j7‹°Ö,×®®®Ô¨ÿ75ïÿÎ`êBòb‹Æ›äs[B+œJ(Mj4õ!¹ûL´3Â8nÜÈîYýÚJnÊó‹Êª¨FUalh†ø’5[ê7éo™7 oÿà•·Æ¦{ȵÜsyÝ%ƒ Âÿ„Oá N ÍÍ”“ m-> ÔÆW§-áF‰dËÊå±2¹ÔÖ’’Sɶ1Ü P]›‰ˆ×æÊ 'OÍ^¥X˜l§9³8‘U3Y|2KJ´i’må¾Ó\Ï„+“þPæ]ÊÐ"Û-Hruáo¬Öeà± áH„~9N±:­²–'IšlòX繀鬗ñ„f¢5•f‚fÕŽ¥Äì¬øƒËlÙH¤Šz­Þ5,$á4§æù!ÎUá,NÄŽÆYÈh¦` ßÎ;ЇÅ3n‡Jêû …Aj.F6 =ó_r,w‘rßG|HÓ·*t¥s5Ø$ý |MÒÕúÍñIèiÞX¸ Ï)NÅTÖeV¹*þ˜.I5ÝÀ^=•½eõQe‰3Ã9ŠÞàíª¹­™®ÔzPÅSt1òf ©•°œÕ~O ~ÌÔ¢c¸óI%â+Â)ȱlö2­Š¥””gðŠwß×ùTÎËjS+ÐÒuirŽ^ŽÊÔ^n^"­¾ ®ML‰¤­à·Eq·žÏf‡‘Çt¸9nLÓ‰ýv1ß-xUU‘n÷Š“(8­åƒ ^ÍñÛó="!‘ùXʼnJÇ¥¢ÒeëùÞ…È}†nSs5°©À·Yûñ¢åƒ&y¾ÉîRK;äJ(ÇOÍý²vXì²9–¸¬M«÷¤.?jf€^œfã4ßæm¢­Ë)5¹ò-Æ–bc·&ç½ßø=e;9%¯yLOÇs8Eî9¹tlÜd†Šû™3Ídó7ëêjR(Xูþú?]Q•Üþ>ì­×v®¤·4"²•ôªqU‚3 :¬‰2n›Óö+nÒ-×Sø8WdávÎeéVKÓTQ;|m5·M&ŒKvƒd—|ú~ÙŽñl¹¸3(Úä’Í…xCP´ ÀÈ– ®$Ëã´¤qxïû"[´Èn‹¥L‚ìö÷V³ ›Íð0¼o‹Qn‡8¡WY?®© ¶—I²¶hóL6ƒ‘=_ØXÉ_6ûCEø6ÝíI&ÏñùåhÕ|Ëö¶A>ï`„g´© ¾£;×âg´aþ €ðd€lwXü]È}‡7Í‘•x‹a¼¦wùÊ]Ûƒî,ž@Ç»HƒFüÚÑŸ6ý›ê˜äQkÙmb½áí}8ŠgjA«ä—%¶OŽ8z´}®¹â4¯!úMôWd_nóôç–#QL¦…(ùu *‹‰7™È/l³~`B«å„ÍÀíÅ Œ9‘®¢mbNŸ,¶ˆ€Ù SßpÁ²PÖœpÔZZÒï”d£>¢„b§†Ôñ1Nù—£­mX±D}dg\Ëoâø6?M¸^0öËO”£<5®9¨²ùa/Ç”ë°|´í$¡•5¥àtÐ%ÆûS‰C~Ütú!Âxˆn™¼¶ÊÞ“‘žÍ•4ê„àÔLCâÒx7 ê¸ý† ìø€ÁHÄ.„‚}豌½®ëàp@ ŸÆê`]}uO2MôyÛ½‡“Žä#uY¨±‘lµò¤é¤p*‘Ë8] …EËÎÔ}2wÛþ1n ³‰œûÓ¦uIš_Ò¼ÿeÍû_Ô¼[ó¾èêü¿5È ìû¹›3 ת·_™ªœ³äž.Ëä“Í`Çñ‚ªnéjÜJ«¬ãN(z|ÜJJ>M1˰HÖ¢®äîç=)Y+KsõkZÞ}£V!çÐVË™ðû˜Ä¯?‡3 >"{,ò“¯ª©\UÅoÐVÒ´™yJ§µùê¹K7’pZ*hÅ$Ú˜d”¦jS…p¨OT!Ø€¢ÚØKlÞ+±ÙMžLe:—©DCŽ,[9–UØæå¾”Œ¤*N,ZSÚ­3²¢|C[(_Âg2¯ã’£eZð‚NË" ¥jò;øÍY¨WëÓ‹sÒ7þº%¯hJ‰L²êL}ZÍ_˜ãî„©®Äò5´Äê‚>HJn…6æ¬9¤xmÒÒ”4² J*‚;² ~XogXƒïkãynë|Ht@FôY!a#µ›Ü“µí>PLÈá=bþÉz ïfÝ=(×݉ê§ñqÇ-hW“Ñß±\-kÎ>d¹p³øQ‘OÂåB½C`4½†A˥Ƞ>y ¬A¢Vpò”nù·u”™*‚n_>YŸE§à}~œD§P}¬>›yÜd’DLS¦u_ŸFõ*ªO‘c1Ñè‰'ÐtŠ8…Ž¢:Bõ«è ÙçZ²ÓÒqçÊ‘)Y‘-ÅSœr”"Ýñ—ݦJûóyLž"©ÅÀ]+–üÙ¹umŸ‘¿Ì^ƒÏcÜÊýΓý._Ñdg½nm`•ëD¢+óbœZ¶6>%@Ða\ž£Ä¶kCî§þŽàoËXÓÍ|ϬÝÁUÊ%ºJ(žRõqXcN¿¥yÿš÷¿ yÿ+š÷ßÖ¼ÿWÍûŸWÒgLkwúø´B„äÜJÓzÏ¿/©?üÔ<ù°«¦Wç.Z•ñ¤®u=ЇTÍ™°ÂbR?ÛÔÛ¸Vce/ º¸›‰Þxvñ"ºˆû[þó‚ü/ U`Ñ·î²Æý§¼Ë%½ßûÛn^Ñû Loî¿ùœ ?]XÁ]ó6( ½MÒoÝ}÷[§ŠA· ª@I/ Š8'„ƒB©Ywݦt·%¿(H~˜¤û[ðK%Í'µ[÷Ápt|‡3fR ’þ֩礠“{y»Hz¦@³%½)CózSH:[@?-èánU§k|7{» ’S‚JîLw¾šBæ…Ü.w$€—<#hàÃR‡â(àù’æ“êšÜ ý-á^É­SKWÐ…:ÕµŸå÷ùS©®Éý1>Û&å…%½ßûÛnz¿a½¯ý,ÿª ¿*Õ5¹ç2<Û¤ŠuAéT×QÄ›‚"äTסԤ;_ÐÝhJwûWò7É¥T×~<(i>Ù©.|£ÁŽ*f̤˜íé°×¨S]A‹%½)CŽÞ’ÎÖÐÃë‚T©®mÒ¦2;Ûª’«‚J’!HûÌâÔÆ’  9Ïu\äg5öp`bD«dèUèîù/ÍûÿÔ¼ÿÍûÿÞ@ÙïÊ€ø“óXþ,;Šc É'91¹¤*‚çáFIÃÜ{㮆–®[ßÈ3yÎȈl†/Îpº×´Qw˜H5p¢½ÇaÖ‘C?Þ Ý’GCºE7m“íL¹~TÚ»u¡\±ùƒ‹éŽÓ‹{%7OGÇSZs96€ÏP"43Ž÷Ò#V¹c/‰˜ÿ\¦šRegular Expressions (Python)source.regexp.python®xÚÍW[oÓ0nו‹$$Æ.hqK¬>6¢!$xàaH‹ÓÉM½6Zk'Ý5ûï¸iœ:nœKËÉ”ãïøÜ¾ãÞ­LדT®cÊè¡ßÇûá¶?Àax¸Õªä×½œút¦S5ëlK%³Î[©S3ë´¤Îr*o¥ò0ù.¿ÖSy;ûF˜G-mÓƒTj^·´ÝÒ–jáN*ïj¾ ɨ0I#È¢>áP³CANzälTQjj¤e¤'±·S9S?ã(`vÉQ@ƒäU·AhWÚX’&®èî%ëi*- !b¾ºmäy@ž¡¹˜ÓI­W—4$VCÇÊP }<"°ƒýãPöS¨å#ÔÔí³íÃ!»;æä¥Z˜ çÜ”—½(“õ\–‰0ìq6AB“Íó‡Y*?Ìfùa¦ø×•Æ-ΛeGÁï&àxðŸ÷ÑüqÿíÁô¥Õu{ôb Ù˜û²·àè<ê3ZÑ‹Ôhµ¢Y«—)çøH’%Bîé÷ð[÷Sÿ‹#h$¾Y+ΑÃ4b3ôZ ¿³î\|Վц„}¡…RCÄÙbê÷E@çò~†·m¿óÜ-ñp$غž—dpMªÈæäˆpB³ *²¬]§ÙðÄÃsbti¡nóø‹'2–o]!'3·f*ƒcQÎÁQ@ Èh(–0ÏL0EþË{ ²ƒÖõ‘}MrÔš6ÒEžd(öÜàë0ŸyÍ…®Fœ&fíˆõzƒ’€[ȽëìïZ.¶/öìƒCO¾LÒÚ@§ ÀÜ.Í/ÅCÒ7º¢VwA,ž«ÉsgúÏÎ*YGÞ2ôXdh”‘ÇŠN{S/ôû@ÍÀ9ÉÀ›);¶qŸà®áþŠ÷M™ê„Øsu `µÄp‡ôƒl>êk,b9‡`*ÉܯlåËY–Bqq)¤¤¶ö·Rûn€²[•~²Tž`àŽè¥2F3/7á³2’m°¿’îó&Íf}Húà=PÆiýOK÷­¹€¸DcN µ-' à¶ :O:?z#¬ßܰ^ÚpÊì<Š)CËê5 èçÛOHÞù R Consolesource.r-console¶xÚ? Â0Å“Zuqp\ÁÍà «Ÿ¤Xbš¡`/’?‹øáÅzb¨Ø·üà^^îq%ûhÜJ0Pw²…úpdßš!ëÞ'—#çÑu^ZOv,‘it’yôÕéL°J +twÕM£a÷Ê€37Í’H‘–œ"+xV8-èí{Õ ‡+6,žT¡L^™e•—Yå´'gÿÄ“Cäw½Šç!êz9oh¾CÞ(¤o §UÏGêõx—6‚RRrsSRprofilesource.rvar$(?:[a-zA-Z._][a-zA-Z0-9._]*|`[^`]+`)7xÚÍ} wÇq¿h[¾âÄ÷Çyñ!ŤdÂ$h¿ç艖A”`ƒ$Œ…$&‚´šÝ™]Œ0;3˜™°Ìäÿ)ÿ% õ«£Á‚¤G/$¶»ª¦§Ïêêêêc~òŠüû–ú¿HʪOšdzšuíøÎo_‰ÿ]î®…»ñüp›î ÏwÏÂ}qm¸iµXde˜¿/©ÿQ¸Ù²œvyUÞN³i‘4 àà¥WÕÿ‡õ/ÕôÆ"ë²&xåËêÿ(z¥H“4¹moá¿òrá]ý}UýoFá›êr5ÏJí×Ök»&/çAê_n0—èß 7/’¼´§ßeL$MgÿvskC{þwêÛž/ó¢ËK_øß2iY#ÿvÀ_sÏKÊHàÛƒ]CN“¢p¡¾£þ÷‡¡B±ÀßøkxÂ~o j¯¬IŠÛçI“'“"s¿?(çi¶º¨šÔ=ÿÁ ¼Cf±p?°~Øf?´™2=þûAÛµ]Õ$óìv·ª}><ˆCÙæ·ƒNó“WÖÿ»ôò¨Ëß2!ñSõkmÉ5¿Ñf\Ê ªà¬l7²2ÝhäÕZÖa‡ñ[Só$y—-n'ÓiÖ¶ÍO®{’4ó%óÚFs}¶?~q·žS ë-Õb‘ý(Ù—\ÉþjeK«åä/+Û‹Ùå?^†]ƒì¥ØåÆ€½UÌly™m”ËÅ$kn·ù¼¤x‚7n¬ÍZy…tm™†Ùùá+Ïû÷GU«I–›ïÜÿèW·>¾G{c o¹©Mº›„õ?örOB¾zM~¾æç5—Ÿ·>Jn?Ûºýoãºsû_y£ÿô£O>ýøÍOl0qjâÓ§L óEõ«¾¨÷o]©­W¹úêÚ¿2àçk “|ŒŠäà*Öþ—[ùëØ\‡ƒ˜Å¿F~×"ÿûÖqûÆÍ—i>—‹_ÔòítØÛ¨º´é0øóÚßçÔ°?øì|üæ R ú5W…‹·^»u\¾óü:”pãlYuYj²®Y×püÏÒ9>Þ¸14MwÙ˜žP±¦(UÖN“:‹²çøÒ€_¬á¬4›åe.L&ùÁëK #ÑçP‚_þ·K°®{Üx™î„³žÒVËfªå½ñÊ‹þ­ ßx^à/­#n>_ºDba’Ísë•ë’ÿY±Ž?ºùÎÏŽ?ºõâ1üÍçda¨Ÿ¼(/q:]â£ãþJùÐþõ¢||aíÀyüï/Síª5¼(‰/>¯Õ¿þsS“ŸÜL&“&;Ï“.ë“IÛ'ÓJœ“>IÓÇ[p’öt›æ&*qŸÌ›¬·è“"o;rÇÙÙ2 AßéB"õ£dYt!)+Ïó¦*!ùäÃl¶]$m’geE9«šÅ²HBR‘”ó%M"šæÖpR£²&Ÿ†¤ƒ'£½§Q &¹´$¹®ù iOP¹ÂogYù”ê/±cRj›d5$¦ ôŒWžX½ÄäEBÂæT´ÜcËøøœFyb#sæC5 qƒhí0JR“ð‚W¬ú­fÞ“N%’ ÃÝÃÓÖ•Á Q¦Üð|3‡Ø ß”怾ÃÜ‘¢x½¨nšj©µ~D<É.U:ŒôJ5EO«i·æc€ˆØ6Ó&› ±ZÔEvÉpØ–T[@Üj÷Ú!-®ºðÁÚtž“¤«Ô0tP«!9ŸÍºüjAÕÔ¼ì²ùÕ JgЪ9±m1$ ¨TùÅ5ÏÊŠÇþ+dë°kÉQ;I©Êš,’¹¥§ÝZòÕ:c1“´+ ˆWšøëö=xÈàSª§I•®ú‰t*Ò‚“Sr«‹¹Û)0JeÝN6YÎ ?¢ôºTÐöŠm©Œj“MžÍrjËi?Õ`È`‚­{O¯öÍ©ïaSÏð^$M kwϺœímòêd’”ñ ÚlV)ôjMÜ(›ÓŒ‚—ó݆Ew‚`®"Cœè¨:$.ÔáQ6=wϪiœîT|â^8¾ðÀ6s⪖Rd¥~ZdIs°lO`j1-ä ¹Ð³ÊR¦?F!%L*0Bi ’´BÛ¢Ò»·ˆ†LTÅ£,DôwFËüÅ‚J¹½WN½é\ð‰±3^AÂseƒm®å;”\="FÆÔcHž‘ŽO±Sž?*Ý©jÿNàÔy?mª¶­›*í·)CTÝy9«úé’ pÉñ?y‚üv¹ ¯)Þͺ÷2ôEŠlÙág|È5 UzÁ”Gn…=Ö‘‹…hÊ€]š“ÎG#VåG~¬†’v«}È’‰¢ÍŠd•¥["€RX-[„ïðƒìIa;£‘Í&„}òs„ÍJú;Z,­\ŠYÿÔÊé©ó„j‘ü~QŸ \8Æ€ÁÓ?ª-’œ8wñBÃr.­tŽ”Rãn££ôªf¥Ä^}úgîîiSÕìÙyV´'UÌ§Ôæä¸égzeî™®Ÿx¦kféÕ)gHJ¤ð™É£æSº*¡ÑàÀв4˜Ø³Ïdšådåí³EÝ­0Pdåt³LXê\v³ß ÅdÄìÔï@sØöü;!@d'½NšIS± µ¼vCH@ÃX×gç4¬Á9CWÇÈY¯ÍJb±Ñx¼1oòÈânè½4ŒªY÷Ö‘6“x9Å=Ë©ßrÖàP#±É™’ ¢RR‘ª^(Ü&ˆæK– ’(?Uµ9™ã®ª3›lQgaƤ=©. ÌŸ9êjÁñ?¤1††‡9çu¢J"c{¤­7ç\ä2=»Ô´@U¬ö³¢Bí$þÅ„þ Ï*²ƒŠKc; _Xzê%ìwêËÔÚ€ÓÄÂ=W–w¸‰#XÃ)jÓÃ¥ª)r²Î5«½?:Ò°¯Ý´kõÂöÂèl˜ð ¯5Wª"-†€fµ•g[ý}ÔSQÃÜtFDÞ|J¤U¢Üó)iŽRwË&óÐfqK¿;p,QÐ&Ôwö÷c,cÔ·&aD=$fÛaVqX-IcÊÚk„F¥ëÙkBìwô9ÆŒf¡#0\ÖT–,ý )–Lx¯ªNáïCQM) Î…×vCD^Žì-ÖÐ4ŽÀ%$¼ßb )&&˜i7bµß¢zR[Ížû£fºoÚe9V¡›?p‘öó‚þªIR@º’åv™Õ³!Wì¸p¡ÔÍ›jYC°ÎÛ够?›"QQ[÷úœ°sqyÞ—O—‹‹°Q€¥Ô< ¨[õùŒþhø¢¨}ÎuHR¢‚T ‰ uªR›äÃGã£Ð&fVq@GÕ}ç¨zc©—xJb¬@Ðó¼Í'U§¦ÌÅØž›†¡ÜÙ;êªMèr3tæOæ)0GêÜ›SfʘùÀf’Ç6“Üë b©I"p7g3HðÄUL fïÎÍ@Âó¸‚b—Ƚ"g«zÃ"e(È”l2)7£ƒú|©ue3â|­! ‰h N‡DÕÜ@ª&Ÿ16Š|"mŒ4ù"6’ 9¼Cv1-g?#ʵ :IÏýŒ# û¬¡¾ßÝ;ìÖp7áLz“ Eu‘Ñ †8¤§ÚY$§™-x ¼,ó3>ˆAÆ’z”ÔDåö"]„&ƒÖCDåiÐ1z1° ;7«Â$æ(24Y ˆ„À\©ÏL8ªSåWåsLŽé1Mi€L@k|Å,jAM 0º€x]`ä!x›:2$8àl`˜Âf"$ÃæêFÅ3ŠË‡h- (]˜Õ/ò¶åJ¦™=«Ž šI‹geQD‹/­¦3VËv+4efˆó’«ÅâÉ›j1¤=ʺ“*EPXRJŒäR•?Þ~²ß?ÎæÈb™]ðàGi'É‘×úÒ4–Rû¥ÁJÒaÙ!ûγìó•’LnýãÃ'ö6´ ‡•ò'/DÛ“ÕKÖŽŸmUІT•ÅÄ¸é¢ Î–U7:¶ “:wf«+9µ©:§IÏŽ™ëVŒµÙ¹ ØMå¬'Ýé ¦ÄŠò Àøð zZÊàŸÙ=#6g_¼Cv©’r $“}@O{Z§i0ar€²«GUœ-s8hÝÃq»"–[¸v=$ª¨ ä›.ÔÐ\#×g–ÐSrX€>M¿Àa2'¯ÇйCÛá ¯T4WV*tÒþ2mÓ“éŒ!ÒFØ—w ÀþQd¶ èpg$¾ÎÂ(Ö?³t9Eà9O»xÀA$sV6m¶ÜhWÝ[ÈÐ5$ ‘9 2N­jâEû§0é¦ß˜ôQøÚ" i7fŠa7c¢u!Œq^‘pyÔKµoã|?h×ÚÉÚi“‹¹AIÕÌFâ{ÏHŸ¸lJõ´³sü þ§qûðñ»§h>ò]¶«%Ú®Y`å@Œíô3¥ÓƒQãTK±ºÜ«Xïxðºü»¼Ô&#êIÕ·ÂÇmrž±CÔ†.Àࣖ8'×ÇGhÙ·´¢Ec™x÷(~šš±(mv†ß8)*Òð%È×úaÈE „3@ëŒà%O3È´”3Û‘–‘À ˆHÈ—õÚV-_íÐlE„‘!ŽH íC·-BȈsphýkOdý‚rà$…_.N‘Ð!ø.ïêØÁ>I+X>[mŠ9ËÙ:çEíh8Çz-”µ˜o¡žR²Ê´0ò‡6H!ŒÈC=GÄ$»A- Jâ{v‡M§mÀ;Z”»}KyïÄøO)ÒºúÔ"ÔúuË#Õß²¡õ¬C[¤Ž†Š¨vØîœ’Õ÷]ì"%YÖ0y•¤íHulà¡BiéœV¡hè¯ÙÉgeÅhÃ+•<ˆÓòh0Ô@‚‘§¥ìš®ÊÙ#ó üå”MÈ]ÐhÐÃH?â!õâ*1’Õƒâ:Î%ãᲓ´Þ,óur¼Íû—Ñ‚äFkh.·Ë(Â|š?év.ˆJïÑwϵHîùP°»¦à»7+FCB¢†(‚^­r$ÇPÈpÑgÚeÍ“Zí©­#¬›IøÇšÖCO{‘k.rèù¤`èÔßAm?bð„ØN@©@ÚLl65—ƒÃìOóƒÙ$’9´Î5V˜ÁbëGcŠŠ÷‘àx—Ýü¼ 2P•2{dD X‹¡ È©<˜ÆßY%S'ÈZGóÞ\o ªpa˜ÖÛ—šXçÞ„‚-¤v(X†i^œäÒ¤å©'¶(‡Ÿ0²Ùw}ÜeƒÞ* Bî’þØMÄÛˆÈ!iÜÉÚÚÏ£¤L`°îü–J£Æb:|ÎDGÈŇU¬]RXαl1ý2”æ1*ú6] zÌÒÏÉÓõb‚œÓ:GÐnÄeíÌi;ÜÆBÊùñP\%ÕhTë‡X¼hÉ#vWy[aËsd"YÖ‘Œ£ß6O“qú•¦kŒ¤Eñf ²ÐQHµÓ‰gˆYv$ͯá*¥  )£›|1ÜM‘ˆÐ©IÂ/•­ÈBŠž¯Åû±)¸7c.ËRòê‚yÜY–Òtê£É–峞[U̘d»íiÑM MØDpTÑzOOü”§»Ô ¼ôðw1§ª ÿö˜–ªw¥#)vš&+h[zT›Sú»¨ÓKÒÀK ±ùd8¾ €m-‰yÙTLTߣ½À<4ÄÀ^ÔžFâZâ6/ù@—Â.,±+s'1yb€gO ɬé’jƒ~Þ„ÀˆÍð/ëu” Zs¤^®ZYæjRØÊk¨q‰â:p*6ä@%Û¢>ÊѲ9ï/eáòYR·4—)ølàñMòïÆ5'ÿì<2Rï‚3§×¼ù^tÚæ¯‡kxJ½* ».«i]–•\æm¿ÖÎÖt{=³oyÌÝ$zy”OOÛ~’4œˆúÁÄê?y(~ôPv–ÆT$L.ë~šòËâ{ÈÒøÕi‘×n›é¶»Ér%6…ð†:’ÀùAL•$@í‡ýSï2ìi6ˆŠZµÀ#‹dFv8ò›Â†s˜ ˆcº§üמ7휠ƒœðú Wµ€–¾`¶ØÈK׳•|8ÎÙ —­VШÅÓý3ŔֈȄPbQ¨äåÞ¹àÞÔjNQd£š7¼¾ÄiahèÔ"\jøUýcQµI.LæÁ`…! Yš 6ÀÃð+æß wŠZH²åflAfØX€{’¶m-nðVžá'mÇYÑLÆÓ(W†ñTR3§&Í(§Š9û&£¾®§µ…X¢-5Î1|AãKe¡.W ¼7-–°#J5ŠäPq—Å5V2MÏ‘!òyk•¤¼ÇLÒ`ºÙЭìÛ’•ˆUE©Æ5)rÙÖÔ¢\Y §‡Žd9УEÚáDšht]sBÖល嵴‚ƒHš‹•fmyŠ©â²œ±2%Y ±p¶‘]$¼XÞ²ŠÆN 1fijGµw™ÓªQ‰‘¬¼\1Êîç&²Ç_ñ";ýŒø€°°^ŽÕ)aŸ=ñYM#y»Ub²ÄÂ\ƒÓ`Jˆ'(1<8¢¤à°ˆRÂsJºšŸ2 ‘Aǃ¼£Ú~²¨½LÇ‚ÄðfWÝë§ÔÉ«qÎ j0k¯lñ¦6?ý3 ÇÏ”2oÇPE#µ@W©}Xa;µAÇÛ{;C’ßîHGÝÝ8Ü^ù~«IòöPvý1*yñ¡ŸÞµWi•’Ö0¦[iRw‰l¶>Á®—‰ýñº°l¶.6Z gt[Æ ìyzH&AÐL¤Ãþi÷"m3 (´©lFàV{ú8»8€ð#ŒLr{m°ÑªÏÈb—¢!°¥–¦¥©,'Ð4ý]í]²z9$ìòæ5!HöæèVp\cΛlÅN@ ·äΗd™pÛ‡O¦E’% |Òb3ZÞŒHã>Øy8ã\ê¶'íg¹ïâyKaúÏêl®»$ÀG¼à’ˆ0ßdÏøü€¡rs1ƒU\¦yÇwØN«®s؈x†^2¶1OY¬B?ß; ‘ª¯s’?´’Ey¤ÕNVPCñúi¸Æ9è&¶*§ÉÚ’ÝF,ÑÈ”vøîƒu¯rQä+( ùÊqD¬ªù2‰ToHû‹"‹±à”—,=pŽÝµþ® Ë++a+͵¬B£ö§ß&øÉ2‘Ìô;bQɺ݃fêóÍpP"ZkÚ®2XƒC]›2nuò¾jeDŒÒdÏQµõH`Ns‹‡¦\3yóDnyS3cIúØEÖÏÞ65Z¥YU}—…}ëðÑr¢ùà(äàU ÝP‹¨ÂÎrQszŠ4UW±æaòRÇZ¢9ãmó´Xèõ+ =ý!ÚTžÐ Šã4 ‡ *wPÐBYÖ<̳"U†[FiBû¤ämŠ|Z$€Gb±•c®bÕeZ'ð‘ŠYŸðJ´îJð$ÝÐÈE$aôð‹sP4„ø¾˜gùåA“Q7ÿªà£p4ä,.³ø'%ç‰$QOi­ã éL!µìAÒ⌀œi‘Ó–ÁFKš(ÚÖ2œà²€nfpðÜ6Ò3¢K|"€zΦ6¼Å_j‘@W+дçxØø‰'µ¢g=Ø ¡Èf}´å–?⠀HS‚TÊ^5!™êfGÙ4 º¾O$-””Ø›ª‰•DÁ”ÙqÀ.CxXŸèäøžEذsb>àœÖj¨›œ$-ný Ï—˜ÐAmÏ+±ÓÜUf^rSS=cë=õŠ ¿º?K‘‘±ž´œH”û|h Â;s‹ 1ðTilÕ—ƒ#l›éE—G&iÞCd¯ÜEæŽ,tí“9n…*Š Ræt×6 ©hõÁ› ¾_ÊærW-×X0Ùqa¦¼}”ÓÌ–7jË®$1ºçßÑn–Z:‚¹¼hCÙÓ§£{{¬uÃÿnÁF¢ëGn£18ݪÇáò”\“ÙÇŒ“U×°"~˜a!Æ Ê@ßeág3Eû`+àP†wŒÌ}Ð*OFƒk®-•|­`N‚ñN_v6eó¬ËŠOï“e§— 9œ’P[iªCæ"–‹dšf9€uÇ€îòÑÞê†CÝ¢‹Þ´@ýú”ý»l/-M±è'‚’€uULdfØ'rÄ4zÙæ¹/ûämïf!» Ù¦oõ¯jvX&­K†ø~««“|âû9á”a:­ªk'’dcB°Uk“uårJvw= F/ÅaÚ™ Ý+åКlAšE½ÛðÎP©É›mÃÚ‹åoÁRF2EDvcÙk€­°‚=²]icLÛ¥‰«S÷Uù7ÚÌe®õÃuáÑ=*ëè7|t‡±6³ÞÞfÙ¢ýFÓj™û4k‚DrŸØbw;Ò] ¹Õg5Z5ÊD„Ydc Œ6 ÛÌçSÅ?Olvu@cUƒ¸1ŽaÞÊæ#uCÛÖyG’„5È‚n;:['Q¸Id¨ê’,{z²\@FµNøx¡Éäó#>ÀÖò<Ï z€Zȹѽ` ËNΦ`O0]…‡À‘ÛÊb»“Õlˆ5\åºc³³¤…åò=d­0 ÚPÏë£O0d€“ÉÚ§ÀïªG[W.e«Î)«Ÿ]¹õlí=^Ön¼D6JYbŠÑç<9‘å$¹g+â˰¬6±äç_0¾ ËHQzJí.˜¥ƒ»£,EŃÒPYs[y8¾zHi9McȬé/ âÐ+κ6xóI™h™4}hEâ‹Ê”W“Ž7Ha¥¥C,Iw°©)¿Å¨_ŠŽÉVK¨=û׃ ‘öQ-,ZÀ8É7Ée­;,u+^70EhÎ3ûÕ¥Åt1Æèx C×ä‚8xzÎ~Ù¤æßa`ôGö–ôðPD _½cšد|4ê³z-Öeˆ‰e%»Lpç­qži–¦‹T6ói8Ç`l…¶¸Ÿì×Ôé!Aþ’—ã³ÙŒF}^–4ó –'ZYјå|9ûa¼J€¼rHKÜ4Õjp˜}!—Ü`7IAº{g(VM m äklìpë…ÞЃý>­ÜÉsÎ{xÉÄxª Ƹ!®¹‹iLªOHµé`Ys`´! ¹^ÇÍŠM0Ò¯5®rMÓBÉžžoJ çü‡~ZK¬r!OeI%¦’¬¦…ºAÆ¥ØéS>øš2¿÷é4YNOhÕˆ¹…ŒehÈŠ/בæ$e´®J!æª^p /ÅðN(,\AÍR? Óäçâˆ^š1zO½A¨{a°ó<‘Ë‚ƒç±YDXÉ«l—´þD«V3'pòÙhB!âÓ ‰ËLj•=I“A{Ò*m†n©Þ4ÏÐ'+ì)”«†ø DÚ¡úñÝDLðÜr–ÝiÁçS, SžJr—ÚÖò¸®r¹/È4"qi’Ð,(W«€â …²Ë'yRÜç³X¬ôXRCÜÈÊa@ûKlùO/²|‚ÕVýÅ”ôƒlJM’ÍDLñ{„ðùLõ%;ŒB\Ï<”ZÒ1Ä“ü<í¸»yä^QÑã2(ûÓª™E`†8å³>‰(œ¥ e6§–ˆHí²9lj+ LÑð.VwdS‹5Ö,YäÔ×Ä“ 8ë°Ó e³¼=ÉLæèy0ñ‚»l×qÛÐÓŽ1üm°l?ÙÐmF=ÇFZ¢Å'À³‚øÁ§b>éˆjÝ[æócêÓà¢Ößd£ …»ØÆÚËä‡n8Òàv¡7à0áJD\»†„p©— 1"=gÖÈÁ𕇂$š<£iDiU¡×„òÙÑ2³Ä©¸{WnèI–4—OØ”=&cå˜oÖkvÌ÷‘aǪ¸î±O'¤‘iaÆ[ù{TýüŽFˆA`>jkòvÊ*âz °˜ÁT¿År;¶ ¼·ß¿W݇r£K²¢Ê+¿ûívúÙ™ 9éä iÑ1bû–<øŠ”†¯ñwÊ·A/t÷ŸšÆ¡X¾—F8$rwJ–ÌäâÝ`jt.ê°x:æhüSRP™HÎHê%U5Sð^h$ûé𺠿 îÛð$J/Â4Ù€¦C‰=pZÂäÁ®Ïÿi³lOÑüÌÌ擎¨Æ;Чä%Ýè/ñpzŒ#±ÝY‘ÂÓ¥»4u£_¸r®-Äœ£[ µZ³ØþHІâU>…ïyØ“å* Ü©é2»žËµÒÈ´B<Ó« ë‚ñ;,Sùv ¤ØêLµhm3MÑ"g‹f÷,'W“ÜîÜàò²€hÝ v±0KûÖáÍ}‘•2ͧ޲áÁ–ÐáÖÇb‘ ¯ËŠ“$3y·€’É|wã9¦`X^LK²3ÙBë­9_Å‘æñ ¤ÌP Nü•Ž‹yÊ«â1}÷ ðl¨Þª N鈈~;l@D«FÛ•"!6ŒD©þ¥j6Ã.)Åœö­¸4^Œ±^r…fÿ‚wvê ºËW¡p“¯#µ]¢#>žw4 iVK¤}DçHnËð9Ôj?*e‚» eÃî}ÐÉòù²Z¶4 •]’¼O³‡ûˆ¼6KòÂÑ“ ÇW F%´Aè -N ³2ÉSé:Þp$ŸoéÔêÇaåÚ†8¤Ë¡œßW?|O î=bø—¥}…òGÌF¿¼œô6ôÃÒ:†H)‹@¶òˆ3 _yѰ¼?jiaE#^…Éðǹ3ÜqõtÅËÕüt;ûÛîiŒ­ ¹?³˜²+„uá»Aø€0O‚²e'¨-Åœúµ@I-Wl«Ýáé­v\Zh½HLÒñæ:Ü)Æ v߃Hg(o3h›oFÙ )™ì*ÆÞŒx‹ýE-—HHbžÖ]!Ȇs‡Ë$KCñĵ–)"yMw’&«¾VÃ@-†³ä𲡷RðÔµ–©ëA^IÞ×…n†—ih-ÓP\7jaHQ1Fó¥6[ã¹ nÛ·$€„ª Pt´¤°Øü0¡¸{BFè>²ê lz†ò}LÜä* ël€ÔchªÅº@¬Iñµ³¦xxùêĨªw z´<ÍVïÑ8ô1ߌ¢€®¯uJ_KUã\ZPÛò™ö• yl†ƒ ÔÓ15€1Ÿ aÑb?'AÖr£ãö2S>ÓK¿;8°DìÛ¸fëàŒ#î „Ö6{á 8‚û`"GÈÄÙƒE¹ ±ißá迉8ňaÑíºŸq³"Ué°:È+”ËŒÏmÖ“YuÜРʾeÒíÕèˆoÖ$Ü dMÍÒ <^“¸í¹VßJÖÚÖË÷_G‘lwùÙþ3fóÐÊ8LZº½¿«ˆÍ#g+ˆaq)gÑ=<Âr§‘JÁb¦ÂÉ‚`.àa›A%`:Y²›‘\‚nîàpiAEx8Q,RJˆJ!L¨—#‰s˽r@ª?’c•˜3å6£_ ÑD–¡®2¦ŒnH ¸( E-)9lZ£íd¤5”°¸ˆxÙ¨A)¨GŠ*ÆSã µzP&¡†‰qÁ½×çÀÃZf‚Òe‡OªÉ6ê8ºb7ªoìÀHãGþŒëÖ i;ór×2M_©¦Vay«æõ”2U‚3øb÷?—¡¯Ù[›!·VCî«g2\9õâLÕ‹3Q/Π^œÍú3Q/ÎX½8õâLô‰3Ñ'Îtä;"6gg\¥gJc/¸ëŒå%.·¢¢ž¹¬ŸM²~¶LÒLËÀ>†€f²†h4)2‡Á•Â|îQwoVÒæâºEGÆlô>ãª<³ª<Óªl6S‘ ‡|iWl#µÑhu6RrÍ•ÊAìq²¯É´|BaNv: n“ñŠæ·Á]7¥¸Ý;ÒdrÑ úá›Wu[»eŠ7Ñdå$áM^˜ÍتJë¡0.G‚¸ÐP˜dÓ%~­ŒÓ‰aðÀ÷[½¹*( qn3ëá܆9·Îm„sáÜÆ-È4Êà ?>¬¨Ý˜Ç›ÝÇã!-²G[ÂìéH1 8G ~"ûÖc«ÆØêCuxkW2ËÆªï <ÃíT8hê,\|rTNwœìÄv+;êËÖ¨Lç”Éq!C‚¾bve…×Z9’;<ê¶Ž+åM¥™ê“Ú„ÝàuA¡ãÉýQ¢W,Ý®=+6{ÇÆ‚îòæ°pz"á9ÜlÊš”²z+p‡ï+2Lc*ˆØ’5å½ju!*‘\)£é²‡QÙAïà~4J0ó5¸ lò9Á“ü ý¤F£MöÉ­áÎiØËp0j4¶ù”–Ñ 0Α«ÛA«ð²° ÅÐzS  9´],WÈ©î !f‹–0 U‡ßÂ*›ÃÂ'¢8×*I>†…PðW ÕMxk®z‚¿ É í AŽÂѾ]Öíb‰cÏX2³Í-Ã]-Ãí,¢m@ûàN(j»¾¦õ§§u1*oè¹/…ptOÁ ¢` WÜÄGMT¯“—ÛõI®øö ¾‚¦e˵x6‡0L'†:>èhµ¨ku}Àà¹Sª Ž¡ù¦×eÍן‹ÜU£¸Õ­‹á§õî ÞS‚7rYr“Ý9<|3¢osY/ûslì8çRƒ‰rÀÂA`GBU9¦AŒ¼ü!\[£váLDs7È Èv³Ê€nW‰¬#G±ø!Ü Ïê’ÔaÜ!(© JÚ*!\x­m>Ì‹S¼ÌW4ˆ^‘#8r"·Ø¨jĪöç¶5õÿ/8g(Nø‹»¤^ãûÉvyhÒÈÅíüyÝ­ruãož›äÖ›U„\C¥Q$Yó]ܺq…_¿Ïè íóÒ¾môè5¡ÂèHcÄF*ÛhIÖvÞçÌÆ0|P¶©Ãð7ýƒÚíadZ^ò°‰ñ‘¯ŒP²]£ãí±Ü›? §Á%¦ƒGuÕ­çðrºž~Ž}]ç3s8¦ªàþâ‡ÃÃØ¯ÆË¬=–O _+~S£î•Vá·…}´«föõ%9b)zzrN %"×´l¸%BYoB‹§ãjÙ)BÒ¹[jŸ±\7ãÉ­¸c»îV¾†ˆð½¸¯Ð®l“å¬Ã×Ͱ\Ä7 zÄÔñ®Þ@S“e‡/¦›—ó,}ÈÕw͵Û‡[õ#ƒòj{‘óie!à™¬OMq#œÇIGY¸+ÙÈ»‡4eV>¤çî4â›D ë.q–fŽ;$ØÜ·˜È¡Wî ù¼ ¦ > Ø`&‡b`X9ªNù‚¤%[¼ä\ r4Ž|ö ¦¡V¾Ò§Ÿä“ ¬vÓ‘ôÊ¥ryvÕ•4ëe-铯ÒÉI;W‹/mÍ3¾áaQõ$gùr6½У.W80ëîd$3gÇN´CG ¶‹15Nb¼ßÓñç`å.^\¹¼ÙqÅ õ±n}â™8è9ú€æÂYÓdé€.ßFÑb[{RÙv*ëÎíx²"©®Ñ²›iùã¯3û¢™tSpÊ'7*–cx²‹]¹”÷å,î³g«`§fãbÜ@Ïr]˜KüÂþê?ÖVØ#Tº÷t‡”JXC]1‚ci÷²ì¢§ÿý1>Î1–¹ùmWmðŠÈrÁžì+ðþ¾;,g„QÚ-ë°Áߣٹ?êg,ÆúñG>ýkc¶-¹^(Ÿÿâ& %=ñŠs3ÑǸöÚ‡9̓qÂŽ°?•Ĉ£{óàôî’÷§i 9Ò`⣸ ‡dí"oùªÖ޶ñJqfz­£Ú÷·*±w(Úȹå£X à¢ÑÍæR¿»õê‘Ø-%'šOH °u%Øed¡íG;Þ,¨v%A,\Q³ƒÎ¶ÌxÏ0½˜Zž÷{ _¥E5p"aÁ;Äð<Íê® i¤µ_ð­|ç²K$/Ý9l=iˆ ¥d¡(ÉcµBâœÎùkI¤ƒf|ÔÏÉZ³l;×Ó4'aqø3-´Ø¢â/ë¬ ñÀJ.w¯ÊôXfSR×`›ŽøØpG¿¬á3¸,Ÿù¾IÝ•ce" þ¢Pš@yä‘QFÐ ,åï“ä¹Ü&=\–µÇ<ÊnÙ˜}TÕà{ûÄ ÒaÜ·iŠ¿”}4cHò±Ü‡-ëލÇg¹?nJ–+š7È™iþn‹k$Èý&KXe[è'W4}Z?‡¾0{±ƒ¯–asËU5,k”ÖUJx+}œô0Á¸Š}à>‚L T\ª1÷ù £vEµoƒ˜ŒUüA>áKsôé@ñrB-ÅhyxôV†T7.9š+³6øE(?Ý7=¨je|ÂýžcÜß=uµÆ(z³R˜ÝÜâU A=8?üpð Jl×J0’ÄúˆZ-þˆÿàÈ  •¨­¦W sèbŽ\O~DD{Ôpµg]ÄNè3®µá. ÁÅØ¼ñ/;ÏäÆ#>e,Þàƒ/Jòk.„ó¸# ~KI»ª¢™rê×Ùµ:€IÆt8¼}žùo]ÈÜ•0ù4ˆhõ¢ùœ™[O`4 «•¦ôRþš…ërŒ Ð Š£>4ঢþËdâŽEðí"x&â2àÃŽWSh I‡hºU WµÚC²ÁϽÿ0/±n« cÖ±þ¬È‡|Þñ³ß>Y–§PC©BÙ¥u\ºO ßB>„-5Oy¢¬\&7ãiðïFðB”Æ/ ø©ú5Y&¶±X/,À'xq.T’^›ö—ž—ö×C¯_qFÝ:ïùê?š¡îïíêŽiêÏ“‰˜Þ:žX¢?T |M(o‹¼R¿èzââO±>ÜÚíößßßïoÑßX¿ë;L²¹`@¿6,°Ù{Ç=uþqò8ÈÈwÕw°›‚¢LüÐeâÎÍËþé­îÜþ—äölëöÃßÌ}d7‡‘Ùyq÷u›$.‡'¶ž¡ˆRxÓ¥€¸?~óxãÞ¸ùÎ[7³~÷ÖÍã7ûÛ·„øæ­w‚T_{qªëRü¹¥¸!qþ¯%ô¼ÊÛ÷±ÿóµ±K_[u?òòÎ[ƒÚ»$ðó%°.ò<'ó/Q33š/w׿ü¿°Ñ}‚?}~‚ëûÙ˵÷ÿ(çI«·¬“¼óÖñ¤¿ùÎýã[·n¢É’Û϶nÿÛÆøc…('„¼ÑúÑ'Ÿ~üæ§·®Û/\#l­3ÛJd m‡¯ü|¨lå"òyšvcBŠý_ENï©ÿ ÊñÒ~ûíwn÷÷|羄0ª‹ý›êã>¯ ¬×Ö1³|džeòsªèÕWcÑ®¨Â­—‰»óúÚyõ•Alß[—×ÛP?(Ãú쟮CmB¹Å #Á_ +øŽg­Ö-¯}ãþGŸÜÿøÖ0oŽo\jw¿ê’¹ÿÖ•&ÖÀ—׆øÕó £ŠÃâ9°&:¾õ¼!ÀÇØ¾ØÈ«7yüÑ˲ðkA »—®• _ ÿäÅ÷s+ùì±~Ÿ‘l‘8Œ Øßp¥žÚ‰ªé-e>“(f0ÏÛgõÓZòm™¼<—¾ÜÂr?îa/“ÚëV7Ç·{’¥ÇoôÇ¿î_?þõëýëôwü9ý._ï?¹õâÎ…{v¸K#JÄ2ró~ÿöíþmúÝþ=ýýþÖ_Ö[}„ßsÞïF‘þ¾»§ßýþ÷÷_§,Øå-ë±>N“¿7Öÿó¿ßýÕæôõ3à¢üñuQê…þQ|X|¯çåëý[÷û×'Yw‘e„¼>=íõ"?ÍPËo²£Ÿó$ø-ú¥;”SòO¿·áÁ9~íu—¥]—¥ª;H€ï¸¦ÞÀÿþøµþ­þøÿõ¸"’]dWâx^7û®g\/=ø]˪ý¡ï+ë òJбåók"©¿„ #ùûkèߺ†þíkè?¸†þãkèÿp ýﮡ÷ú¯¡óúw®¡ÿee°Uî'7ñKp… xÝÜó§kúºéàºfþÚ+/›µ§žoý%:£ÅðåDW©ÅLÑ«ÂÝë«ò%ûX‡~»´I. E¿°¨ÖxúEÎ Ø:þ›ªÛÖ1öÏo „ý5u*f½°ÿ¬ÍÀ×_Y—È/ÿº‰üÅÿ_Z"úRd (R Documentation)rdtext.tex.latex.rdJxÚÝXÝnÓ0NºuöÇ6Ø!1!5ƒFüˆ]p³‡€»eTnãuÑ'sØ´íÅÀ-DÒĉ}§M¡Z×\Ô­ýÕþ¾ÏÇǧÝÔÒg9kwñIÇÆg¤óv_“Ÿ% #Aô¬},Aú®ßEn»KQ‡¸‘µ«˜¶{¾ Ô\êGÍW¡ÞsT³ õ£²vSFÙíE=QÜâPhÎð˜½ÓñCøè}0a§2D~d&³¶ƒ% ñÝ\ÉZi#öÁàZÖºˆáó6>‹s|’ÃV‘ýPPŸùì"ÀðˆO-ç£ë@‰à‡l£a y˜!ó8"½„³™ØcR»„É7‡úÄÄ™b'º¦C–ydê™ÞÙçßâ1à 뚯cpù Ô¾˜Ê±CœÁÛ>õ£À˜³°c‚éüëJµÜI)["M<.-ç¤æ«àõ¦¯t¹†hŒÙêHJÂT°ŸGjèG4^‚šØëbÛÆv™”¹‰X,MmY¯ä>®òcÖù¨Ü*Uâó€Î¾Ì(Dý™ÚÍòŒq޼ÀÅá,)]•†8ZèÛæwa»0 òpᵇ&~©µ¬k#ÏN:à0¶#å…‘så-J€OWÜCª9`ÄÆù›™ñKšÊ3CtmØ£ ®À«ßÁëV˲ŒÖÁ§¤¾0Œ–uY8=§pšrOÙ¥ð»Õ;ÓE½ÓÐEáIüU¸äëÑ7µ‹ûfŠVic[µ¬Ý©m•SÓl”>¶Qyb½äÝf]ZE1UF­Q‡ZCq<—ýË7ærlË]TL¾¡è_Wô¯‚~^ãþQôÿPôÿRÌ¿Ry ÊçúYÃüùª\“T ÿšk²*v:Tnh{@þç¤45’w-ë0i¿ZGG{±!G†q ÙÒTز£²…—½ÿÑ—ö¨¾œb–;3?®¹É$éýÜœÜþHÑ©=û3¨©ÓøŒ?YÄ8¦ÊýàõùtÆiSòá9¼ç²¢»žÏ”w^QÃO§ Ú·‹”­Î%•z½ävŠ/¾ûÔ6}v‚©P(C›^Vk~LÐ¥EÉÄ r^Ù~ïKüWÙU&ì*þãÖÍøwÊþO¨ö@ÒKá HTML (Rails)railsrhtmlerbhtml.erbtext.html.ruby?xÚ•RÛN„0¥‹»¾x‰ñÙ˜•lÝã‡C¸Tm„bJIôï•nJSâ2/§0§çÌLgåìãD¡—²š%UJYrÿèŒÃÂyšæl³P¸R˜È2P¿º4„m±Ð?@äysçAå7 ¿Z–‹6´f¸ o”QyÌëª"L`³QÔ9„}œ&~¼Ž‚—p÷emqkH.‘T) R`Þf?“f}C¼P•feöõ*"²ÍdéZaS·<'²ÌSZ6C‰¢*u}×6æ0ÞDó^ìL¡ïø6öã]'€â•ÑwIÁ¬ýÓâaCß™TCȘ wسw.ÜëúzR÷Î'ö ^úÓ--\½OA¾…œl¿Èù/l+â:³ŒÐl£KuÞBNw‡ø¯Ã;JavaScript (Rails)js.erbsource.js.rails-xÚ•QËNÃ0´  âÀ q(Q¥ nÑæCŠò0È8ÈN|ÿ qwi²J¤v/“xwvÆž9ÛÖ) ŸêZ'UªtrÿȆ52ó€3ð0q}ìÎOþ»¶IMƒmð°Oų9ºÌ몒ºYYçŸBšŒõyß>šXm†G8t hëÖäR˜6û&U¥¥[½þVôÅt¯«sÀÀÅmÄën.DÉkr‰Ri)t[eÒDV½kg‚sruDð«ÕyÓ¦ªµ(ä›ÒÊ}âÒn‡‡¼Îîðl¼8Ñê84F¼,†÷a·OÇh“‚ŒÍØaJ“Á<¯î|äÞì÷b˜÷˜¯aíD‚x¹ _¢õkŒ´åˆš•¹Cù—qQÈÂ¥3)Ɖá þ˜©j0 Ruby Hamlhamlsass text.hamlxÚµVÝnÓ0NÚ1ØÆÄ`–RI§z Ò*U}.ënJ³…5N•¸Ó ÏNâØŽm’¶€ðEOdßùíŽU®û\v}œàóØðùûSK_5:'BÇnÖù tZÍ:…N»Yç“ÐÙàrOÓIÓ›Y„Q…û—›\ž3;§Æî]yš?%§Æ¶$˜Dxá“(‘&î€Tó[†Ž€'η¹Ü1øH¾Ç0%Á¸ôã™UiÚ-%,¶xêÌuà‰ãxò¨%,Mdæ²Öl½äÒŃ7-¬Ú¥ð–Â1Ò>ýI·4ÊŒáur$¨=ç2§‘€ýâ_€`ægYI±-$]ÝÆÓQh8(nÝÑôàšÿP˜õJ:ÞoÜ-ÃO-MCš—æ&j®­ªÛu7ÅÇ!—óH™~€ 4ްO’”q¯ˆ‹K/DB"⃠ì–OHMef:)^S.çã‘/«­–a¾ù é=ƒäAÌdú-ÿZâäA¬+-!6µâX^qÛï}•wÑ@Ñe¡òŒË,Y¤?Gñ…! ¥â† è³ä†I^£žë@:>£“#H½‘'kx…·dg± ¹‰gæE‡Ë+ts¤!(hšÌë²ý²­V*¯ŠÆÔ•m4"Ñ™Ëð"=ígÑfvª ø×8Û w¶jtÕ}‚¾Wyk[«V]“Ø´ÖÀ¥=êæáÍñԴ"ø®¦“dh‘¨ó‘h¯EÕ6AïËaÔét<—'Ì@O†sOMÿyžIÙÑ¿®A¢¯ŽØ§b¢ýDàpzî1óБVÌq¢eV–Ï£Ë刜Z_– LØÒñ<”~qz^‰Hoò­Ö_¾Õ”Súz%p0×}ë¹ùˆL޼¢= ‹¯´ƒvƒvÕŠ!d"?\7qÍ|ã1—æŒ_FR/·-•$„À[YZN¢,ðçÈà®æ¸!ûÿ³zêo¬]Ðâß*3¼Ò®Ð¶~ž;p3 Ruby on Railsrxmlbuildersource.ruby.rails®xÚ½W[oÛ6¶Ýôº®MötÀ¬5ÖÝgt º¾ìaíC°·8åhéÈJ“ I%ñ¦ì_îÏì©Gi“²l«E#1y?ò;ä¹ÞíTŸÏMû„rÁ £žÂE*A©DpE¾vüÏü3‹ï¶Ãcñ½vøo-þF;üw¿Óÿ½Åßl‡ÿÁâoµÃÿhñ·Ûá²ø;íð?[üÝš]„ÌhÂí轚„(M¥¶ÃŸ˜ö‘iJ6wy,ð¾i[àl QQöSÓîš¶n»Å=¨y̵ûam e_X,h:ˆ3j\‘2¢Aé¤ SåŒnωç®Ý›ѳþá/À£`4^Œö,IaL}#–ü3—<\KÁÈ+ç}äòN¥×͉ž¹Ž}îzœ"vå”=Êd"iP«´;ïGëepÿÍHíˆ §”O€h:fàNq r½ÕX—ËIÀÌj¿Ümw°éPê“÷šÇÝFuRÑ1mmpöþÑmh ŽŒ'úzÊŒ—zRdHzeœ†cï® “‡k\díU"“!z#Ï—öv;Û>M¡zoø†«øßLûcˆ…Ò¦Aæ´¼‚\½MR²iŒÆ¨ZZ£EðhEmĪ!)•‡=&&“„OrFçèÇ\Âi– ¤è$àáUØ‘¦!ÕzVÒp¡m—†¥~–—ª•¹Ðӂň¡˜¥‚_Ì=OôéÉ f@b)fy&Á“A]„†…áÂíãVôÔSà„b$ˆ lu™†à¦§"ÊËÒ‹±y†ƒØ$”%C®BÇ‚E9ª“xžO“ìžiZœ 9Kà¼bÅ÷BM³è),{LJ{à ôz¥PY𠩝ƒAEÒð­ Ëeý×[DG—ED…"…<‚˜fL©ú®â¡ª;Fˆ°H17’¢gv K£%ê ÷Ñj5Á?oEÈ,cb×d¹X’›¾?Í¡_Ñ8ücf¥2 žŽˆÇŸ¨Ò÷T!ÊvFù¼ìPôØSéÍ¢°è8¼V¥Ïf!Êz^0¹`cÈLÃRMy.õJ‰0Ánä(ñ©'rf¶å†SGÄ#@”IxÈ2µ:ó¢QÍ€OôÔ×_X±TaBø¼aN3àøJöô9ÕkŠS÷UŠÅþñ5·_%ãaF‚³ySb<Ù”˜‰ ­¤FÒY¤ZR¸¸Ln‚·‚‘\ª êdŒf ƒI+ŽyXWf¾2t3M‚Î$ÇÚå˜ûåfs­ºnïšK¢~‰Ý¯é5ò_kð6\Dw\Åë•çY±×‘:è÷£ôŸ?.ñëõ%ž¼\ütø³¸øçø_G‡Al½)ýÏé‡^oBÞÞ8‘68±DÆÛíôßúxed JCûÇUvy2:߃ýÀ‘ƒßË‹¦ aÏC¼l0ö0^”Q÷ªüé3þF m—ø1Ù_Ç<8xQôQ™ †­Ëïxˆ§m—eßÎm8nzˆ×›±¬ï–_o[öÒ±ó•gtåÌ¥qÃá>…°ðTP[W¿ÛT6>ß§ ÕËM½<™ö±•7Ñ SQL (Rails)erbsqlsql.erbsource.sql.rubyÖxÚRÝ ‚0ÝR "ð "-]W*=‰ø3Bp“6½èí3ýÛ*êÜðxv¾óm.±Þd¼á)Ë*žNÈÄ8t¥bàÙK•m&Z%O€]`ÝêXš:j,›N”ˆ.¿‘Uµ$”å´,iIä­FšËÑçT‘~üö ¡¹*J¶ID~ªÔ%pÑ0FyKêŠS»>QìeuåÃc†¡`ñÐg`­”òØå‘UÞ3Ë÷EÇ`í—ïÀÚFí ú7 ûÒVvöwA²ŽÃ(ù™iˆOáb½³ø=5„Regular Expressionre source.regexp char_class<\\(?:[wWsSdDhHvVXR]|[pP](?:\{[a-zA-Z_]+\}|(L&|[A-Z][a-z]?))) char_escape\\.character_quantifier[?*+]invalid_char_escape\\[xcCM]known_char_escape/\\(?:[tnrfae]|[0-7]{3}|x\{\h{1,7}\}|x\h\h|c\d+)lazy_or_possessive[?+]?ranged_quantifier\{\d+(,\d*)?\} xÚíZûSÛ6O”B¡ÚR¥-ÐCpÖn»öÆrŒÒ•ëcŒvë®±Ë)ŽI|8vf;ŠùeùdDzeYŠó‚uþ!²•¯¤ïã£ïCöb¢yÝðÚE éÚ¾T†)[ûOr‰ðE'{ŠÈ’-ɾCd)¯‘É KÖJr‰¯Ë’ Í –ðÚ»¡eC¯×xI¯Ve ãuÐk¯xíþ~(úwÈk‡ýM VŽtÍk‹@:4U`Vd3GŒœÆH,þ(Zr£Y†®òG²QD®Œ)£ÿF"뙲+’îs<êµã8 RVŽ?й Bc^{;B™lœâ’ª 4 PÍuÂ$8MdÂDë H–— n}ÍÞ$4ìý}‹`K6%PƒxqÈÍAUŽPÂCHWwm6ÕTÔK'9BìÛŠˆð“„VC°ED÷µÒ 3EX»Ið4¡Œ„ÀÕ !,NI.&ôжFZ¢âPѵ¨0Îgéö5€V–½I,~v*OÈCBƒòé4¦º`2D“÷{-|‹`Ú@’„è>[~LÊ6½JÙWý ië­¿=–½VÑŽ€ª”²ŠªÊe ¶1ã€?c¶¾ÐÐljIÂyz'«*šœ…Þ¦=›©”5Š’4Ü Z¸+E€Üu}nñfœ!.ªºt¢ˆ_Ó·BžëøêÀÝ%ù@Ñ÷­£VTA¢’ ÔÏQhñÀmêuCÂ1›LÄ]´2ÔŠxï˜WüióÓ—Ÿ7ráÂçÇ>ô0<3Ф ±¸ši¬,„Ö–ûuûµ¿Æ$cŽæ^æ>,‹pÇr¹4Wø¼!fÒÜFÚæ–§eçi> §Îã™ó(œÁg>ïl] +¤ßt=Š“‡ò´oÈRÝ0ï™% ‚Úg1°5«n ‚‘±ð”ÿQJ+½l$cëôÄ#Ã%»×*âŸV¸Ý½ßÞmÛï_ïìÚ^m¿³·~yûvçƒýrsçýÒÞÜÚÚÞýÂÄ,ÃY9õ85“¹H1ÃFÿh G~…1¦ÓÔr˜Ñ—r’ýZðÊJ§ý·»ÐG(#åÀ”RÀòômÒëç1é6&%ÇŒ0úïw1×µ.æ í‘\°Çaö{üÑ|_zQyuôû{0C¨í:V8-þË&ÿi_ÌÀ˜{³dà“èôŠùtN—{†8¥‰Ý>!‘¶8&,ù´˜÷)Yþ¤*3AO5˜W„«^îX·’fÝ|¼Ä5&› /î‹afÈLÐÍÂaV¯ð ã¸ÏiÜC‚X!X>à£?tšá§ë\’2iÌHöOvšÆ îÜ"¥FÄ A[¦´Å*Õ‹Œ1Øœ‰.…ÔÚç7~’îow¿ ù†ò‹dàA4žn1M=Øjë~M˜œm‹8a("¢BžËÖçE{Ã^·×ìùt´R•@ß+øQŽœÇ»”¾p¶à{å|A©šâJ£ 4œÆ Þíɤó°è âg2Åp×H›&<°ð(§ª—ÜÓRçFfÔGíX€%Üx¬ps¾~Ù²­uÂ>SÑ“±¼Ü l ãs“>oÞeúÃE¼¹çq.ZTÜ>9Â@M:Å ILa(ø¢¸3~Ð+äW2âù.ÕJô‹úà2b¿>¸è—iW™;‘òÙxtu¶!{œ˜!Vg›Óõ7„ÜÛYreStructuredTextrstresttext.restructuredtextõxÚíY[oâFÆÛJm·íªR¥ns)½Œ1öBÒ—¢RÔßÐGŒIbldÆKÓ8ýí_Æ=Æ#E«ú!Cì™3ç|ç;çÌåM-|¾ˆÚ¦aÙ–nZ ÓBz§_K?¹½º´—TÔëšöªõº¡½QûYª×Ò0­D«£¨=‰Z=øN¿Gíiüu ÷¹A´ èsƒè¬à³¨}SË RýŸÚ0ƒ+Ø^B<’kf!,R4å»èå5×낪ƒ°¡9ÆF›.ìÙƒæ 5vÜv4Çèo,ÔäóD“>Ñd ×#E Jê—¦ÐßÅ€8î*Ð!3{ƒ•Vf£€Ä"I§ŸLâ.RìàQ¢våZD°MÛÒæèÖ´ÌàgÞ´uv<ˆÚ™½\" k>´¹íNHÛ¸¼Î§,Äɵ,¨"® ǸsŒÕ}f²"?F…3qSQ*ñŒÎak¬?æLö7Qëë–‹ŒTÛöHL€ñ›Ûù[öÅElM-¨AM†kâhÐëÉòå=^.âñ Î ¹øÏMͰùeLjpúÅd :âur­‘Ol;ÚzT? bÌ"˜~~¢Üްþ©þ3òÿtÔßT}¤ø@Áu –½e‰@bã{äØ#ñ€îP½"„1 _ó\ÑZp$¦G]@¹«±93DT·^¾?g=Ô6q6ž¯b>´`KŽ[„ÁO*ñ}ÚÞ©½˜—w¹Vl¹‰…9Ûêï—IɵQ†›ÀF¸Œçi_¹•\d+@—Án‚zzÁ-±°L!•Í_1Ü"Y3äO›µþX`}»XïHô^¶“Á¦u·5ΨIQ÷0Qóc/—yyd~NÓɵæÈ Ö¹X$|{Ð#‘èù‘èéOöõ³Ì•½v§kb¥fÞw’Àw¿nÁ½Hh¢7]ËÂ)€Â5]†S‰³)‡fÂxÚÕõ ™Xó%Õb„ÏD—ËXÔ8`ŒìŠJ£RTÎsPñ3Êï2I*ü‘Âè*ƒQ¸•Ê2óä#ÖÙ¢ƒ=3r#ãh¯|p\‘'•ú¿¯˜âò଱As@’ÕhDHà‘’ àHæKÍ/6ÜÚ6¶l,¨4‡ä„µ3Û"Ë#²© Y+TCI—IJ·¹ä¥rN+’s& j*`bhJ.ŸC²“ðKáH2‚"æ€å.‘“·Þ:ðà} Ö+‚¨*×U¬O²ùõAoÊÑNµxäyÃÅöÿ°ïû[–ë0ƒö1ÚëÇ%Ù=íú‹òÕ§ïA9bO3’HØZŽfdsE•xå(Vè å¨*·W$ç¤L9Š¡“ãûT9b(¡«Ùôسaß -ö⧤‡=ªg‡³Gd©Cuv77OȺ„ì_Wzöh3\›GŽ#þ†µÃ9×M±ú¦…‘³rFó­4ØCT‚<-Õ䨇åÿåe®!ö ½˨%7&~Ô,c‰4lÜ•7^-ÖøÖD‹yéD¸“Ä`º’…Š:TÔ‘’‰nֽؘæìþ„ÜÜ¢Z¾´<ÕúC¥ÿªT£§Ý` úžêýëM¼¦÷ƒÇTüÍÜÓMû9¼ Ÿºíîó sGê~ŒyÞðÜéC±Þ"y‰æ§éúŸÉ/;NHoøÊæ˜FMàÂ[°Ì½àÛØ ze•¾MOSuí?@a÷ÚRuby rbAppfile Appraisals BerksfileBrewfilecapfilecgiCheffile config.ru DeliverfileFastfilefcgiGemfilegemspec GuardfileirbrcjbuilderpodspecprawnrablrakeRakefileRantfilerbxrjs ruby.railScanfile simplecovSnapfilethorThorfile Vagrantfile source.ruby^#!\s*/.*\bj?ruby\b identifier\b[[:alpha:]_][[:alnum:]_]*\b method_name${{identifier}}{{method_punctuation}}method_punctuation(?:[?!]|=(?![>=]))?path_lookahead+(::)?({{identifier}}(\.|::))*{{identifier}}xÚí=ézÛ¶–²Ý-é¾&]ÒzÉ"ڑ⤻kYÙÓô¦i›¤«(+”ÛL(R!)/ »õöþš§˜Ç˜?ógþÎ ÌSÜ7€@¸È”ö»j‚à΂sÖü³ýŽâçœa;v«m9û•¾á=à×k-®”ø_ üY?ŸosðËð¼Šio×ô »b“ P Søù _Àéõ€í3”?…Ÿ¯ p¶+dŸN¤˜ŸÁÏ78À®át|¾ÐJŸM‡¥õ>‡Ÿor°Àp­Šç»¦½ÎP{(0­ùpàsøù Àà2D€_Ìü1~)ð'øå ÀŸ®sŒ6»PoÌ5ªqÅèt€ç9¬¼š£•ûkR¥6mh+}Ç2|Э¸ƒöNŒåu©º Èa x#–ò¦T><,­ø­ôŠ©²I‡¥ºr4–ªÊÛé°TSÞI‡¥Šòn:,Õ“÷Òa?[Ô"ösû¾ðŒ`¡Ýpº•¶á©þ O)ÚðÓyJÑVÉSжï¬@)W*.b¸~ÌØœÔH†ŠÅŽg,@…p"cÊÿÉŒ(ë§2 ú]¼[ æT4C9Ý*]{G×àû›yi¯hϯ–Ã-$ÃQÑìœk»Fç>ða÷W[ÉîÆàU©[âÀcà3R ;ä虊ÊÀZþºÏ’|6”©õœ4B  1à‡j¾ 2›“ÙG©À «©€cÐO¤Ô:}u†ëÚ>•º`lW¼A;ü,jÍçB·ÌñR"­í‹D0j´Ë‰`ÔTk‰`Ô@W¤¼ú.T33Q—n®i´-–ÛóRcÞ–U¹o;[v%²~¦Äü$g«Õ3L›|½ˆŸÏÒ¯¡c%Ÿ/ n¬AT‰w?_äàîƒ-Çí +‚»Š€ˆ.¨«Jqx@à® |…pôë—øIâñp @>^¤ WH¿’2# ø'ü<ÌÚdq?I|NÆäû×øyˆ~ÇCp?I°Ì†ÿ桸ؕ}+T¼ŽÑ‡Adgàð~’0l÷]—BT´š[BkB™€®Ó©@ÆÍuJÑm¡"Õ‰[ãŽ@Ùð{ù^/¹GkùA`@ô-FÛT Bñ3ùIA±÷€Ró³Ð–„Òò‹àŒ¥>n:6Ø@]0UÓÞ4,“ZWS ų*ðΆ•¦…Ÿd¸ËzŠ»øùý¶Ó•u‚uFn‰|m‹uIƒBÝ$4À.~QV8çDÈ|]ÃÏ׸¯2/±.('2{„4¶Ý ¡mHˆD¾›‚-‘ïÐÕØ±“½'¨8â ûBÏ$DYÌJ£({"k4P"¶Ð”L(%q~¾—ͳÝ—)CÙy 4 Ã׿ Ý ÉÂyj¬Æ|6 âÀ@ð%LìH@6• Í– $ ÔȶL5H”H€v€(²‡O4Ô#¹€@ðS8*"Ÿw…¦Š\òÓ°áXݸ   ÎêÏBKú®aZ¨*ìŽ Ü_ðó˜®b;Ðkƒnf’BÅϹ,…x·ò7Á"†ŠrÐÄIƒCð«@ƒBðA ÃÁ ü ?ÿYâdžµûM£zöjì;«]°f ,¿{¨¢ži‚)ËUT#‰i¾3ªmªFQŠ€ÂšJlU¨÷§€ ¡uŠ­ˆÈ³\¯5NëASãPÈh¹Æ°LEþ-í/³´‡¡"%q’…¿“X^ZÒêe½ÝÐûnì¶šÑþu¾Ìëí²^ ˆ6¯Ig“í!výv\˜£p2™#2„§êøÐª8|F§”uQŠ¥¤ß$+X¢n8¸Æzmn€^ÃN;R7‰ Â.¬Ö€Ý|@`wüAT T0Ó6Ã$AV<)ÓQËcx;½¶cU=è`@ñ`à@Y ‘5)SœS$q<$Œ0¦‰ó¤ºÞ8¥ëMRÛû"h(`t %U£ÁATÏTv޺Π­æmJÆÛì載£+4é;…=’èÆÛ~50 )ÆBl Ëõíž,—ëæ¢@à f.séÎÏß^™f25)*–œçÄGX:P5Õ¨‹‘ˆpB`‘L圪|›ë;«¸A"ÕËÖ.TçN&· ÆíFÔºç¨Ö tøUíXÙ=ÎÄg¤†C|>•¨£ð™WÓØ9ʳÎ ³µÚÝýæ&/ÕOɺ}÷ áAáì4’«pvV’ÍÂÙÑ’ÑÙ™`-~‚²sv?Ù)IºÒ)E™ßX@²¸“ÊÖ—õ™fP+×g+µ¦¦Õié©’ò§ j/—~¿$“dÁÙsn'êÏâÐ Ê”q¥ð­3ýÀÉBÀ!U G!³[Ñ'yÆ]r&Z0þw «:èÃáïÑ\‹fî‰ê)²0g9[ÃÌMLï™8#Òõ*Ÿ7®öx¢ººcRæ˜à¶ '§Óyz¢‚«‘ìIèýò0½ýΙZ»¢ŸÑöl퇨µëZa#Æí1³½R$Û+…±=3ÛÍ"ÙnÆöý1³½[$Û»…±m—ø©“L_…ó³kˆTDÜ'÷eu¹'ø§KÅ’Ì5™–FèõÞÒq-hœþ"ÃL§¤ðygú‹”ûI¼#‘»P¥Hð‰ÒžýCKûXRùR›.Ó)Ïd›^wA¿Úë¦,ínIñË0È9‘…‰[!Ê¡¬Š³ÍdA1ã`8ùžÎ¡Sü͋ÃÙ¡UAN¾ûbùq»±i5Y]ØÉq¿L©e0§îÕy•ÿ r~MJ>¡òi¶E•=`­ipÑW+çš• jµZ=XAoõ`¹¶,7–Q²qâäÝ3p<ÐçõyU4* Íóõ@oèÍZJcbJ ž<ß½‰eØëc=÷¤ý¶D Èθ°À”¢^IF[¬†E%k%À‰œìRQ ™©)e#ç{ªtK í¨ÁÅÿ6µVÏÕÖÙE7©hS²K˃qÇ%K¼¨¯otFlÙl’‰7 @b¨/É·;áÖÀ¢}|!)G$’a>ïqS‚Ì[MÞéê|Ò©Ú ›/6\ר)˜œ§F'Çë8d|TèÌhÁRK#3PÓK gr|äÜÏ-…ÝqJÁÏ­;+¡;›¹¥¶2N©måÖBÈän,í k'wciãl¬‡¹«r¶³¢%•î%l8,/i0YŠcG1¾$‡F`p ¬v}pvŽF…"ÑW…ÚÈžz 7ÓöãI4f×a÷¹ ‘*»)MVûdš¢ßQ)µQOŸF-i]w(zȦ‹jÊ`|TI™$}‘ö `ölÇl7ç‹\ÙHëŠã ¹Ïô ç@ÛgÎÁÊ>s°5:üú7åàì˜9( ¿#÷€È3™ùVs2D*ŸÑÊ µZŽ*U£ÈÙLœÊÆ’¯‰ý]JÍäÀHOû€½iºN8›W¡s;>+mßË«,Z<˜n &rÆÏšÃ!íœ&¶i2nY‡=¡Ðï» ­!Ç‹˜MFÊŸl41 ˜cž ä—ÂX!wH kó-˜Y4¿Ž Î_SŒP~@…á3R &3W2Ÿl] 4õ%ªž“?ÞBu½$ñ¦ª¸PðijŸµZú¼p)³ê?OE\î:šÞ†Ñ4…UÅÊÓÍÐ|&A‡Ê¢ã¸C¦ËRgH-D”sø­ú$æ_™» MbÖ –‡:‘W&Æž’ “Ô—r:)Cõ*6¿*)¬þI=Úu£$ó¹I“§y9"ðËINlÛÌ% É^i27å)ÍNV*ØYß"N¢©øSf“ dzVkáâò(çÏT ËMµÐsæå9­:Eº]—ÑIÅ–iƒª=èµáð­ˆFrR9¨ÔN©¤rˆÍø86ìPï»M}k^C–½Åiø‡Íž‡ïá"HM_« D¾Üw„L¶<Ÿ1‹É<•Ú'¢E˜:™øý˜ü¬\¢4s†+eé×ß‹Åi›V໬–B<ƒÐÄE=І[Ôc³WÚj•¯^¿q%¸qýæ•àÊÍKß\¾~óšÖjá’¥‡|áÁq7Æ±ØØþ©©o”[u}C›ô.Juµyè*Qõ«¥pj©‰¦»ÛÔðwègàJ­éÕi!¸*ºØh_l6Ï6´8¬ySdštYUX²tjÔF“¶ÚÓÒŽzi¶P$\øYú_ê\·—OOC5FÃ?ÓÓùV™Ã"ák˜Â ­a¯´Fi¸ò&èºk„+\|ê€+°D´ }×b£ôùó ‹¢B;¼ßV+¹åD‡½»^ÞÖ7=}nWoCu[¬|Ú|´½5V·¿¾ÔDçH!\&+Ú‚¾…¾•‡*¿,V>o5CþmIƒâ|ÝÓõØ–²ª¬¢× ä0ìj«uåæåVK·«ï¢ì»Î: ø…àSªoÏ&õ…ω¡Ë'O#0»²T4*ÉðÌŽç°ÏÝÂñ<Ïá!ý‰í8¦/ Õ *TÂQ½¨Bµ\8ª—T¨Ê…£z™Cuˆ¢*7Võ­ØŽ Ã÷J’½qfOÂ6è© CýÓÙÓîÛ ½kTÖ.T®6C÷TµQ6*Ëð¿Ì¤Y¢¯+ò×ù7ùMEþ—ŠüUEþoŠü(òÛŠü?+ò¿Vä£ÈÿE‘ÿH‘ß`òÑï=…Ç÷Ó$ŸU!.`-ý}âÔÊŒ‚ z€±Ã èÐ^ǃ.W@¹£ŽˆÏ§”|ž+ŽOÒ+ü—‚ϬüϦñÞÁ åv‰}“€ìªŠQ$0&{¼¼Éòï ÚŸLYþǹ/ΈÏœ§*qx¸Q©Äü9è}mÆQ÷™ÜÊëÆ¼–Ú¡Ãÿ\ö…ÕXpƒƒiü,//7*›³õ2ŠKZ0JZhÚ—w¾¾‡ê³õ½…LdTÍRø½$ïï­$’vû»qQöó)»tûö˜(»“JY%‘2˜þêvðÕ….ܾtëú·w´1ÑùC*Éjwëû‹?‰´ŸRI£KôzMƒÖ ),ë[ ñ=SÊxÂSÚ±ü(¼ÉX»-ÉûÇÚ‹¼Ô#¾ ñ©t‰›4'ÓÐh¹­>ä™Ó2ïŽç€%ôÕ’”tdÿ‰yMjۣݢÂÁßÛBfCÓÙPŽ=¹ÙUzögN¤•õ]-÷M)JÛËpsˤ*$Pï}Ÿ™i$©¹xÎ'û%/ªx=Ü9w^#Í ×[ÄX‚Îâã½:Àèn¡ËázŸ/ö:ÑÊmÜ™öŒsç¥ÄÍ¥Ç,ÿ‹2ý¸Œ²ãi”­[NÛ°ÆAš`2¬·\Ò½smx»¾¢ê» _T¥DÁÍï¡(ʯ\»~.]–¬½!ô]d^ÀoV‰ÿƒèÏ螈+ {–†Áð7pAàÂÙ­Áêžgˆ5< “º×7€Ø Ø£#¨Æ`ÝæZÿØô‹Á¬þeZæø¦•‰ÊY\)ÉBX¹åf;~à¸ÌÒÚ1UDb9ëfÇÈ…‹èêÌBpòd Ãÿ}µDW9D÷¦,Óð‚ðoüÏímh³÷ŽÊ4‡ùîú{àÚ7€x¡À¡U;&°ºŒØ½+èêu˜QZëæ&°õº8N›¤ïA×Á×<§Xßó²ïD㻯õÐâgºß(%á+~½àÍD|Å/IÄWüÒËQ©ÒGøÆµzð6‡“(ЉîÕÆ€ñ…Tlyfs Zún"¾âµæ½D|Å[űD|Åkéû¾—x|ãRÓ·JwÇj,I'íäMÚL-ßžcŸîédnè ‹\“Š9Ú> …ìq×Ù§î‚ætíEkÌæIõíG½,ŸÜ`šªÁ2_àò¬‚¼ƒþ‹`NÆÿ¿·4Ó‚ù¶4ÀµSv)½ìÌžûÔöèÖ¾Lõ—u¹ ÔŸêõÇI¨_‘¡®­$­¬Æp8ÀanUÀ¯"‘¸py¹œ¨'k>_ /À?øgþ Âíöµ`™jo$íã1ëè™¶¶ÏÓD‚Šð&L¸.µÔ´`%J+ZI]©¡«Côÿã`¦̾HºN©õL;šÉò ämŽQæÙrÒ_Ô˜KQ}á£Už¼ÁdJ"ï-¢’*F¼ujØþªè¿z¶ Îl¢Ôê&{;4™],ë4½»P> ÿBXñ~4ÒÜü-L†Û6}×ÿáè>ô}éû.& RYáTÁõ0Œr}I_­ëÍøââQîÜSµÚg)†”ýî<†Ï9 ä rµèžVžÓt¯è=]ÖýúL¥ —ë¶-.îVàãÓ«»Íæ<¿Iÿà/cxN&¹3µ=D%1*æÖutBáLú?šË_fðF\þL´ö¹¥—uïüì©fÞªè¹Ow ëâK*TÅ/ù¡BUüî‰eªâ7NÔ8Tt#ƒ;®=+I^ž°ü‹ªà¶vâp¹1·¨W¦ôùfP†þ[?®ióÓòßÜôše¬{‡Ë•zèé§3üæ¦aècö½é5´lzËìú‡Ñ½a*™›FÛ5MÊãp£k:ƒíŸ.ó=¸²vuýšq¡sɻݷ7ý;í‹;?o|Ùûúá/'š¸ ê6áz*,8íïô‘ÂÔCq÷*À5ÆØp¬.HÛ‹­úG8¿Uäï*ò[ª&›`=—âú9ÙEó™çÔ&JœV@TºD¶Æ¿– ¯ò/I8ÖÉtZå º§1¿ðh·ÞDGªŒ³ê¾Äm5ê['³_.©²ôz¢Ôëwܺ;þ¼†ûø'pwüy9qOÀîx´9^BÙÊVž ÎÃɈ»Á©p"¢»GñµàL ëÁi¸0¯Wƒå`%h…ǽ,³A¥±ht¯š×­þfÜ=-fdzè Þ<昽^Wnþ é ¥!Šëºá™®Ÿ:Ï™YEäç™+½ðmwd}7ÐN¸¥.!«n–%ëÔ±ŠO Ù4Gc¼ß'“H”}w9ÌÆí¶œa™A`ƒ­Àrœ~`ÚkÐØöÑ)„>LÁ§k˜ººË´Ã÷ÝÒ"àFéP›pš"| :†ßÙü ×Ù‡$Zd#Kд-³8>˜„ÊÜ„,’CC3?Ñ]J}Y–bCúlÌ&¾7ÀOH»[më §Å«øÙoŒW¢W(å®Eþ‡öÑáÅWÀðr)ßiÁÁk@Ó4Õ¡)‡bôe¦6 o#~¡)Óöã´'i Š>®Û¥)ØÅ顇n¸ ï¹Bí3S¯5™û®Ž :N÷+µ¦å“8nžÇr!¬{ƒöL„¥Æp£)º,`à ×oõBý¢%£”iwÁv”d¾{æcNrR¯j^~h÷ßrÎÀK¯£þ·å¬ eoÅÇ4"¯eô}È!SÖ6iÍ.ðúp2´å;Ã9­ž {|ñ  ’ÉëÀöÝfð7™åmÙÏ'¥üG'¥pÒ±A”Œ¸l!º,à;69à}4ÑÞAlÝA?J #h¡“KÑ[ä¦Âôš ÀC@ÒÎC`cÞbr†fë«„¾”Ÿ<å'Ì•é£;±Þ1\Di ä´ïAô-Ã.¯ÅÁP(d‡þ’—ŃyT*.è9› 5D66 ·ÓTò†s=F£H·V¨TTÃb¬nEº”%¹áß±#¶$?š2"ï`Ûôgö¦òÿ'Wù h¢9Br .OYÄ+]…ä`1|I5ó:4Æu€µú–-gDo·ÃqE”nµ:†eÐj‘÷®éÆ/Q{w£ ©ÇI¿… 8‘DomèNhý¨öN'NŠ¢tËr:!iÄ’7 _4I t“¶A'26LǽOS="hx¸Ê((+öî–Ñkwqçó€è*'±ËïSs#ú&רÁuˆñøq ×â±%]4#Ê¿0d°/q¤mÍ¢¾º“œ­îD΃íŠ)õúÆé®XR½˜*oÇC­C_à¶=@L/ÂÅC_û±rŸ¶ ×.Ò(ÿUR÷ÊÎ. k‡zÀ(0ê1± "ùØ„¼£þÊ{ܡײַ? ~s¯Ýçì”Ü‹AV=èµ°¶}•·Ö€á\@ûU$ÔØüð;5BAè´³ò=y¾Ç¶M\6|Å¡›åqpŒâq=>ÛD}x+êÙ, 騱tù·V4ºð$½îæÜ¹3LÁ ¹cUI&ïZŒ®±L[oCÇ™c8NÁgÁ ]8 ¢9kGÓõºá¨îE{®47}kMX÷]áÆä_ѯq0¾ÚÖ±LÊKLU±Oq’§"K1ñ'‚É&îÏ•ö†“]DËŸ‡ ùÒ‘Ö\ëNã1¿òÏÎaWŽ^vô~Is”Ñ"!ïR}iÓIùX`ˆÝ¦c8±Rustrs source.rust escaped_byte\\(x\h{2}|n|r|t|0|"|'|\\) escaped_char&\\(x\h{2}|n|r|t|0|"|'|\\|u\{\h{1,6}\}) identifier1(?:(?:[[:alpha:]][_[:alnum:]]*|_[_[:alnum:]]+)\b) int_suffixes)i8|i16|i32|i64|isize|u8|u16|u32|u64|usize.xÚí=Ó6ön;Ø€m0Æà`ZÚѸmR~ãBÛÀø±ÛÝÊí“8­ÇŽô‹øþµß?ä+Ù–,ÉR,;”Ý>ub?Iï==½÷ôô¤¼Ô¢ët|_4]ÏÝ1ƒÀ·Û£ÀªvLÇÙ¹rGc¯“bèa9“yCÎÆ÷³ dÛڪݵÜÀîÙ–OU='D¹íxgÕŽ×ïÃ"ô*ЙCñýszrbQww“ŠÇ÷S  ̇B˜Îžé'0Å÷S,Œã G¾Um{ÝýöH|?'„˜¾Ù·†YGUKS-qíGÝ ¶Dª+>G0ø4¾gàz.Ç üú Lć ÀÏ€ õ'…òÛóü¾T}óeJp>×à±T\d€w-×òáø0Ý]ÇB9v–Õ_ä*F?«aÁ™\Å®ãbʃÝ8UÈ„˜³ÂAÙ7;¾W rz.”Ðúe&(¡ï+îNƒÂNëìU½å›ôyõ2¥ êen…ÒD•±(¤æ¹‹€‘ UÜ‚P‰‹dú’™¾Œ|·ì(¸(¬t˜Åé‹¥,H¸¯³ ».gAé\΂¼!+YÄzäM ¹ÂéB ɲ}UhÜ Ô¨T;Ž9„F4^S&<­ õZ æ¤úšÐÅ‚ÑÀ¡„`=– r…°,*¨Zö…¨\U.BZ¹¦\„ÈÒuÎØÃÎvñÛœ°ƒúÙðë?rlö Y!ãCÝä¡Ç C}ÃûÄÍ·8Ë–r¯0àŸâ;v„BMˆ_Ö¹v"/ Ye q›Ã—õ³0ÔF|ǾR>øÝf|?F½‹Õ ÙâŠ# ¿kpø£w¤Ý;\—ÄN ~|7¾̾fü–S·Æz5pìŽ0À÷¸ážv¢0ä}Žo2Ò êA|Ç.#ÏׇÖ°c¬n•æïwš‰æ»çxfÒÊ÷cÇ ¿þK|ÿ$yݵz¶k¶G(ù“$» âQºš4Û~ŒïG –c?qƒ/¡E$ÜxÌñ=öÂ"¦f~æFOʹÀ呦: ô ×&ë'a¨íø~FE¼) þ„“û]ß ðË¿qÜ_2ö«"0m¢cþα:tÓè*þßÓéžÿ'×#ØÝÃïãä3|ÏÉFSÔT¢Ì0˜Á‚1Ýßâ‘LÝ¥äë)§Œ(ïƒìÄ÷SiT'ýKËzvÖäD‰ñè0P›S01˜/Lß6Û¡´ÃéLÚRuã;vÞ\µ`Od,+šHLÔã„;ê·©:v9Iø^à¡Z0À×½œŠÁl®{ÓÃñß\÷Qþ(yÆU’øb‰ï'R¬ ô9¥É¢âr<‰Þ’F<ÓØ¢Ç×€S¬ß†¡žsª*å¯a@Ÿg´ï…a†V¿_ålfÀÉÍÛ'Wg ƒ¾ˆï/5öšá´ íZoävJ } š?3Ú /<¤èLŒø†{Š®Út]ö/¬<¬7©+]ÿaOìÍU*:üß4¯½i5wÂ;üóÓ›Ö Øa¾¯êF[×+FE'­Ì PGž(ãAÍ£‰ËáÈØE I‰ ‹§ÁB>ÆÓ®bó(*9´BŽÇPmk×N4C‰æÒ,Ó‹W‹rG•„ò›Mü{jϬý—žß­aEËÄ(-\òR&#,·U“ЋŢ9o­UòxN$Š'í³¥ôŸHXgEÍz9“—OY#òSºd‰2Çâ¬d¬["²ëuÜÐYâf§c ‡Xò« y;Bš€Æ6…ÉøÃåñ¸Å-Œ×ï”ÐÚÈQˆË?uÅQ*¾æð='²õµØïȇ0vS+Íæ›ÛºÑ2Ü–Î’Ãcãh셱ʡlçÄÊvv|M…¬ Æng[ Òã“7±]>ÃÛeb0ø¦~¿œäè…&¾2…õ£DX×€2äô‡÷EN—;¶kå´?346G6ýú’n¸4:èº n©æêNMö¦Ò*Óñ¬Öá„ÕÆE…€Û>/TOœ§4“© é†Ê0Ôu-M •ŒÑ×ú;Ÿ1¢Œ'Ë•ºn W”¦0Ù£i–#lг““šhÜí¡åôŒv~å¶QT"îÁ u=›ƒèÌæf¸’öú=›¿u2ÆrõÚ_¶ñã•¥Øu7_òþñ ­¦g0.×Êt8æÌ5¿ø@Ô«—¦å‹ÐfU°a葱$}8¶ëPHÚvãÇ¡±N˪ŠÊ ×¶Èx)6Âðx ÐÇó8^+ Í€ÍOÔFæ8<Å#t²ø.|;ÇP”E)þ Izë‰&¾ÆÉ×ñt Äat-é(wÓX‡ {eF.F%NvHô0س2¸nȸþbœÄMÙ‹ý×äÒ.m»õÛÖ'i»Ï‰ ¿Qô¨ñêÞ)™;‰§Pt(¾5 [ec¨¢ÏTð¢^ RóéÊj«Qi¿ÙÞ¸:Æ| c×#„Ôu¸r;Uô»L§êÀ!s–L27§–}3õ-ŸSŠf¸b¼F;L€“--N‡è ô•ØÎ²áUpŠBÊÏ •¦Ì´ž Ù×÷º£¼â”óò¥ 3á©o»ÙÞËM‡úãôQà›v tʪšq6,wÔŸ¸fMM™Šªþ@RõCÉó_$ÏÿJã!‘ Y§ü]›œŽÙ :˜z×2QÒK@iî]°ðw0óx!×üZ5™Êü:¼¦1žÀ×ü@&WYþ½d.3µ“¹Ì¤<ßܵ†“pøÀ7ÅŒNd%ë:/>$>ÍúÊn®j’+“g8˜»rs #R/+†‡cV£<«°ôg̸ùìmA—CÆ[q±A ú*Kå«.¢Ñh¤Æˆ. 5M`¢XýZbìUÆìkZNŽäáö3ç&Ò•?éÌC¯ÌçêJ$‡dYz#¿c¥–вEnäF]¥0zg´œ† Gû‡Ä†uFše™KeLª¦…Êfïx1MÉ\ñí®DŠÅ«ØrV‘ÌǬŒD•Q^dá~q¡»¨™AÉpå$)®¸tÌŸÉ3r™t_œla´+¡àŽÞì´âHT»ð+VÜŽ#@§q˜n@G‘“þ»‘TÚÙ ks’Ú@ü n'y³²P-%iß‘‹—Ä<æÒ#¯±™sìÕëÙN»’t´•Ï•¬'n¤8tfF"VÙ9ZFJgxb’ŸQÄQ#¯„cvÞ©4Ó5JÚBu—L[òƹÙÚ_« ܨ.eVÀ†Û‚g/•ï"I(7û±€¬+Íc¥Õ|j¬¬·Š¤ÒÊD†™‘á Û+³‘CZQçz8ê—áÖ|ºl-`•WÆÞëko€ |€+àX†Ou}Y}Ç£ãè€ÈœTÆó .™mR>,̇Ã.\&›e…>#ã5|~uíæ8ô`‡OB†ŽòÐ!›O5$Ï7SuFWvfs&‰BãÒ!°B¥²)žÌH´êÁ³ûEø”RŸ¯³§7÷4Ya…ê‘üœV‘[¾_ëÜû‰SAÒ4+$«3­›%¼Ý¼Q†À÷>oô˜6~(.« EŸ4y*Þ•_(‰ÓPð)kï"!UÆö…ÊôrÞ ~ŸWú£øVOÏ¿•X±œÁñc™j=ÇîYÝ·Æä3#“ez÷[-‡u­±mˆX_o.”ë"¼ëëe¶ñi~0vO ¥^ozÃEK@w˜4ê¢S+r&t2X\ÎÀ‚õ˦…ø µp¼ݦхA½at 4ÅßÑP´´š«ÕV#z’@ê•Þõk wó†Nv“ÌÌItÚ—<)pÉ?\– @ê5…"|kg¹Á:ï¸] ©]L>T*5="kÏ$“Z £Œv¦ö/À)5²ùÌK.—§X²ÞmˆtÈq~dNƈ±Kžî€ÀŠNsökèA™áx¤åP”¨2ÉR(mõ*ÙVïGMÁdÎNÞ…JyËéÅI¥YI^WUÆ‹Ÿ4!2•â³SY—(g\Rajιë_&Pó8A¾ ¬ŽÇš1åEÛÉørxê|ÉŸaŸX«#¤lÌPÕÒc—• g|¨h-Æü_£,Ò7Iöxnßéÿfp¼Òç…×âüöÀêÌ÷|¯?¿ƒúúz׋ lÕ1axÌówׇAw½×Ö¯ÎÏC`ä86PÁ£¨Åºèø³!B§k9v߆t…%*µFscëiKo°%šÍží8-Ó±wÝVºt‚º›Cb,6„Í7——#ˆ+ 1‚Í+Ñ{H¿±ÔЩ÷/ín°‡aj0SÙHZ©-Ï|«c¡¸`ØF~v†•!ŸÕ¹›ÉE^H")8fÇÚóœ®åOâô“}ç¾^Y\Ñ/ ƒ{þ\“\™$¦òK‹#Ÿâ›(”Ô¥d”0[«[ãsl°ºJ5.Âÿ‰&âÓÖ¸ˆ–`¯Ý˜lÒâÛöÔp&>Ç6¢—í¾€Š¤[ƒÅÚ5à úH¥OŽ»d½‚ºÍU2L2º¾`pª$¶v 4ŸÎáK›;«Ë}írÝhÂq¢DÆEЧЧÅ}Ð,šŸ!läŒ&郭8A}5o<1ýŸîöí´Û›ý¢õ _ÏÆ¯²Oy3ßû·U.ÿfÕB;SÊÛ+ÏIIÈo‚gMMÖ½ åß4ɕٗO¨†Âz=¯ Œ%°¡¯V6j+-b®¢‰Êp5í³ÚØKi§p±N^:¸0…ZŒ`aó™s>ùÁbóìSÇ„0l*èXÒms¥tÌÞzWñÑ0 +tÿaA &y¬žT²d`ßöÕ›À†+öÍN‚ÿÇ£[`ŽàÃ|8B¡BÍ^UÀ?ä‘ZUˆOæ†ÞjÇîǾ|±õ…ðú6!åÊ«¦±‡Œö¢{Ù$éY$íY¯Ì’ÈúŽ"Ëk^©~éA·Vü¹lÚ³hó:A¹Tµ!%W#ª®¶âÏeSµ”EUÛvM¿„5.Æ oÏ·A}º \¸)8ÑÔ'ÛZ:¥¥²sšåNB¿7R)µ‘¯4É5ùºP¹ˆ¶9ì¢ë¶Æã–ϲ`d7· ŸÚ]L²dFÿ|™.käB™â+kä"ßW“æT'N4I–ae2¤“´±¤v ~ö*Z¹[…æ5ɘëhêã– I÷šsC‹‡~B %Àz5ðA°¾€aÐ@(宵ôêd Ge‰/Ó9]RKÇÅS;“„)n‚šy‚%…·c$ñÜ JĤ&0©-ƒh)m„(á4Ò1ªŠ”K=ç,!ݬ¥þùŸè Ë;Nfz¡•¾â‰ü^òüé˜F™ÑˆOÂÎ=ù-~Üa,Ë‘•탾.· U‚ïÍÒã¥Â$¦WíÔ¡…h,æAcÀqœÊr¡3гM2Öt(Ì1Û–3¡ýx‡)×M[ŒÚ: 7P<Íë¢Ïùsí“ɧÌ Ìͪ êà.¾‘3‚NâÎù‰Ý#kT줈,mF;6©î¥B•™`˜ëp=ywò~özÏ ;=ÿnàì̬LOWIΉÄ!•&bÁ ΉYP‰Î®A_„'ÆQGÛ”CLÛãVdÔø*ZAµˆQ|ZDfÊ?·æ p¦ɨFçã²ÏÉ&Ç÷Í)ö°?‘(|­‰ü £–ÒÎ=ƒ »â ªüŸJr†Ž <¸rF5T‘3æDG.39pıÆSúýD»“ó̊䦕c£ ï’*’•Ȥ¤Ž,JÕL#”Q ­¨æ&AQ¨72*H:LTɨ@ÔÉ:V8þÒ»%#šªâ|"hm0r‡fÏ}ï…Up­ò«¤Ò´úˆr²`äßáŠ[Þ©øÕ¤Â¶o™Ï€åÀªà°{Àñ¼Vn;ˆ¤[9ŵ‚@|Ï‘ VtT­b²Ax“„Ç"Ì!°]Ðö^ ˜›h}žTóÂö¡Ïî€ïu@˜ªëõ@Ûêx} x½ÞÐ à÷o¿€ýê[­»ÀHà v3üÞû¶åtA×&Mf'pV+…Ýïû0ºÂå/…Y} ž'<áøƒ½eÂ>ÄqÈ⎠ŽÃ‡F4?«”è"w|¨*† ¡†t{|FO¤ËÑú”š‘ñÑ`àùÁx/Wd ÙÕ#‘XìhT5*¡#OòüÍŽÂé EѶ%J©Ž\Jø ­f”JޤÊÿ:®¾ ¼ü$×h­·¸}|™—çú^ú0^ ¿ïaM<@¤±gi€öC4ÓS¤4=tm†°îž7ØÛp½l‡je{ßí€û>TÍ]øÿGh\ºÝ޾õ^'Þã—.„ºçx®~6ýÀ6Ïñ§Ç~Àoèvwø‹ÕƒQß»ú^Ü·zæÈO‚HI‚ÐÂÀ¶yv?<ØöÛµºÔpCòäñ±l#¥ùÂækˆª~ü <ð}°íØëžçv̶¶Ã@Ä?þð«%ô b¦qF[æŸß’<ߥ{W’=#º&+\É.ü7bJë»+2µøLÔ¸ê ¥šmÎyd_¾Js®V5^´mÖ×Z%„3ÙÊÉæóúÂ?ÍêæÆÖe°ð¿w«+ë_?]^\j£½“ßa4éšúïæ¬4Ö¼¥4«yp’m Þ’<·%Ï]ÉósäÊâ\Ep|¨ eëæCMAË ?g S+x·U~B‘ê÷þZAdȽAXš÷àô }\ˆžf½¬sk ª%ý´a^$RG…—'A…·h°Õ”› …Ùâï:×,y Ü+‚T@…Áë ƒAKš™q`D¥„º’¡kÁ…‡ fú0?÷ù§®Hþ_WÒ+É®"˜S-NªfÙLÿ¹m(€6âgn27Mí–ò˜RâJCnD—5Mj‹ž{fæ6üšaD{(h2žt:›Ð¡qн¹¦Þ6Áè.é¢VÀ t#(€+¸‹¢£ÎçÂísŒ„G| êu|éyà¤'½!ÛH‡Å{D9 –š\HP¹Z–¶“‹O0Ü=H½(Ä}¯Ï¹ˆˆ/bÄEÉA°ºîwìˆL&*ò%ë3ÅÎ2…°7W6éÁ¯É@Yr>P÷Is¹ù”("¡tæ;E´=™ÈX‡A±ÉžÚë‚“°/Y‡I"Ñ "”*EOQ`;–åøË¶“›:Še8‚±ëÄøÄøt †M×ä"6êÎ. A ‘=q|¨Þ®,ꚟ½®9²l a‚á›?›?8üyÀ+Iø0 '…/ > —5ÿò¸¹ö1ÃZŽ+C€]’ÛáÇð0J8¤7&éöÜ©î2>kO€ÇSøûD2û´ÌŒ£^¬Ú&ø[[¦Î ¬-É[ȃän2Ï[°Ùš ú _7DRIKNýª‰YGg&Q½‡”¯™2gT%Ð:Ì›c`Nˆyk Ì÷Æ ½="ÿ™10ywDº{#ÒÝCÆÙ1ã£Ñ8/Ö@ׂ@Ž)LO˜üˆbئ“uò>$æ²@A% æãC£_ì Ôó$–Ù±ü œw"”¼É„K”2mÚ¦VZRØ‚"’Ö±ÂOŒãÂdsÜQlRý~YYN,:ÊB•$9VVŠ ¬§%,öð¸ÔÛò Lwh ‡® Ô'!Ôôجš-dx/S{‰Ôœ¢C£T.ΠÀâ´­p˜Û‘,a'X¸˜Ÿa ú*»™·$u(¸<`PFÀ_À’) %O([ÀæÊJÅ[V Hª¬EÂR¿G#Ƥ£¿…ú'ÔA¹ª{ÌÔàT>P]#$5è“ÖõˆAÖDR±š2§-ZúýʶâÅîŽaê…²Û 2[aÊŠaÄÓsE誡_ìè.g{Û`2[bÕ5Á¬øA­¬öËâºÚi w®Pà 2”örOxˆFA 7õ.7ÜÎáW†$«eIºÀ‘guÑaêÎaiË YâÓè_nD”@Q£ä-ÒxáCÀš•`²£^QM•Ý}í_úól£CÆU˜¯gÀzAÒƒ9QlÙóTSײ§ÍzÞ”W·âÅÎ;]ã×ÖÒºšË¬Ô‚?¬Ô/r¿…´°¢¿ Î »o´ ­ºãFA&Æ/JÖ‹­ö¦ØhoÚ—a©T``å»Kµ«©Ì^-ÅÆh]¨¾~øìù7량gÏÅ3ñ¼6˜4Ø&F”° Á¤›ˆá,‹ÕK%êAo èÖÆލõÓ@ŽÐƒà SõJ8+ÛxópkïàÈz±q°%¶w·¬öÁÆî+˜D‡í­}[Xí­v{ûåžhÿ£}°µk©ÇüV»$Ž#Ê ëYìú‡2÷/¿›/÷ÄîöžØÝø»hîB;ú™œ"V¿¯ã‘OƒÍ熒/÷6A½=©"\¹µ v^~µµì>oìoï}!ö7öÚ;ÊûÛ»âðÕ«ÕL÷¢ËüçòÒ.7' ßµÔ&…ãæÝrÝr¶iVìAn‘SEíTtÏVSI%”.+î‚>( Ÿßk~ºaµÀ+–cW/ÖÓ—Ãëºú÷~ÖñáÛR¦JÁ‡—Í>”6єҮ±NW«2ØÚ­¥U;'­û(±X!ÁŹšE»–åÓÓúu¾». ¦5¿úOÍNëû~²¯§‰µà|g[_ÿÓy÷Í„×;ÛL÷™fƒÿÀþÐ8ÓPæs¬ÏOµªN sáÿÝÉ7+Á__ûéJðùëb«QÆ®oŽé„ÙøG]÷Scalascalasbt source.scalaalphaid!(?:{{upper}}{{idrest}}|{{varid}}) alphaplainid!(?:{{upper}}{{idrest}}|{{varid}}) boundvarid(?:`{{varid}}`|{{varid}})disallowed_as_operator[^\w\[\]\(\)\{\}'";,.`_\s] escaped_char-\\[btnfr"'\\]|{{unicode_char}}|{{octal_char}}id(?:{{plainid}}|`[^`\n]+`)idcont%[$\p{Lu}\p{Ll}\p{Lt}\p{Lo}\p{Nl}0-9'] idorunder (?:{{id}}|_)idrestO(?:(?:{{idcont}}|_(?=[^{{operator_character}}]))*(?:_{{operator_character}}+)?) nonopchar[[[:alpha:]]0-9\s\(\)\[\]\{\}'] octal_char \\[0-7]{1,3}opF(?x: [[^:=<@\x{2190}\x{21D2}#]&&{{operator_character}}]{{operator_character}}*| =[[^>]&&{{operator_character}}]{{operator_character}}*| =>{{operator_character}}+| <(?!{{operator_character}}|[[:alpha:]])| <[[^\-]&&{{operator_character}}]+| <-{{operator_character}}+| [:@\x{2190}\x{21D2}#]{{operator_character}}+ )operator_character;[\p{Sm}\p{So}[{{disallowed_as_operator}}&&[\x{20}-\x{7E}]]]plainid(?:{{alphaplainid}}|{{op}}) rightarrow =>|\x{21D2}typeid(?:{{typeplainid}}|`[^`\n]+`)typeop“(?x: [[^:=<@\x{2190}\x{21D2}#+\-]&&{{operator_character}}]{{operator_character}}*| =[[^>]&&{{operator_character}}]{{operator_character}}*| =>{{operator_character}}+| <(?!{{operator_character}}|[[:alpha:]])| <[[^\-%:]&&{{operator_character}}]+| <[:%\-]{{operator_character}}+| :[[^<]&&{{operator_character}}]+| :<{{operator_character}}+| [@\x{2190}\x{21D2}#+\-]{{operator_character}}+ ) typeplainid,(?:{{upper}}{{idrest}}|{{varid}}|{{typeop}}) typeprefix(:)\s* unicode_char\\u[0-9a-fA-F]{4}upper [$\p{Lu}]upperid(?:(\b\p{Lu}|\$){{idrest}})varid)(?:(?:\p{Ll}|_+(?={{idcont}})){{idrest}})withinbrackets2(?:\[(?:[^\[\]]|\[(?:[^\[\]]|\[[^\[\]]*\])*\])*\]) withinparens2(?:\((?:[^\(\)]|\((?:[^\(\)]|\([^\(\)]*\))*\))*\))xml_name[[:alpha:]:_][[:alnum:]:_.-]*xml_qualified_nameB(?:([[:alpha:]_][[:alnum:]_.-]*)(:))?([[:alpha:]_][[:alnum:]_.-]*)d xÚí]É{ÜÆ•‡DÙÖbÅ‹ly‘mIÔÂF“Ý”e'¶).Úm'Š“˜vâ¤Ñ¢ÐÝhhhŠ4ÁÄYœLVOâlξ89Ía“™o&—™Ã|sŸÿÁ‡¹åË_0…¥ U…*,½H¤Tm‹ ѯª^½zõ«÷jyõg)ü<=©¦e.©¦i¹ª«[f¥«ÚjGs5ÛY:u^"?y= 툞rÅÙ” ÕÑ@Æ.ÈÕ¬tT·¹§Ë›q³+z>‘Lá®wµŠ¶Öµ5Ç!øº+TÎÝùÓœ†iÉ4†Õ¼^iZŽfºXcìÎCøÙ=?FRÛjSÃòÜ›F…òÚ—F…jsoô|„ júhX­õJ[·7.zô<Ä!ÑI`ù%“D­ÓÞ—M‹êw6-ªåÑs’¤5TÇ©èæŠfë®j6A{«¶±Þè®®úÛš³;F%+‹5W3[Nŵ®kfEm»x&ÈUVx¢H&1÷••~ÙeÂäX*†Ž«À#ùÓ rÍŸ5ócÑsš•ÆÖò6õãLÍji #;C¬/ʦEUz"›UåÉlÚg íSÙ´ÏBÚÃÙ´‡´G²i?ifÓ>iÇ™˜Ó¶ìJˆN”Ä">FµnL4ëŠf’#Áñœ PÜ „%è™Mr¼¤Ôúd¡d¨´‰BÉF”(Œ “é®e㎜J†˜(3Ç%Ô¨1’¤\v-CuµVeUµl¼Ä8šê#1â³Â–¡v-µ‚©WÅ´ã2«”Zr“ik8³ÓL[%™0NqŠ)ð0–ñÓÌ‘ÓÔ·ÒìùP¤š­Š£í8Éi&úI€È8¶Ö3ùÓ ?K aN§zeHìèæ²‘0š*®ªqÒONŠX|Ž)dǵAbLÈϧ’¡Ü^H%C=n&• Áï™T2„¼³©dtç˜@êÚë•–îtɶ˜Ï¦Eu^ ‹vU5H­?uL¹ÏI…Ê:ÇàDª¸˜ó9 .0¬uŒ  ·õFÏÕ¨`ºw1gTÂ¥œ ¶\f6†Ÿ é¼=$h Tgü¥èy‚´cµ0Ä{9zB—fiÉoøí'£ç=è[ÇUm~ý©è =‹ØïƒW(Œ`º“øÓtvNÓÖ»xv¯DOè.W ?0Î\”Ïg¢çƒ8¡ò³”ðY.¤ýÅ¢Eå¾JsG¸kj‘’xh¼Ào_‹žÐ¥C>$xÂÊç‚dŸ§T…ákAÒ/DÏ{qÒH\æ šfEµ¡ÒAš/R8ÃO‚I¿D 9’VL톡›Ì¢Fu<®g(ÔXÏwe¨’ê”m‘áÁdW){&—û/QvM®Ä4ã×¢çDÎL¨äjô<ÈM~CwQ×jPC›š.£IuH–ãi[”Í¢¥óט"Ètò`òvôœ.–œæb™)I7`Ý ¼™ëZ +LÍPŠ-©ÙŒ4_oFO8ûDC×uœhä5(V}ËRiY½°Øš+Zó:LСp÷ü ™ÈÔÐ;ºo˜rÚ¢F-Íiª]­¿îRµlGÖüþ- a)’ÙÑóŒŒp!¡ÃÈ/ôˆü\>™_EHÖ‹žÐ æ8€|•+9­ 7xÉlÍíQ4|KkJWuê^ÉèRש–FÉy]ãm âüÞ±=çHC3èQšùÇðëMÊ ýbHõåèù$¢Jqia¢¯PJ{][¿aÙñhöeó$]OHùUJ8N1$ÿÕ&\g&ø:%£È¥…_#zîG_‹˜®Í»” "« ¬ ׊íÅoR=0²G’á·¢'\ÀMÜ ºÿ°‘*Ûß¦Ê ÈºPŠð;Ñó~‚ŒÝw£'4Ð.=$ý5(²ÜrHû} ¢Bû%f.ïQ¹tm˵üþ þ‘Âm€°†ZqÖ; Ùƒ?¤F9¶Ç©=¥Rþ=Lò~ô<–„îÈ?¦šÓ"R—5ß9ÒÛ:æ“ü„ÒæÈñ†_ÿ”’îDCšŸQ]Ó§a#ÃÏ)] j¨Tr¤ø€êÁ]×_P}ĺ÷’_R2IøÑðWTùI¿^7ÍØhú5¥ìiHýŠ‹„ë K‰w™!Íï¢ç^Œ|¯»H–¿žû0 ʯù½Ð‰†ßÿ‘êžþ÷ΊÕ3Z•†F÷!ƒiW]àÒü)zþYbvH;ènˆÖJ#‚ð3s]¨ë*Wu4¨j_Uíå^ µjìWƒe —ofzš™i0”²³žE”íNÈ¥È4ç©îNœ±VkV‚¥ðsb¼æªxvzËouGÂ\3«ð¯QŽ¥ÒÂLí¸ÒݸÒÛ¬ƒß±?ýŸFðÓ ~ZþÏWŒÍS•&êÞRia®vµ^-vü/­ÍZíªrC©)u¥¤Èʆ²91~fªzmIqê'OÖ”µÓ§6+àñÜ¥Í:øÈr”¶4@“ò‚ì…L‡ÌzK“>[y* ËÛ±¶àSRª2R‹TÛ¿gè£Ú…cEw´†ª 4a[ilëÇÐ(gë*ðw“ ºÓ e>-@À8ÜÃR»¦˜'J»^ Œ"©ð%_eAhñäQ0òl¦`RM‹¦oB£¦L'W[V3¿pÂîÂK†¨¢”§a¦ÇÓµ–E«´}Jg•“Šƒ´®G\ÕrÁ4‹Gð*aS@ƒXÙ8 ìÕëŠ3 úÝf½¬lÂì§‹dïç—AËw‘’ï¦|ãH4½1ñTpz¢´°&ïݳgOiáè‘i¥Œ~¹Édô¾ºÀÂXÖ€U­7i ›G¥t€Åä4Š`®÷¬ÚV¯Û/£H»Ž¥Øqa 9mJ&ÌöÎÝ—óð–°½xäNŸ—(”Ùfü!‹‰ªÑõ"•oθ ÑRi”ô¶¬4PÖ;¨2hâðÎ]Û2ªmúËdWë~‚÷ûÐÌÍÍ{¾¡òôÅÓ›2Q7V.ðrQ6=¥á/*Œñ÷=©ÏázÞÃ;(ÜDðMf'Ά‚)Þàß.À鎛ΩÿyW½`õ¦êOì ÜŽ§õ£`…côNºœ‡™pFù&Μ̌¿èPt@„ûàÈv‰Ö ÁômØ®™MºƒÉx5¿k9¨aß_ƒñt½Áë•EÌë]lF¥dEöÄH ¦ÓèMüVýIÑ„úbZf»NË€¡Ë)ÏÈ™#/Ü/ŽÜu´wM–?ÊÓã" Dôm¸¨4#Ö%)cÈ~L*PÐ]8ìKÀ%ù¦ÈSsõla=Åå€ôÀ¼ªCÏe¡*ÖYÝ31S}ˆ‰1p¦:ïí=q¹5¬^qÊÛg% 3ÜjŠyFÙ¦^g ±]£JH*ÚS´³3ÞüŒœiÿ4¬^æ˜ð$“‡9z$i[õ½e›¯àðA‘¾2Ælތɡ_aT#ôêcDS²[rh…áz3—·´_QíõÞŸL€¡`´©õÝÒ ŽÓFÀâ~ ¬$|žàs»£§• 9wã¼\¶±sÇØrÎÝç¥~Ñœk»Â¡Ÿ´]ÝÀ|¡MX¨Õ³•°Z/œÚôú@ÖT­¾_–Ñûí ÈÐw·@cy >Âî%&¤!ô¥A܉’T  áNЋ!°<Â}¡Ù¶ÏÝx1°¢SŠ)%Áeưí™Vý?í†43è4Ûh@}×fö9ÒÎÌÍž…#64HŽ)ûgs€´e°5ÒÌßj摲ŸÃ,Xr ÏO{e³.yùi+Š$äª2h½j3 …$Ó½@!¯Õ®ú›J&¯ÉJUž¨"PE Š@•á¡Ê´Ÿ&-çæuß»¥=ÚWwQFŽÀ"E‹ ŒEôÊ‚"ÂK¸›KôŠ?Jh¨ærÏ1°¢ÙNÓ²5n.”ÛôÑËô—³|NÍ‹M–í|ÞÅ*o“áVþuw]žþ³@Y²eo?ÿ¹Èö |yƒµ‚ºŸXeõ7ÂM1WZñŒ³·`ýH*°ºž±¿4ã\oø$mûúDC…G[Ö±z6ÜÛWÕ: ­ÕÒZá:?Xó·ÄfÆnœïa\ ù0JzÁ_/P@zŽÜ‘GµéóELÕ#Àƒâ=ßG¿÷× ç,…nT\¦Ø=p÷± Fó"Œ&K_^—<ÌlÝft<ÙB'KRµ»0{±œRä³õ‘ŸÏ(àû[±:+<ÊãïãþgkÏÎÅnÚIµÇQOòƒ[UßêY®Öª‚?ºµ;Á>Üö¤(½€µÒ>W¹\ßx6Ñ7`P¶ª:Vmú;⸌‰éõøø8°ÒŽË9‡¾ˆ}Æé ~%à”ÉJ2á|| FÈæ6i÷M7WUCoÁÄQ¯´€]н#ÌâáùIçýK A†Òiú–ÎïØöS>\¬_B“åi²-¤²ýÖs×6났v.2R ‡pö9½€"ÖÂv FÔ÷;¶/pë¾{Èôg12¾Éœúe[7Aj“ÉÓ(”ð×"Á£Q®¶æV×:W`¹ê²ÿîQ&DÃ0ø>IòýžóþC²Ö‚œÈ >[<#ëOÒЄÆ/½)B˜‘úWµÍœéf€É¹9Ê Wm2 TF€¤R™O 'Áˆ²+AG‘ºÑ3#íh¶T @ý0V¯Ï÷×ÜlôȘæjó ß;2Ô€¦C±®„`9¥'µð“}÷‹‡gÅÎÊâ¸Ø¶ J¯ýÁf&âÐA"3ì%šœ^“<ÂÉ›¶³Æ(žò¦Ëu†Ó#HHù‹Ðòí«åHÃwÞD /ª©ÙáX¥œÑX³úV|Ÿ?àû¬p fý,C&©q«Ú²ŽeU„üÄ?FZ(9\ÆnÓQÅ)×JJ­%ÏñV?…àxö·ð„0ðžÒ(¹+ºã9½®fc‡ô¡­e¦L'¼Z€Ë.ßá¼ÿ çý9ïÈyÿSÎû?pÞ¿Ëj›kýN ð˜\þ(¢}A²Ï4°<î°qhéVV–<á×ÿ.Ý‘šÃŠb?1Þqú8T1þ7¦J#”ƒ§ßž’¡Oú3Ø„g赘¿ÅCì¥B¹ƒ‰Ä¢zo'T±;PìÜ2»%)ažˆ<¸‹Iq–ž(Mî{NB ümI)‹>3²ã~…¶†åÞíxÛÁÌõ]'13áÝì„Ù‡ï!(†·½}-!dÂ}>¤^N‹wÞ² M5½óë®æ]XQmoqŒrÞ˦ë]6,Õõ®Xæ²w1XðÂüEXMb7[×öo:ÕW3v½röVN+eìæt},±Ð¡uºîz"÷»ðúº:„×ì» ÖÇâr2fÄùäŸh©Ñ×–dl±Ê3Ó±—ÝJiëäyJÙÇéfyJ :O)÷ö-bla<R’·F÷†ÄÒÚ<;‚y«7K±»'|fªÁ}ç9ïbT¸¼ÚîǙſxS™ÃœÊ  Üoq…>–·B¹±toŒ¥~M1tÁ!Ê-%ƒ^2ƒÀé”hEÅ0N¥à'ä.èO¥ÞqH÷aA £@GއŒŽ2sŸw¸$LŸçÞôð( A±eåééraÀ-¾jkÊi)ÆZ¿E k'FÖè^í]#]­Z´hoö¥‹5áÖJ°*åÚ–qKýprKÌîfâ¦K–,Xs•F© X°"`EÀÊm°²9ÇÅõy ™bã ÓÊÿáI o:¯—ÿÄy2RkM©«ç1Ï>kù-N‹ ëŠâz“ýqýÛ–½hu´>E0”c§Áç¶<ÞµocF…BÁ­Ñ›ø»ˆ³mÂjÚ>:e4M<@ »i4vÓ‰™¡XNµ™ ‰­Þ H3; ~ff¶äØJ<ü8TR°‰íecŽŸ+`ù'ЦàðU ¼pÿ÷Û#{Jyž0jŽnÚ²jT ËÔ*œ\2ê·›3þçº-Z4'j'âûà m*`8tT×õﬥY„Ñ©þ/[¨5ί¼ä,ßn,¿ZóÂ9•ñœÜ×êµ—^¾n|zñÊ+Ý·¿ä|î|cåœzá‹ëovZÚ«¯Ù/7ë ý—u SÝ䨑SJiª^Æ"Ð-ðlk—–_TÏ P™‡Ø´¬µ7ȵHÿù_d´­É ®‚±<Ž)?Á`ÄŒ9 ¦ÇëÑWÞlà¢Â¿¦kW§Ëè¯ñRíêxØ•ª\GTJ|SïÁ}tŒÔJy:øRž )·º—f+äÅ›“S(ANÙç}IœUä†dB˜÷F9µvu£í¾¶ t?§Ç¥ŒÂK#,ü„T@JDä£8TXIocžF>^˜Ìô$–oD¨ ØÉ QG_6s\ÂA–Ø”˜ï!s$|¯€X™÷–øAZdÖanÈØò»A´ŸÑ*;6ÙI&ÅL‘K}xÁgÖ$&OÙqunH]œ ?¨3“°²“ÁË;㉻4rz– _h(ÖÊÅh.Fs1šh4—’›z õq2cØ êhsQµh ‚‰©"çr#4±•üáxHh«þž9³g`ÄìiŒ#ûÙ×þÜžþ dÿàd}R©†Oÿ…v©^ó‰.„¯ä…Zûrëb}é«N(75V‹ºq”5Võ'誛½ŽfëMw šTŸ§pKäTmí:vlt²f\ 8¡•"‘ùж–žµŸ»W{0p^–鬟âe­›®¶¬1•¦…³«g£`))ûéè­ßå¼ÿçýw¤üî΂eÉ›wó»œ÷ç=/Çkœ÷ß,Àã>N?á¼79ïÎûw8ï79ïy±EþÀyÿÎû/sÞ¿Ây¥!¡yƒÞ«K‚+´á-üΦƒvZâðXäà¯/}OXpïÕ3³âÙ^Ÿ•ú•î;þ ËQXŽ[ÅrìûÒæ÷„> }Þzú,ÑÃÆÀã oÜ-:t|\JùðŒ·ëœ÷‹†!bð¥ÈÇ™³NbÖI`­ÀÚAfèI*n޳ÞiŸ&ß »òù8ýë&Xê8oY†¦šÞùuWó.¬¨¶·¸bÙ®÷²éz—ýy ïŠe.{­˜ÐbLv« ][ï设ªeÄÉxŸ¨³'yëÃIf¶Ô¨Ž®R„«ƒ±W)ÂU?_F¨9wV §pbn 'fŒÊäĵ ‰Pº÷!#̨:S ôM¥^ï#¢Ú=íÚ ´hwkÐî@õ{m/÷1§½•¤-3²ÆÂo-kf°W£¡-ëfFQÏEaQµ‚[L ݘ”ÉWÙÿ‹¡\ ¹ðø– ÿ¶öø³‡Î`ÛõÇD‚qY.X<E`Ø÷ûa€Òüc ¶¾ªºhœÅI¥îumËÕš®ÖŠ_ßÇ_`+OR««¥·u°|â‰õÓq±jÃqý‹;Â莞¡¾½î9šjh-Oït ½éŸ'YÕl[o¥­Ÿ ÙË62!ÂeÂTããã°49݈5ðïrÀm‰ÓTÏS¼DE ¿ ˆ‚à˜R[.zÅ& ïb¾ƒÔ¬yÔ†NÕÛ,®g®ÿ †ß¶ÍöòR·¶’aƒ½ß5¶,ϳÏcÛvŒ-«bsR+¢ß¿ól -ûº‚b_l óD1ÏÔ¸i"øìÇL.§ž¸`&÷gË2Ûhý…Ä©@í ˜*–““ŃÜ11 »õ©Ä®C87>;ãÍÏx³'˜ÖHwöÏòúh>DÝ)¶uÐGªòæP »2¯‰ä¯­ÅîïÒ©9@mF#Æ;N‡*ÆÛrô£{tÄÿ Æ¥BE­¾sç qàT8@ÛãÀ)Ôå³¼ $q¸$ŽÀß–”2±$‘|UµU{ÙQ¨žáÅÚÁ½=Úâþçýï9ï?d¡ÆxN ˜]]ëÜ©®‹Lpšv1—$¦ïš÷2BÝ4tSËQÎe)åCÌÔÁɳ٣• ü¢”ÎEÓê£b6x€þ¢TÀã&Ø‚+Ð¥“ÁÅž¼Ì,ÕÃ_üqüU­ø;Æ+òŽ­)+“réŒL¯y£¼¹¢ú ÙÀY‹†,À9wŽÿX–¢LA;ûOÚ_(Á}¨É”Ú…‹ç^;ï¦+ª§¼†{‰àè,,pÚ·XÂ6 Ú"h ÌëÈ ü¯çx2uÃЖéÐP[•¦a9~LW]8ŒE­ƒÒ¬\„ìžãéRôYC"¤ó8À0‹`]8Âþ!l‹sVY³d Y°q±Z®Í¯û»馦…hkŽf¯j­J×¶š(›M ò2¤²Äf½¥‰Á=®¶æÂ ú¤†ß¼:¼LTàj¯é5¿4/ïäHF:ëh® E¼cìæ6éÝô(Ÿ]Œ–‹`!yçü>”òJ̨p'é°Š, S;ÀjsÔ?†•5KגΤ£;Æ£#—ù~s)¢¸ ö Òc`æÁs ”º²0_\—ÇO– WÖ9ráh$4ïSH.Áõ«ò ½ÜGô¹–wqú°LöÃp_žê ¡ÑsµJÐ/ýNWmjxG†ÏÃ92ÉXæPìD%ŒõÁ¢a7–E×5½là^U@géIy õ[¢¡Æ E[¤“´üyÃâÉ4ìHHqgÿ5KÃÀÿ(XS¿Bourne Again Shell (bash)shbashzshfish .bash_aliases.bash_completions.bash_functions .bash_login .bash_logout .bash_profile.bash_variables.bashrc.profile.textmate_initsource.shell.bash(?x) # ignore whitespace in this regex ^ # assert start of the line \#! # shebang token .* # any characters \b(bash|zsh|sh|tcsh)\b # "bash" or "zsh" or "sh" or "tcsh" | # ... or ... ^ # assert start of the line \# # literal "#" character \s* # any whitespace -\*- # literal "-*-" string [^*]* # any characters except "*" mode: # literal "mode:" string \s* # any whitespace shell-script # literal "shell-script" string [^*]* # any characters except "*" -\*- # literal "-*-" string  call_token\./ cmd_boundary(?=\s|;|$|>|<) extension\.sh identifier[[:alpha:]_][[:alnum:]_]*identifier_non_posix![^{{metachar}}\d][^{{metachar}}]* is_command \s*(?=\S)is_end_of_interpolation\)is_end_of_option [^\w$-]|$ is_function<\s*\b(function)\s+|(?=\s*{{identifier_non_posix}}\s*\(\s*\))is_path_component (?=[^\s/]*/)is_start_of_arguments [`=|&;()<>\s] is_variable*(?=\s*{{nbc}}(?:[({]{{nbc}}[)}])?{{nbc}}=)keyword_boundary_end(?!=)(?=[^\w_-])metachar[/$`=|&;()<>\s]nbc [^{}()=\s]* reset_and\s*(&&) reset_job\s*(&)reset_or \s*(\|\|) reset_pipe\s*(\|)reset_semicolon\s*(;)(?![;&])start_of_option(?:\s+|^)--?(?=[\w$]) varassign[+\-?]?=#xÚí= {ÓÆ¶NZ–BÙ …ÄX rØÚÒ$ŽC{»ÜÛ½½k-d[qTÉH2IˆÂÝ{÷}ý…ïý7’5«f4’í„Їû•éÌÌÙæœ3gý·ÐûˆË Ãvì{†kù«k¦o5î]§@ÿŽ0®±‰Fâò8Ô0®¶?./H«á:/Äå+‚:Dó¤ ˆòƒRЛôP\¾ÌŽ¿˜‡º~)õ{8.&àHš¤A¡>¦A¡ ™bk´$_‚b¸ãB¸ŽãíÁ!òZÎ7 ÖšICD_•ÕÂUN2R@U0È)!âçi!b憩1ˆ³¶fÚ g¹CÂÜè¶g9¶Ê³ç˜.Ø:ÝüÛy¶se°vÞ€íL ÖΛ°Iî8æ´ƒUeJ¢£Ãð6®PÌX)ÑUÑ(sM/ªÚÜ~‰ëì18†Td…i$ÒÔ®]q\Æü]cÌ` ×µMs…±Ý*cìhX Ó&Z.sù»jºfÓix*@ÙX«·‰æg¹Ú–mcû–Ý5|Šo×¹ZÚ·\³áG2tà ®rƒ1é½*žïZvK ¯fõfpÛi$ö·&QÀ»Žo6Õ¦Ó«¦×0:&ÏÞÝæ^#¸Îëêxàïd7¸¬~d¸¡ ¶exŒèßäFqôW£bÐGF»KÀ¾%‡Eº?'‡EÚ?/‡E¶x!.a\yïÞšaÙðm%. ·žo¸>|½—0Ö3ìÍX¼¢ÊB ÿ !–âr?‚Q>|y7.aЉ‚vðv\e¢ˆB½Ãk†ø£˜Vx—a1®°jµVÛà߃°ï1ÆÃZ`È5¯ÞË#$4胸„sdÁWß˃øUdîàûï±8s&öCÆÚ æ2ü£¸|)Ž@>ŽËc,H>9Hã>aô±”÷Ÿ2ê¾¥ëÆaB8BáûÏ9˜Æá<ù‚ƒiB÷ô%§§Ð¯Ã÷ßgŒ'‡ ?`\ ?ЇÐ?ŒËó,tl`“íÿ(./JkÝü˜ûq¬_ÿ$ñÚö]§ _ÅxÓnªÎŠêtBÏÄ ½ÆŒO†@Q]bBÚíY{«‹aÆg™53i€`÷âòx,Žý!à}fcÀ¯:2Åàv´ÎˆšKÒ¬l言}öb;X¥—¥´*œ€Ö7…Üa:Z‰Ëq Û ¬ØŠÉ·ÚØ€®2ÖG†ÂJ6D†¯ìkfhÃÀ¾Àè~Â×í¸ÛË?øÜX36릺渨Õ2Õ˜ÀB1£/°éØíM¶ë3·œcB˜ÿÄåãr„Q;`å–ët;e •½U³ ý(¨2š´ªC™JMÑØ> g:!›{ö¶ìõF'Ù°wqg£»°56b`<”ÆHˆŸ¦C„&SŠÂME†¢­6½„šºˆùm`̕ۆÝê-³MŸã6Æ%ˆâ1Š¥jE+)D=,R²ŠTå/å•ß)äÀr„Ëö| ½ïssÝq›åx¢R§×åpsk/á2J÷Óû]! e<€Ô[‘õzõ¥²ÜÅq_¡ñeõ¥– zØŒ%¯·ü½dÑc¶·HÂN!žÌiÞL°¬¨j𧦭OêȨ9cX<˶¢¿¢ O§²|¸ÄhÜRÏäʉ¸"n‡( ŸÄukË€zUJÕµ¹I%éŠÞïHÿ¨°Æà]ÃwÜrχr§3º{ZóáÓÒš—ö–Ö¦d|B¤5{\g²ô;ʵêH¼JºxAÝqºÀ³cï>B´C2ãûœgzø˜aÄY±Öç‹¦Ž QF£>ôÙ²‘ßwT¸¹ ɸž‘›‰i(LÝbð’1õ ;!LNžŸ&†ÏýJPœ/) ‹š§šÜì~ù”p>)Æ9#ÆF…_!1’ U-Ž"^ Û€É-Í›.Í+¥êxm¾¨#éQ\‘É<’Mq}d“$áße_^ËByÝh<Šû /ñHb÷Ùø„G^Ü{ºÞn ˆœL£ƒ™`K§–pI¬T[šÖ•jiËmT ·DL2²”¨¤qš×­{¾åwq8.š~¿V+"ƒ)€ÚìÄ”ž!ÏàÕÅÆª$…Ú”+j¦j;"lÇÏUkêL¥ªKÃu"ŸNwcW€&¦´TunèªZLUÕp ¯\7[–D[ÇwŠ¢Öœ~_ýJg'–ýÈh[ͲÕn›­ž¬TCýá-1 =&Iý€C*9D„$9 ?71Hûî¼¥³s.!¶u“BË‹˜–ÚòuõM]@Ï™¤¥íkŠ5 c"›ŸLâºâ¸ƒ'ÒØçK<ý×ê–­ÕÙÄ»‡F`´¥…µÐbÌö7Ëáž&í/ LNÃqºVÚ¬ðe1#Ã`¢Ó²›RhÑÌõÓ;XH!“‚ 8ÏR3\I® âÂåüÜÞñáÂ&7¡ŽÃÓÞ¿ro‹_¹·­‘;$©–®²ë4‚|c"æâù² xHPÓJ5£¾b»þ£«WªzP»®ÞÑ·n\»µlh«à/w¶ƒFÍPãýK¬)ÆÖ°·û‘ 1ÄLémš,÷¶q&™"Ú(óû‚ø7Â×mJoGyÆ‹Yn”Ò[•@Ø*­£ƒ‰ŸmûršŒ6…b¼^P¹)x^%;$Wsg4µªW+a‚,9ú»dC”á‘×ýF  °šò;þ*ÐÕp[ç:˜$˜É”Æ ¸”ÊpOµ<»ó¬H³;<7©eْ潘`qŽH¦P2$‰›+dgúÂ÷ zÚ¦¥²òÄÃüÐQMlüÉž¨ËºX|Š6]]/Öjí“×ר9DŒÍ›×ˆ¯²®›ÁIšçt]¸ÔÒþÞ* $þñ_I¦š„ÃOÓÊ}9Ø< ‰~h«HI+&—gµ5…:J6Žg§) ËײŽG3›éɃÅÞÄžŸ/Vƒùbö=/$Ö@Šk–Ðhãsjâ˜Vù#­^2=£¡hu)¯1‚Úv¾ñàq¿Ü‚Y­b‰§oÙpá¹eX;Úß.¬Ã{9ˆ•Ì)rít9Ï(P ¼ÔH9øS]2aÉ*D"×ÇZºä±‚4Ó(YLÃû…áÉð9eßJp <ËŽw#ßSñÜíbªfÚi(å Y ´á3.ß(g8|ãn«É ÏSxkÅÿ8  `^àc;l&vk(p»=]ày’VÓj ÊlEÔ9ya»ì˜uSÑ(ü^ÄøeÅn\„]´‘­O¬~ Àj++V7³j7Và òLó8Rà'ÀÒ’]ä³Ï 9Uz$*2ó/æébLD³lOó'dų¨":‰fLÙ-c ãOß—!qè/ôMàA’@éFó§HâþW“yºØÏ­ÕÊ6ÈrÌLHøøS²2±‹>Œ¬kÁ¼KÕñEEɱæÅ›df¡c¸©#è¦þ—Äaènê(Å›½ç¦~\à;„§ë¦~(Àê)º©c‘ÉîÓM}ÌyöE!Ç e…¾<_›äm‰ È3Öû3‹Ç ;ÞÅËyº8H\d-o¥‡çrXÑoB© ž/ žß<_<7†`½ûc÷‰—èÉïâ¶úpOýF?¼æqÑr'Kw OãLÏ",MÄ”A#y èpd+%mBŒ%$.Û± ^†—öAQå ¾çl=?B@ï Ò˜ÖJx\±¢ÉŠ(¨ž.+ Zîçe­’‚QI-~Ú Op>,ÛQ.Š{éÌ L·Ùò”¾Ã¶‡CøI„ðŠÅ" Û¼‚È`Ÿ¢ßi„‚ÙöL©Ü€ivB§0aŽ+jôœ Q¼û)Y(²0g›Ž¨Ñn§¦“ ç4Ñœ-äÒyaƒ¶9° Î ÖW­¶‡W8D•ù^Üh×ö­vÞF£J‰F1³Â¼§¨ÍË‚6£\)i¡¥gÙó6çÙw8ÏÞå<û€bíyŒp| [„´p……:ÈÍepÝ5yUXu$¾C4¥ R /!·Y©)ÛóÅ@ß… ÂA+‚碸úžàù°ãí,4‰ˆæ Z޶Gx&°¤M‚ü§àõh©ûƒ™5Aƒ6û¤ëɾfÄ‹Îú¥å”¶àãÙŒØó¡YòJçóàÆÝáKå™Ä«.wï§¡HŸ¼ÌÂÓ ýجè‡RESJ©65£SޱD[´!çÅA@ˆ’r2Y$n`í|ò|ª’ ‹C²´æÌž%Jzž…àÐx„¤±Z¬„îÛ[„ oŠž<ìê­ \ -Ü*É0¯Ñ\tç¦3ûV§}bS¶%×Ï|çð†hoe2ÿƒ 6qª fEs³"¯ž!)«MN,?™®ö&ÓãÚú&Trã{¢Pël}´}Oï•àOÀ?¦¿EòìgÉYøNŽÑ>š¿‘s€Jö÷ìVÞ}ØåŠi¶‹ä×ô{–¹éfÓQCI°~ä¡À¥i½:+ßw‘¢ _JXA75ÈÛ¸Dµq·±TÍpAÀenmm"\mµ9V*¾7D›Ð&ªÁÔT5ЖµåjpíZuè×3\)–têþÚIŠÆ³$ Ò[Ööów?»k„¾„ zdlw±g»Ëx# ÷ˆ÷]’`¨¼áíÚ… ÉŽqµ¸VžY׳M/óÆ´;3Ã,R¤âkÉñ)yñämj­‰îé6x„Üô3ÍX¯?©·Ä&kN ³žýö¦œ9·7áÃù¢T#bdô/–wè`®VVjµ¹fN×ÃI5Káj¼A«á´Ã}¥-#]ÍÔ"#–ø*$Î9Ê·R{4v­GFÛ´¦Úhž—†üœMqÈ€›OJsJ޶·õ™,—ð¤wN»Èi˜ÍÕMÁÐïb~±ƒ¹7nä}´Iü ƒèu^+KmÂk•¥ª¥\ßÈxg!L‰ð¯†àú8: S¿†9ÑÕi‡Š8]³W8ð:¦:Åë"Qþ©4<¶¡>¾«~u]}kéž>#÷Ùp3Ÿ47TG§uF3Øy¸±¼8´L;ü·šloÆÔꀬÿRÅjÚ)äÙf§f4µ¸„‡W*Áâbg“ k3Ú  UMNkÓ D fóßæƒ¾— µÊ‚^ k•EPÔ*ãz%(m./(Æû>rýb­,?Ñ¥ÍÔ-Ýò’cŠ׿õÜw8Ò®²*E"ü œánîÞñ™ÒîäL7‹=Ü/hƒ2ñ0^+•T¥f8õð£p­Õ¶Óq=¿ûh}ãñû}òé_êìæÎQ†—ý}è@tA°äsX” ?ˆÒÌ•ÀöÇ̇mm?h›AËZ¦²G @ÒÊEóaÏ|Q0p Z¢´TªÁ8ø!X왉b±o;‘'fàÔà£}­Cï©.à-;½Ó¢pÇšWˆ/±Y®ÍN’W×kM=ñLŸë—Â?2\àŠ¿¦æ¸Q4³Ùá]°ÏÛ‹¼Æyöó¬ÃK]›ßçeþÉûzó¯Jv-Ì^Åsëÿ‰‚Ùy,7CÆ0C ²q­æé…¯Ãváå·›­>ÏàSwJ\Dr£ï”ˆ¿3š¸[bDtž¸KÁ$Ųv«î’Õl©Á9’×»©^'¤¡÷YV³©+áÌ1FPõ&3 -Œ"úÎ}‰á0Âim7øtá FÙÓaÕQ…’vK¡o±ÉüIFÆÇQ!¿nï~ÝÞ)~e±>Ô’:Ú;¯ÕîO^Ñ´DúS|i ¼H=íÒAÖ¿—;¶'·Ÿ²=¹= =Éí»85ø^b6­ÿÛ þ²ÿ38cŠ?Ý;½î±®øª™UxUðÌ ß5lÓézHˆ‘ðß°æ¬]gñã¬o žopXþ„å¹™£-xþ'.O¹w?¦~d! CD¸9;ƒÛ§yp Kt‹UžËr— .àd~"¦ýD¢E©×nI]‡÷sÁóŸ žÿZðü—‚ç¿<ÿEÜ©3“0OòÅÓJiaA S¥«Â}5àj{oFÞˆKi²uÅj›j¸C×êøŽ`½šÈ´ä*ñ±u~FY’’N~º`Ó@ò%ïm•þ©Ÿól½ —å±,¯<—å^•¥Â•¥¦É7¼í{v$9‘‰›ƒÊ°!Lq…uÇá3$€¸èI¹8Ípñ¹‡Ù£VéQ¢|î`žEQ–x¢|î_†hå2˜äÉà¹{!æJ™Hü¤SËà ÃCŽ#ÀÑ]a¬pKGÈR#û[H=DS¸¨ì2yéM>RÏѤ«J¸ôD;Ÿ”*¹‚¾‡M‹ÚŽÉ"®HæúŒÁÈèù7)æ/.ŽWƒÅb5(.ÅêbxmG,*Jïþ¥H"Í3#•±¡¢Äz-]ÆC”Ò1JJµ…Efùîø’×sŠ ã: ÇìñE1œíë7 9\ˆèº…ß žÿQðü7‚ç¿íסöÉ«}Ç®‹nGëÊðѺÕ7Zh°z=VûÓ±êÇvs›!ÿR1­6yŸ\Íÿ5ÞÂYÖVD»=¸íÀ˜{£o5‚qCoóQôù¢ÄmZ¨1Ñúl$q­›àsH$êç<û'çÙ8ÏþÊyögγ¿P<¹F‘î|òL?ž© Ü@}C+? àUHpCÕšÓ$Ï(íñÿâ<ûEüEŠxs#”×·‰ÚPÔ^¢¨ ¡:v{óÛDï¿)z¡€û·¶K ø›ÝfZÚÒ‰'5e[WªÄƒŠü{„yÍo$ólý{3O/‚‹+§Ã©_gÏméæ±A¸Ž- 33}& }‡6þ¾Úð?‡•[:i鄪kÜ]y¯eµm×ïnè3AGyv$ÆÞAȹ5ý3†Câê+I®®ØÏ/y?á—¼iÙ ú’UW~?¦ðNߦð$w°}Ûôbà½Þ"Æ¿Eõ¹ëP1Ã$±< ÀÿÜ ÁùShell-Unix-Generic source.shellexÚ…ŽA €0 S+zñ-~Âþ£)(T…¶^|½W‰%â^†°Ùd5]j@k7¯†Þj7eóm+°y´5ÉR,¯p£ÌRñ§Ó¶ÇÑ÷iò!pÿ[¼©ù[’ÞHuÌx¼4þcommands-builtin-shell-bashcommands.builtin.shell.bashboundary_begin boundary_end(?=\s|;|$|>|<|\|)xÚí]÷{ÜÄUB ½! =`¼ôB „Pâä]­­xWR$­ƒ)þèÞ{ï½>zï½÷öÞã¿xÒJW玙‰¤oµ¿ˆ/>3÷̽gFÒIü%y¿MüãÖ²¦k‹ËõJ‡lv[]Ý]²¥,Þi¦ýmŒãí=Ê?ŽÅÐ!t´ÜªZ…¢²R õf ‚ÌÊþq#‚Wñ“pC­ÙªF1ZÕ?NˆiD3¯Iˆ_Í?NdãËr­¦˜­Õù©…6«5üã8^‹¾&eºrkñETŽÖmm¾ˆÊDÕÖñã¨^Ó£é_7†‰Û D¯ÇEY¯×å!2]Ÿ/Š Ájƒ˜|zMBüX¾(*ª¥÷ÓZÝ/ hC°Úˆ/ ¯Eß8®Û‘ÞÇQ¼†ÂCì&|îJ¹G§F;žŸQ¯aSþZáâCð~úMîª)¡‰1CðÛ”&ñóéµá›ÅŒ¸O®EºßoÃ~™R¦Æ»e f ‚ÎV1t|Þ:®s5ªµmâ:W ðd~çUú ¹-I©FÏÛñ·*q†lã¯>ÝŠ­¶E±iç¯>A#‚ÒöüûMBü¾zd«‡"µ?‚ׂ`ÔÁ¯—‹Á¥:JÍ èìC§Ù‚ ³S ‚wæÓY¢wÑ%Û…OÇkAÐÙ•OÇŇàÝøtzÕZ¢³;ŸŽ×‚ ³ŸŽ‹Á{ò—Κޭ7lŠÐ^ü!@‚ÒÞü¥Ók§ò'Z]6ªê}þD q¦ñ3ë7 ñûò“e˜ªfW)Zûñ“mVÓùÉòZ„ðýù—\F?}=t@LÿýÑk¡ù×<ÄÎàÖTdšÌAüx-63ùâvñ!ø`êÔÊ˦)PœáËhF›?ôf£°Å¡q-솽<Œ_9¯EŸÍW†¥Ð{¿ÿf‚Îá|e8ð{D —µíüHþY¼Ù DÏåO~«Ç9cRƒ=*ŽQ³ ãè8FNƒ=¿VXzÃ,ÓKØ|¾"  嘘Š5[„ð|e[ ËP†Ü?“[hDÐ:Ž?«ý&!þx~[­+ôIú~ùü&§…üò5„èN~)lS¦/bñÇìµ øœÈ_É\|^CgÀ µtR f ‚ŽCÇÁ‡à.¾¸5µ®Òó­Ì´!(UøâöZ„p…/¢F]¶z)NU¾ˆü&DŒn¾ˆš Btº54¹¦Ê´°Õ˜a@#‚Õ~­ý&!¾7.ÄÐSC-&S}r¨ÇdJ‹œ4¾8úå!rÒùcöZ ¾¾]|^êÁO\¼¸.«üÕôc‚¿Z¶lÚðgË?‚)G¸­±ýãzC!Ía®á×aá‚€}þqí!(ÇQP¿Ü€Š]†’ó ]À  8Ï3ÜÉTæ™.€OñcQpÐ?®KC=w`§RW),«°§aI ,Z@žŽ¹dü ,?åh¾ÿ¹LfûLåZ¤€:Ë?®ÏDÝ’ó¼MÀƒôZ|.V¼ÐcèyXñ<`çcÅ#,UÀþ+^`¥òÿ¸Ö¤`.D 6}S€]„Í=סÐųÀ(ä%XY|ƒp—bì<`—aé#,QÀþ % V( /GÇìx”º‰g|îJ´3ÇaÐU(70:y5Ö38w V @×⩤®Ãƒj°â_uU®ø7`Ó¼J®ø7b½ùÞ ànÂf/éUøflö†%@oÁ²ç:º+Z`Hò6l8¾ ¸ÛѰŽã ;а`<òN4¬g8î.,¬ëìèn,l`0ò,¬o,î^,¬ëàè>,l`$ò~,¬o îliñ\:€=ˆ--„e؇0’Uȇ1’¾¸G0a“Þ €Å„z‚} ¼çºìqlð„Ø'°ÁÖ ŸÄNKŽÇ˜§°<ø||I?y~™kXèYl¡Èç°úùFàžçõØôÉù‚‡"#þ ƒtíü"–#ÏIØK8YߢäËX›À¼‚Unºø*ÆÎ»ÕØkØ£i‘êu4ªï¼ð ¼;ç$¨7±):m} ì9l|oÓÅØ;ØÜ#,5À¾‹U.°Òù&\ß«Üû˜¾Hï À Y <3€~ˆ¥½éKê#¬ÃÐ!èÇXÚÁà'Ø à:PúKd`„ò3,‘¾¸ÏѰŽÓ /а`xòK4¬gtî+Ldž›°¯1‘Ö`¿ÁH– ¿ÅŠÜôõVäÐÁè÷X‘Á¹àXz|op?bò&½*ÿ„ <*€þŒŽ\#–Æ_ðéÅñWtäZtyü Ó™ëøèw¬„ñÈ?°Dú†àþôðÌéýÇ?Ž!þF4ý¯„§Æ S·urVüÏ?þ%Eð°<ºQWl¹Tmhe[uîý] £äPmÔͶJ–s‘[%¢; ž峇=½EÈ¿$Žò>‹9Ô¿ÓNÙŠa1;†EQ‘ÐFL·"ËŠŠH´·šnEN)*"Ñ~sº9­¨ˆD›ñéVD ‹QÃÈ…øh³ µIô†Iºj;·¨ˆDo"¥[1,ŠùŸ5µ]’ µ]RTD¢wAÓ­ˆÅüϚڮ΄Úİ(Ô–5µÝ µÝPTD¢¹H·"7‘èGQÒ­ÈmEE$ú)t+rgQ‰~€)ÝŠÜSTD¢ŸíJ·"÷‘èGÞÒ­ÈCEE$ú)Àt+òhQ‰~22ÝŠ+*"ÑïG¥[‘/‹ŠHôkcéV䛢"ý6]ºù¾¨ˆD¿a˜nE~**"Ñï]¦[‘_‹ŠHô©éVä‰ýŽC¿Kãà3uþW¤¬’ÿ-0o¥.Ùê!áødPSJÀïžbtâðq»¶éS;­)ƒ'¶wt´Mß·Ól›^ŸºM{;€'ûÇ^e _7+%ÝPLÙÖÍ’û‘½Ú¡® ìOI|*F‰±Êò„^¶WŠÛƒŽÝÖÖѾ°¾´aV—-\X3¬¾¹ó·hJ»GiŸÔàIƒííÁG3¦˜ûƒ/ ÷ɦê~Í«dȦ쬊YòØzdéæð)}Ã]FrXQªª¦6ÿ3ì¤Ùz%±…]Y¼vVËÉL]U|*ƈ±fN²½ºøT¬!>Ä:9Y׊kc®‹sæ*û/jÝ•pmñjYO|ˆuŇ›ͯ? Í úZùì¿xµlœµl!7…©–ç¢Q6[Y0‰Ì&âCŒbBNd?~‹¤¦ÌleÍo*^-›åD-#äJLµÈUg•¬h†ÕÊš™$^3[ˆ±¹ø[çDù[Fȱ/dGøåZ+Ë~+ñ‚™,>Ä6âC´%±be¿­øTl'>Ä”œd»]|*¶¢´ñÓ¥T{zëša7ú–8c欹óéкóápñJš+>Ä‘âCÌËÉ|8*B޽âNc©ÕhåÁÑâ%³ qˆ+™ùâSqŒøÇçd‚!Ƕª-l#'^*9™˜'ˆOÅBñ!çdb.Šc›65£•Ï™'ŠKWNÄrR„ÜöL±ÈUÃni“O¯%'z)GÈMcêeÖ<¹«ì«·æÜ .u ›¾eÍûÓ–UPE¼‚zr¢ j„ܶLóZøÂ±[¼Vzs¢5BŽ}!·°T–ˆ—Š–©Ô"äØÏ(Uµ–~±¶.^-Ks¢} ‹Ö ‹Áº¿a|¡‰Å"òj ¼Þi)6•àý§ v¶¦4ÁøÀU3¼i5 C7íRrz&0š ttšü?ýRŽ HTML (Tcl)adp text.html.tcl¬xÚV½¯ä4ßå Š‰A³BW#J¨éOŠœx’˜ul?{¼ûötü=ž$»÷¡K‘™ß8ÏwüêÀÏ÷þ¢œwÝ¢Œëþüçpÿ|ÛhW×eõØèwëjBQ–¿iôU£û­Ok¢ê§F“Ïq€öKZƒ>͸ØÃîû§½…rØë¿EÕ¯†ìÌ w§C¥«Npº²n?þkÞ¼íwyïR§tèTœ†¿Ê{ãt¤UAhèó´W6/Ax¸(»ò/„b ŒlÖ 0¨˜6q=5ÂdBD5m"ÌqU”ìZ!ØõLŒŸ (¾©Gx1È\š3ju ™É±½ƒfèF›Ó¼A§HLæì*¶˜ÀpΑÕ̋וñNèh¦k)ûHšDVÜÐAP¢Ì6ÔÞ Eƒ¤Ù[¨Nêžß¬?(œCŒ>2;ú¸P¢2<@JKž³G(îïà¶,PvüµI8\ÀÕÍðRÉH¥DŸô7Sã0.ˆ†Õ5G””&À!]Wìhl·d‹†*»"Õ U[i‘žÌ(ù˜Q=eH o¡‚Ù'ìoJëêôa¬Až©Öp‹ãFÏ4Q6Gÿ0ɉgÃgMU¼1ëj£X?(›žmÑE%ÂQ…¢Ýú©‘èY͢♼ä¸VÁ¹µ×rF`TWÙ‚dsÉTÓ…qeÉ,Y¡qgÔîšAiˆÜ9YÏØü Rº’ µ˜«8…ÖÅšÆà½Õ¨ìÖÆ–Æ­ª¨ÑÒ¶8 ¯ØÝZMeü7Šô|éâÖ÷«h4Ù‹U¢îÕ,‘ºÅ=ÊAÆÙÇ–¹)x9QF s(èÔU²´”Ññ¼÷Jy¬ÁI¦’ŽN+cow1l\Îí›­÷,Š©Óô#±ÌÇ {™8lDà%M©!RƒI¢cV˜ÙfZ²µ^™ª†2€õÅzã&ÁT’¶WÍ¡‚%õÅ(È–»Ç ôƒ}ÔIATZ€´VáÕ6‡–f· ’ýt[¤qp–½R¡¸ǵ¼ŸÙÉŽì>Š: ‡7’.â5 ^ äÝBÞäWš¦CóÛL«¸NÜKù‰Å?Þöò_þ¹Ñ3ÜJÿœ<ÎOÊ[Ngý?É?¾Üþm~;|ú9îî²çñžqx¸güÐ(Õ Ö‹E=v÷ÁçŸãîêòxúºsŽ»ûÊÝåå¯×Ç_¿xyé©•þI»îì) ?6ü¦ÑƒNcÈTcltcl source.tcl end_chars [;\n\}\]]inline_end_chars [;\s\}\]\\] special_chars [;{}\[\]"\\]unquoted_string.[^\s{{special_chars}}][^\s${{special_chars}}]*var_unquoted_string&(?:\$\{[^ \}]+\}|{{unquoted_string}})+ xÚåZ{sÛÆ')۱NJ%¿äX‰õ°M&-9iÓÈM5ñ´ÓéL§ÉL:Ó™” Gx€ñУ:õ«·{ÀHQ©¦ÁÄk±·»÷ÛÇíñm-:îÅç- Ûøpàj:òwþXã•nO&6:X› ”¶.§Ýe´ 9í[F»$§ýŠÑÞÓ~ÍhoÊiÅhoÉiÍh?’Ó~ÃhoËiÃhïÈi¿e´ÇçG-öM £c™83sŸT¡Næîn|¾ÏQ£SÇí lã,eûi|^"DžgÚ8ƒ³{¹8®­wÍÕ|ä¦ÔËU¨y?«B í~êo+ñùq uFÍÕJä‰ä*‘'¢?ι‹F`òŽèÙ[FÄžïšx”!{\J–Hú¤”,‘pMp§ÃÉfböö©à@‡À@s}öúsáãH#öö™€Î¬_0šuÁëbš„Ç‚?€¦HÕ,Fò¥ª I‡"›Ñ=€Í;£ÚTBž®9ÉÛM!¨eùo A!q?F°-è’q;FòBàŸ‹—Â\à`2°±×¯„ám¹šo§M7-{§‡€ÎÊÞŒÇ#žQµÌ ~ÁÈ^ шóFÔÔ‘Ë^wpyÁÀóM? ÏhÞ$KÃi·# ðXsMm`%Ó¾Ÿß y•YÔÓºËÖº¾nÕ2T7„kQ;.:4Õ ¥Ù;è½S=õBí«j¿ßRn aðº+'ÀºhT¹®†&  aƒŠ&ò`ÑÏÄÇše]Ó²ÐH³²¤)(Tµ§ªç¸_œ< Âö»úæZ‡©îFnZc)Oÿ/AV²–¤Âs ¢5Y«1ô4÷¿‹aj±~b­ˆ´hTñXïíÞ7gäÿ`f÷Ú¦6°Ÿh–EÀS @"ƒ˜æÀ_àLã¡?žo;á…†õ±í†—Ûºæ!nà¥z;oûmE€ª—½”\-§"ªç„ Ð…Ó©ž 'b­7S.›òooqßÞÊHð“üãj%Ö¯g0ûªçR¦7ó˜qñ$ IÝ(|Q¬Ná(í¢< À¿éf —9P±ð‘«ªzÔçf_h{v³ÅÈŸ%d2A?(^»Q^ëxæSY6ËÃû”FŠ¢‰¼S4‘UƯsž‘S,EÐ:7ê$ŽªjŽÓe^cÆìeŽò¢2{7®`¢ÇI¨•dÙ…%µî2‹?Éj'l7Ë…·ÞêõÞ_@.èoÒ ElsOZ9ÊM×1w¯1Ÿ³—,x~A¥I³À*9ÓÎ猉mC |þêóº-ûð‘0’ ¾Ôg>+ò™|‘§Ì6Ô¥ƒ\%e%íìDÙ¥Çu™°•Ú̈Nü«]nXNÝØ¾å%¹àC«%™*]CRNrXºö1¬hRZÜL°ºæ¾ÕÜJ…­xÁ‚ÓcŒj!²]û?Ëš³ ²²¿_kIÑ$›)¹|W0L Ö~Œ×ÛGF×°ŸƒÜÌÃÌ&»x!±G4dÂãv‚šk±2'ŠœàI‘i7 žså4 ÙT´^s#Ø%׉²¼Öj3Ïß ÅH~m^Ï S¼,}S+;¤e¿Èîe-=ØvŠgnÚ(ª×dGž5ŸV¶æÝ$•œ+Mµ¥Ð”")s–„Ë`8•Whdâ¼ÌÂBð:;±]£Ëº½”Vq– ¶4 œóù$.´véÔ|œ}p/Ïí%«ƒl¿ª(èñîØ¨ÚogM/±’ØÑKª¦-Žû ÷fÒµT W† áéÙÜßS·ÕóÞÁsõ¢ßV/H•ºNiËË’BÁÅX¨€¼kúgao•o°)ÊûÒrª¨9TèD´©Hå\ä¤ñÕµ¹e\y ?ê²›UæËœgÏ9ÿ*x26-D†Ð@Õ5_ù‹ÉÀEÚaÛFÄ;1éKtjú”iúXáU¢}!ÀøùŸF"–6„Rƒh޾J4×ÕΈø6lß"Ý>Š®Í‰c»~tmÙš]MŽ YŒN¹›CÛŠß~ 8ÆÌ`G ùd0B® úL¬¹gD7ˆNíL¡• Z€aˆa ‚°n ²‡$ú†BŸP™h«Ú%Ãp† _=„φæ(p½tÎÈ0´2ü cgxEI†Và©I'0ÈùYö üÎcºÜ ÓØ÷è}ë.ü møã8䟶‰‰ÛÈ2aK H­H{8yŒc•8ùcÉr5<‚º‹ ¼‚XÒ\˜[‹ÚÂò¨E'hBGx#ªzâ@/&pu¤'šÇ4ˆs4ÚÛÓ>¢×`õ?…BÐ0Fœ”rN @Ö¡w†}í®4z;Ù`7²LF˜Þ´,0ñ:"T"Ô'?iCô>líÇDŽPŒê!–‰ä¯ºEk‡`††wà<ÆŸcÛÐûpkà‡á_ЩŸÐÄÏ~tѱi^òœÂø=u„ïC4rÞ#êô™[ô +Rø¶-|ôñé ð¶O0œ©2cPŽ0°à ß¶’%Ç'šéƒ[Éãuê6k©'G-mjW°ÇÔŽÇÔ2J:J‘ÏòÎÌÆÇ–<]Ýæ¾}—~{ÙÜQ8"—dg+E]YZ8-Ûzêy_^À®çR¼« Y6èÜ&Žâ"GÎY¬$_ÔŠË®çYuƒn5Å‚HqÓb‘±žs–x–*€Ç$Ò*<Í”ÙJw|Å9/î. ý¿ë†ÇuiO/Íï;¼koÉú“y\+3׃5Uã|÷õWäT·I Žáîë Ò%éB~#æ |•þù¬E¯¤>-²÷<á¶Ð¯¸wr¯HðgÏß<—õZÄç¯ žws Bé.CY¯¢Ì¼\ëIhwÞ­0¶f÷Õ§û¦1¡gŠ\SïÒjw>)Öž¦l½Ýþž2¶{;oÇy#áý+EíÆç"þO‹ø¡’÷îk"÷I]IXíØû÷FëÍ‹ßþîåùn¯ÝéWiÝdÆxœÈÞDF°Â!ØœÊÃkEÜ»êbÿ>Ž.Q”Ë4/Ä2šïšS'ºtWƒyP¶«!þ¯!/ò¼æ¬ö†¢îRÕÞPé¿i¦µ­]í?×nü,Éf™7©}{tgŠ®¨«¯®:åqÒ ö>'ÖìžÎÙ-ç…±¿’¦¶À.l‘#¬râ¦ÕuO)žÐÆ"'´QÕõ‹4xX+=•Â^Îß‹öHœ[±‘6µµõJb¸hkKî›çv‚)|NiÀÕç+‰Û‹{V—vîܶíNγuÑœ—ÝxmTá³ð?Jêmˆ]ÜCwwŽ*Ù’#sŸÉT‹e0™µb™‡Lf½XæG&³‘Ô7’ºµ³Ö’úôÕ'Ð#G‚«mìØ JÌoøfRׄ.žÊz'Ó‰6B°oã¡FÐKb;¨ÂI¯óÑd®:²>nÿ T«q´ª {+y~ hšÅôbêtµˆ¾Í"rÉyÚÀu ¾rh_åA#°ç\1®4±ÚzpèÁÉ(ÓÆ ˜RúU*ìÜ™ÈÆÞÁ¾¬˜ª¢+2Žb6€€WFçŒþw¦4d ) ѤF˜ØäTÃpŒ4YÄvñ"ÀêºÐVoæX!p¸hA4p;Oñt’ÓÆ…w˜ÄRºÊÛº™#–“:Ä¡ÈØáG·ZYVªÜt%ιŸð/ØÃ]Yß4µþ‚­vZ¿˜ê®²ÞœwYº†Z”A¾ÄɘZþ.Ë9Çö‰6Åx:î!õÓª¤Ð²L˜Ãû†ÁÛ.@GÁUYÔ[€ôwÂDY©ÔkµÚV-)ÛÒq¸TI¡nSBÄ [k²ÞNÛâÙ½)A~=yóTògzM‰Œl_¢?#wFÿG’ñp ‡(|×GºÈõ›LÉr§Ni Oh;‘¦ÉPSÔ8íi,EÝÆñR¢èáS3•Æ,z2Œ0飩èuï‰}¿I{qêÐ<£¢&I ¤7ÈúªÏ£‘Úiƶ3æYë9æb;‰Ñ¹¹D‚*l™ª®0aŸD5_OÇàù$œï #ÍF6ˆ ´P= XìVW˜ã­ö|pÅýÔ¢ fF ̺fC©q=4ˆZõ}Ú·¸·k6ty/>ãÇk$YŽëÓ†4™b‹Laˆª^›—mI‚Ô#¢¿î@ŠºÕ9aùú5¿º„ uN3[hé þ}Rû4aèV'^1#4÷çËæš ¦ªõ‘oyvج [,Óm&‰‘9ôÅ{ʽ§£Üï)åŽÎY¨ÈŸ<{W”»½@¹øôqù&lÛ§¸¼r>Ïþx6ùà<Ÿ ,ÙcÊxà’Vz™´¥jâÌ•E;yÐGc·oläùo%‘åÃЯ w›‹z§LÌ;× â¯K} pß)ûÎUá®3܆A¯óT˜âŒ&Þ‡.^êUV¸¢ nð›Î:#ã~ë'sµ»åÔ߲ÈZøÐrÑËâÝð*üµk¶4ÒPô^\R¶ ðõ×:É|à¹h$V÷TŒìÍõNŒ6¢æK ‰TTü¬tÑ€¬ê§(k™p´ÒpD;àÿY,2s ÿ­jŸÎ™•¼ ˆ×Þàó>ÊüåýªXMLxmlxsdxslttlddtmlrssopmlsvgtext.xmlt(?x) ^(?: <\?xml\s | \s*<([\w-]+):Envelope\s+xmlns:\1\s*=\s*"http://schemas.xmlsoap.org/soap/envelope/"\s*> )name[[:alpha:]:_][[:alnum:]:_.-]*qualified_nameB(?:([[:alpha:]_][[:alnum:]_.-]*)(:))?([[:alpha:]_][[:alnum:]_.-]*)wxÚíYiSÛFö¹ï499"…È$ô˜)<”ðÁS0ÌàΔ±l/XYr%9‰ùï]I»òîë]YÆ@ùP}`ôh÷=ž÷ØÕt*¼~ ãœnÙVM÷<Óp=­‰fíC!Å_w9lÃn·‘åõai2¾à`M»[7‘öO×öPSs=ǰûïd„b ùS1²d|,ÄvtYn=AƇ<Úò ïLRÌ59f‰b®Ë1?QÌ 9ægй)ÇüRϘ_)æ6qËötϰ-`×;BB¸˜rBÜF®Ч÷€yk5×Ó>¾4`éL1À„Æ@JH} C—ci[†º0!] €ÒTë¦ÀË›ÜSn™§À|€¼6‚ƒµí3àbΩô8«¡·^KãE~pnËîšM­Žî%0¥ˆû Ä„§bD÷à€^“q:%¾ÒL‰nø×ý1KÕêZ ¯¨Ÿk¢Ã2‚ŸxŲ𹣶f®4±%d¼ÿ ,xŸ'_®nÚ/Á´ 0ÊJåÖ´HØùxaéÜœÀ\¾Ó¾/½?¡³}ˆ˜óU7fÎ0Mt¨›9­ãN YÚ7Ãk–FçöçͲŠQ†žË…~$s@ý„®˜¥?ÞÄkGˆõƉ7^^?¸˜¬Ô•ÍíÝÒ~o½¸¯Vêi¶…“6ªíµÃ›–•þqŒô“ì š–”Šª*åwù…ªšÀ bÄŽDÃCÇîv|Ùàû”ù_Ðñ7ÛiæìrtÏvXl?éÎín|Z/­'5ÇÚ@“$Ë2ïÒ|W~ß‹^hê"?¡qïbþË‘\(íq^Ös´„u†àUV`ê¦J•¿×{(‘ã©äþ#Éý’ûÏ%÷_=§X=}ëuÔqìr]â@0Ñ@2­äÇ‹ì :» ä—•r¥ó}ë¤V Gü§xRËiÕwª²¬ªù˜Ç«L`NHS%cX?I„àÇ1ê]i.Ã9ÿÛшº ¨Žqà׿bÂ[!{ q¡ÓMºÔ5~mã®MÝþÚ§渇m¿Ò5¼ãŠ-ÃW"¿SÖÔ––8-9«„‘6¦»åNÒ1,æÏ,½¾äòŒ”2gœÎT¸ô9Ç AÚ§®E:´FSÇR%¢Z]£E»¼USܹ†û‘DëÛÿ¸sMKÞy&Àú=~ðÐQÔ¤SÃ.Š`W¸—J VpýIFeeFUÖK¥­Â^Iõ«gX—¹â¸VÇ!‡Î‡¨Ž KÔÕÒV‡¶—ä@ATü(Ͼꎡû»²ÓÕ¹ç;X†e¶N%¶5]teFÓè%ÞÑv”ÚCêòtb16vo…Çp2‰EXdY·¹µ¹½YLºh¾ì0‹aË(Ì’'›Ø8QׯŒº”zf"ñâKÔ3ó*n åîèÍ•?h¿UzsG•Ö‚ªü®¦AFŒ¶ŽnxÓ“#m(–TºÛdRGx5›È[K‹¥Bi? éü'Ú=¹ª„û½ý½Òævo÷¯?¶ jðV´Øä9Pø¤pdoÈà™øUú/NH¢¤Oý 5z,”†mèET=Nʧ`€4T®ˆÖUgÿþMx/¢K%¯*#hµâöëaæ³qCP¬˜¾_¤!wÄúÈ’üÓÎFiwÓý!Ù˜aòE$cf'—›‚ŒÄØ®ŸÛŽÍÈ×X‹ŽS‚«ß -æÕ±ÎÊŸ×*.Û Gx)!„ðœ 3œE#œ>L$…;q€6˜&#<õ®ëMÍÿ¾0¬»Î±{–óžï“bó»#¦k=(W©œR*L4ø£Ë±‰ÜB^Ïÿ·m7É>=¼E½tˆK›©*§Ž’Ÿ)ý]-··«es«:VÈ]bÜ’%Ÿ'¬i¨¡Vf*åà|¾_ëΪi¿ÍùBp¦0+ánÛpý½¸ÖoÄÇóIvÈÁ¥±•¨¸SZ/vЉ7›çQ…à· úVT†Á2Ä‚eÆ¿“Jjœijœ7ªÜLNé!èÂáâËÜgà ÿš‡]¬(­êmüáÉÕÉ™Nv`’•Óò{¨«ŽŸÎ*TïÆ±eBØ´}\ïóXYÔ?Y_~ªóÿçÁÏ!|9î´±,çã?`©Ì˜Òzpû/Á›H®YAMLyamlymlsublime-syntax source.yaml^%YAML( ?1.\d+)?_flow_scalar_end_plain_in|(?x: (?= \s* $ | \s+ \# | \s* : (\s|$) | \s* : {{c_flow_indicator}} | \s* {{c_flow_indicator}} ) )_flow_scalar_end_plain_out<(?x: (?= \s* $ | \s+ \# | \s* : (\s|$) ) ) _type_all¡(?x: ({{_type_null}}) | ({{_type_bool}}) | ({{_type_int}}) | ({{_type_float}}) | ({{_type_timestamp}}) | ({{_type_value}}) | ({{_type_merge}}) ) _type_boolb(?x: y|Y|yes|Yes|YES|n|N|no|No|NO |true|True|TRUE|false|False|FALSE |on|On|ON|off|Off|OFF ) _type_floatî(?x: [-+]? (?: [0-9] [0-9_]*)? \. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10) | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \. [0-9_]* # (base 60) | [-+]? \. (?: inf|Inf|INF) # (infinity) | \. (?: nan|NaN|NAN) # (not a number) ) _type_intÎ(?x: [-+]? 0b [0-1_]+ # (base 2) | [-+]? 0 [0-7_]+ # (base 8) | [-+]? (?: 0|[1-9][0-9_]*) # (base 10) | [-+]? 0x [0-9a-fA-F_]+ # (base 16) | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60) ) _type_merge<< _type_null(?:null|Null|NULL|~)_type_timestampê(?x: \d{4} - \d{2} - \d{2} # (y-m-d) | \d{4} # (year) - \d{1,2} # (month) - \d{1,2} # (day) (?: [Tt] | [ \t]+) \d{1,2} # (hour) : \d{2} # (minute) : \d{2} # (second) (?: \.\d*)? # (fraction) (?: (?:[ \t]*) Z | [-+] \d{1,2} (?: :\d{1,2})? )? # (time zone) ) _type_value=c_flow_indicator [\[\]{},] c_indicator[-?:,\[\]{}#&*!|>'"%@`] c_ns_esc_char,\\([0abtnvfre "/\\N_Lp]|x\d\d|u\d{4}|U\d{8})c_ns_tag_propertyM(?x: ! < {{ns_uri_char}}+ > | {{c_tag_handle}} {{ns_tag_char}}+ | ! ) c_tag_handle(?:!(?:{{ns_word_char}}*!)?)ns_anchor_char[^\s\[\]/{/},]ns_anchor_name{{ns_anchor_char}}+ns_plain_first_plain_inC(?x: [^\s{{c_indicator}}] | [?:-] [^\s{{c_flow_indicator}}] )ns_plain_first_plain_out,(?x: [^\s{{c_indicator}}] | [?:-] \S ) ns_tag_char7(?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\-#;/?:@&=+$_.~*'()] ) ns_tag_prefixN(?x: ! {{ns_uri_char}}* | (?![,!\[\]{}]) {{ns_uri_char}}+ ) ns_uri_char=(?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\-#;/?:@&=+$,_.!~*'()\[\]] ) ns_word_char [0-9A-Za-z\-]s_sep[ \t]+L xÚí[ërÛÆ&%ÛJ˜‹ãÄ©ã;(Z@ ä¦iÂZ¦ýÃêÔãÊ3•ýÃ! "A `@P¶,(¯Ð—èôú y–°Ýpoýi‰=¤È ‚,ç!ïä\r¾*@;¶gSÏŸÏǦ\HΗl'è÷?ÊH^œK©]JÎWX× Nä9½!‹=/x­÷íÁÀõ2ìB¢ËÊýÃ`Êf%˜Jý£ä\bAêÝ`´ï9ú£ rº+'ç[Ò‰Ïv}Ýõ³9Ÿ$çÛ9s‚¥˜Os9a 8$šüR0ÑùqäøJ]Ÿqg „ÁÀ £ã w…³ƒ½½>àø)gå éÝad‡¹ý÷l°Àó õ)™«œ¼0.1›§Ü²* ȺAüIˆ€ú'ˆkœ2i"˜¯8=$˜D‚u[yâ8äö ΀S‡!€›œhR€Þs}wxø”37²&¤NÛsíáSθ.Óˆqßá–N{&ÁÜå¸FZŠ@ ¸*bô#Û¥t9o¤¬›@jœ ¥.J&ÜãŒIäš»Äñ!Âênà¹7Ò£ãAÊù2gBg&àn-B°ø9ê„å3þO&hœ1~O@u.GоÜàîÑz_å7‰ä¾ÎÙ¸ôrŒä¼Æ¥Iâ}'² Æíc»ï•Rx™§”òÉ„'µµi¶´txn °«ÔÕf (—9~ÊÜ‚#¿lèHÆÐØ¡¡ñƒsŒíÙ ™ÍF¨4Ëœ½¹>˜æv xçíΛðR§«ûÎkÏõ¼è9B.‘nü!Í<ÅMC¥'n¥"{Ó¬( ø„‡9¬ƒ«~óž†b0ÐPÌZzQWšŠjcŒ ­"ù×쥽kÛz«¹j¶Mëä´¶\¯ÆW—ýÛ²*v»ÕÔ-Åܡȕ)qÒK™ãŸGâÛ0 ¡BF>vù™ü É–ªÝèØðí¾cD6kl´IqcÙ$^ïªmÅjhj«ªäK‡¡æ¨]è;¼Ü gyÊzž%'‰PBÖ¨çi±Þ( E^eZå+ÙbªæF „œHw²\˼RÉE­Ì™+íò]fcôg².­Èõ÷ˆ|Ì­L—øÇ‘l=™œŒiR´›~l¾×#<¾ #jZULMI¬Q_=þç3­­˜‘ÕPÍnÃ4ÀG<ç$Á“ L¾®D‡NÈñÂDÌ2—Ž;êH  't;¬9áj^Èä}‹Qú/™ãjõÅ㿃ÏV¯§¢¨àï*¼^׿{¬oëoMݪWµôÔaIüª*ÌÇ•%<{ËÖ{ÖÉýSÄ(rµ¿­µš–7÷V÷ŒêOõUƒ±ÏR´: xÀ†Û«U-ílMS´Vü¤š—hHÉÑ ‰¼‚n¥~„öÀÁú¡íw=¬ÙyÙœÑ`„Q6gïz3…:×(u‚¸úº¡Ñj]k- ‘\i,qòÒ¡ð$IMʲ‚%‘dÔÜ©°àŽ ¸).¥‰¡O8­Ì¹= ôþ 7zÌ‹’†yJ¯L­ä)Žß¥ †µU>Dˆ 3†ßyQz«J¬3[3Ü­Àt†jòéâf%5ÐÍöé*ðÊœ\K3C+4Q²mÂìMj‰¸ƒÆª¥¥d•ÚÆ"¯€kb9²…ƒ_å2½ÊAæÛg­±²ñTHÔ(=&®Æ±¬®[ŒP· Ô°ñϾ- ¸†uýÙKØß‡x K×Ùu’°‡võcë`b 1rÓTÛëö~äõBGY\3Íí½g+~cvÍn<2»'_ŸÆ/ÁéÛÓ1I«‹Î!pŽŒ®ØYƒ¬Äô¨ Âxºiš>_3%9^³õO™s IÀL䯯Ëò4Fô1”b›:ébÞçÆm²-ãÍws¢‹••âÊ´~df´ò.Ìh<à“fÒt91­,¾ì‘qES¤¨MLz,ǹõ€(óïs8Hûkl³ÆÄ*²ÉU—5æhðk'kÀäÁ6ÞÜiL¨LÉŠIO“ÔéÀ0¢0ð2l¿sàêpq²X)$_ÂÞd\S“xe-­ÌdO,•þÏ'תòàŒûåa²—’ìæ¦#¿g âhCÉV+,¼”ØŒH8˜f7D/‘ P=¡pW"D9&Ô»^Ybα¹l 2 F!åÙåRÞ!ªg>—ƒÇ9“pz]2þå´eR¸6 _IƯJÆWrL^ÄÛ«V™S®Äó³Òß9 ó¿H‡ìñŸÌ[aëd³‚»Óvsá´$óÂYMR4áÝ,ÃnHÍZ(ß HÄà¥n*k•\Kdí—¼ÉcvPgÛ7ÍOkŠè¸™Š³©š±«56ôï,­¥¶õ†E¥„ [¦)ó)¦hƒ~Ÿ Z‹ ÛâN›^˜J/ðºI©Á§bwcí:×ï‚\‚D ^¤uÝ%$Á¯JåBh?èº=$:úPÜÜ|™ÂçK3„tWVª{ë =Nî®Mö*ܪN+ ëþDÓà{õ¬¦²« ÆU:î`!3kÌýâÌ«'v±»T0˜d]±Áda–„ÀyÊ&ixà.trUöû–Ôw|†ù`Áᆵ£§`ªG³.¨òЀþ6wêʽ»“¼½ôG¬V'«(ò^Or둺6Ük'U^:áLEÞü´šæSb]2~÷¬Ömžam²èHŒ/`ÛLcÛ²ØmÉøÉxmŠgŠwaï¥høaælh›¥hà[i|AÝ#•7å}T•’D- =3¯_KTÁ¼¨Ë:ªPÐ3•$2®Ç…˜4~ßPÜwäõÁÏâ2÷$ãšd|iÖà1Ö”Ëë[ànJwù¸4CZœØ=”¹Ü»iYËXÿ¤4«8¾ÀD…„OøÖy^¼>^>{ÿ„úmqöÞõ8~;Ãøü}²ûñvìñ6øy‘Q8râèã_/ŸÄ=Û:ñþ|ülç Ä~üülÇA¯?‡¿[[þA ,Á[Êú>l l쬦¨ûöÐQîcdr_÷ÿJßÿ–¾«¹õ•õ°Å°gÕµ¸±ÎPzƒš %4½oh"¥$´yØåø‹Õ‚C––MûP—, ÎBpB¼5 ta$DÛÎ ¡1ô§$l3tDü$„á]šµŒÀi®ß‹ÿ··ˆÀ5ô¦c MZµêÛ@íöv¼ýxAý RlqB°hô@Ñáù~vÎ@áXïë]<£åD;vˆ›ÅˆØÆêýS9¸ê¶ÃÂè®}Œ±H /"+Ýhìd€=} nŽ­iœ ×ENaøÄ~7c~Ûš‰Þƒ |é„JöÅüØý÷É V|ºd3É…ÖBɃè'FnßQÞ¾“)|39?xþHãÊoöÖ"«¸˜GÎd#“î‘=Û?Á­. {Â*ýŽtÊ~xŽí KõÛü¬l39Žxû}S6 ”6~¹r1ï9xu®û4é7é–tIYµ±Px`ñÀy7[æ‘ïä ‹²ÌùéÌ™ó¿ç™óå}BL(ýæ„ð+«3è¤ø£pz\HkªÍj¼œ_&])M8dUÜ É8yËõ+ãNÈðJ(testdata/Packages/ASP/ASP.sublime-syntax-testdata/Packages/ASP/HTML-ASP.sublime-syntax:testdata/Packages/ActionScript/ActionScript.sublime-syntax8testdata/Packages/AppleScript/AppleScript.sublime-syntax6testdata/Packages/Batch File/Batch File.sublime-syntax)testdata/Packages/C#/Build.sublime-syntax&testdata/Packages/C#/C#.sublime-syntax(testdata/Packages/C++/C++.sublime-syntax&testdata/Packages/C++/C.sublime-syntax (testdata/Packages/CSS/CSS.sublime-syntax 0testdata/Packages/Clojure/Clojure.sublime-syntax $testdata/Packages/D/D.sublime-syntax *testdata/Packages/Diff/Diff.sublime-syntax .testdata/Packages/Erlang/Erlang.sublime-syntax5testdata/Packages/Erlang/HTML (Erlang).sublime-syntax&testdata/Packages/Go/Go.sublime-syntax-testdata/Packages/Graphviz/DOT.sublime-syntax.testdata/Packages/Groovy/Groovy.sublime-syntax*testdata/Packages/HTML/HTML.sublime-syntax0testdata/Packages/Haskell/Haskell.sublime-syntax9testdata/Packages/Haskell/Literate Haskell.sublime-syntax=testdata/Packages/Java/Java Server Pages (JSP).sublime-syntax*testdata/Packages/Java/Java.sublime-syntax-testdata/Packages/Java/JavaDoc.sublime-syntax4testdata/Packages/Java/JavaProperties.sublime-syntax0testdata/Packages/JavaScript/JSON.sublime-syntax6testdata/Packages/JavaScript/JavaScript.sublime-syntaxLtestdata/Packages/JavaScript/Regular Expressions (JavaScript).sublime-syntax-testdata/Packages/LaTeX/Bibtex.sublime-syntax0testdata/Packages/LaTeX/LaTeX Log.sublime-syntax,testdata/Packages/LaTeX/LaTeX.sublime-syntax*testdata/Packages/LaTeX/TeX.sublime-syntax *testdata/Packages/Lisp/Lisp.sublime-syntax!(testdata/Packages/Lua/Lua.sublime-syntax"5testdata/Packages/Makefile/Make Output.sublime-syntax#2testdata/Packages/Makefile/Makefile.sublime-syntax$2testdata/Packages/Markdown/Markdown.sublime-syntax%7testdata/Packages/Markdown/MultiMarkdown.sublime-syntax&.testdata/Packages/Matlab/Matlab.sublime-syntax',testdata/Packages/OCaml/OCaml.sublime-syntax(/testdata/Packages/OCaml/OCamllex.sublime-syntax)0testdata/Packages/OCaml/OCamlyacc.sublime-syntax*-testdata/Packages/OCaml/camlp4.sublime-syntax+:testdata/Packages/Objective-C/Objective-C++.sublime-syntax,8testdata/Packages/Objective-C/Objective-C.sublime-syntax-/testdata/Packages/PHP/PHP Source.sublime-syntax.(testdata/Packages/PHP/PHP.sublime-syntax/.testdata/Packages/Pascal/Pascal.sublime-syntax0*testdata/Packages/Perl/Perl.sublime-syntax1.testdata/Packages/Python/Python.sublime-syntax2Dtestdata/Packages/Python/Regular Expressions (Python).sublime-syntax3,testdata/Packages/R/R Console.sublime-syntax4$testdata/Packages/R/R.sublime-syntax57testdata/Packages/R/Rd (R Documentation).sublime-syntax63testdata/Packages/Rails/HTML (Rails).sublime-syntax79testdata/Packages/Rails/JavaScript (Rails).sublime-syntax80testdata/Packages/Rails/Ruby Haml.sublime-syntax94testdata/Packages/Rails/Ruby on Rails.sublime-syntax:2testdata/Packages/Rails/SQL (Rails).sublime-syntax;;testdata/Packages/Regular Expressions/RegExp.sublime-syntax<Btestdata/Packages/RestructuredText/reStructuredText.sublime-syntax=*testdata/Packages/Ruby/Ruby.sublime-syntax>+testdata/Packages/Rust/Cargo.sublime-syntax?*testdata/Packages/Rust/Rust.sublime-syntax@(testdata/Packages/SQL/SQL.sublime-syntaxA,testdata/Packages/Scala/Scala.sublime-syntaxB1testdata/Packages/ShellScript/Bash.sublime-syntaxC?testdata/Packages/ShellScript/Shell-Unix-Generic.sublime-syntaxDHtestdata/Packages/ShellScript/commands-builtin-shell-bash.sublime-syntaxE/testdata/Packages/TCL/HTML (Tcl).sublime-syntaxF(testdata/Packages/TCL/Tcl.sublime-syntaxG0testdata/Packages/Textile/Textile.sublime-syntaxH(testdata/Packages/XML/XML.sublime-syntaxI*testdata/Packages/YAML/YAML.sublime-syntaxJsyntect-no-panic-6.0.0/assets/default_nonewlines.packdump000064400000000000000000013167221046102023000217530ustar 00000000000000K Plain Texttxt text.plainYxÚ…ŽA €0 + >Æ/•<*¢9ø|®²ÄÒîe ÍfäIƸ¦y—þû=-ö>+Ø‚\mÀ ù(õ•vp×{Ð¦ËÆ}M¥gqè/aÁ SÑCASPasa source.aspapostrophe_comment_begin'asp_builtin_classesB\b(?i:Application|ObjectContext|Request|Response|Server|Session)\basp_builtin_eventss\b(?i:Application_OnEnd|Application_OnStart|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart)\bclass_magic_funcs)\b(?i:Class_Initialize|Class_Terminate)\bcomparison_operators[=><] constants°\b(?i:vbTrue|vbFalse|vbCr|vbCrLf|vbFormFeed|vbLf|vbNewLine|vbNullChar|vbNullString|vbTab|vbVerticalTab|vbBinaryCompare|vbTextCompare|vbSunday|vbMonday|vbTuesday|vbWednesday|vbThursday|vbFriday|vbSaturday|vbUseSystemDayOfWeek|vbFirstJan1|vbFirstFourDays|vbFirstFullWeek|vbGeneralDate|vbLongDate|vbShortDate|vbLongTime|vbShortTime|vbObjectError|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant|vbDataObject|vbDecimal|vbByte|vbArray|vbOkCancel|vbOkOnly|vbYesNo|vbYesNoCancel|vbAbortRetryIgnore|vbRetryCancel|vbYes|vbNo|vbAbort|vbCancel|vbIgnore|vbRetry|vbCritical|vbExclamation|vbInformation|vbQuestion|vbDefaultButton[123])\b functions"\b(?i:Abs|Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year)\b identifier/[a-zA-Z]\w*|\[(?:(?!%>|\]).)*(?:\]|(\n|(?=%>)))keywords&\b(?i:Empty|False|Nothing|Null|True)\bliteral_number_decimal`(?:(?:\d+\.\d*|\.?\d+)(?i:e[+-]?\d+)?)(?={{whitespace_or_end_of_statement}}|{{operators}}|[,)_])literal_number_hexH(&[hH])\h+(&)?(?={{whitespace_or_end_of_statement}}|{{operators}}|[,)_])logical_operators\b(?i:And|Not|Or|Xor|Is)\bmath_operators(?:[+*^&/\\-]|\b(?i:Mod)\b) operatorsA{{comparison_operators}}|{{math_operators}}|{{logical_operators}}rem_comment_begin \b(?i:REM)\breserved_wordsÕ\b(?i:Class|Sub|Function|Const|Dim|ReDim|Public|Private|End|Preserve|Select|Case|If|Else|ElseIf|Then|For|Each|Next|ByRef|ByVal|Set|Call|New|Option|With|To|In|While|Wend|Until|Loop|On|GoTo|Resume|Let|Get|Exit|Do)\bwhitespace_or_end_of_statement@(?=\s|$|:|{{apostrophe_comment_begin}}|{{rem_comment_begin}}|%>)´xÚí=kwÛÆ•ÔÃu’¶±ÇIœ¦íH6i™´G“ª–‰’l9z­(Û›ЍA€@YìÁ9{öãþˆýûgöìé½ 03œAŠJ“ñÞ™¹sßsç¡Ý\ø¹]?7lÇ®-Ÿ¸µñÛN³fR{8•?à Jh£m¸I©F)ÿãèú©PÊvü±›5§U½õ *yÒÒ ¥êÄ€œ|]ï ~› –÷¬f­Î¤Ìqkži[$Ä8®á’ú×jô§$¬/Ç¿®Ï~þ£$avpJ¢ÙG*À®áü3ÜBŽzJ–xBX`¾ã²·$¼C…i’–i›X±7% ð; êç’¹c{JRŸßÇ¿s–šÍK 0¿#Ù•òİz1Rw%«Æ+ƒÉK4”«å¸Äh´k‰$QÀ}gJ’Ef~d]ˆÆ¼ûý¾Äby¬ •k*Î °(ñ Ü šPz’–Ie¬S‡‹KZÄ%v#&QI’ÿÁ’E¨‹¨t™y(ÉOâþÄ#I$9ÙL,mÕ_H<DqHŠ/%á3-‹à˜_IñΉÁ|­†¡êÀ`þ,YWµƒaÐßHâ§‚n%rÿ­dÒü+óÉJiÊ Æ&üX”$JSˆ³¥¬ä_%›¬ww¬ÄcÉn)Ý\Û´â&–$§¢ó‹ þ‰ÌÞ2 e5Þ‘qÆêœž+ñºZ0U$Ññ5ç»@:´*Ɍڛ2èrte10ï©Ö$û¡¯0>ë’}R¸« ‰Î|d¯"ÈÓèÊ¢—4“ð,º²¨×éjácü6%ãè:P›áuÙïÏ%›’Ä â{I†‡Ç¬äVteáeÏi‚UyMbjoK>1\Ó¨Ce zïD×Ýœúƒp3ü 6dªØë+ ŒRÈŒPäÅëÄ€#£@·g7üP¢Jô¯¡¸–€O·šŒñæ„7üLæeøa!T~y©Z) ôQ.<%÷wì^ò­Ìò;ÅaTæ "‰§ÒzÃT Ÿ_6Wûû¤¬ö_V¡ê-–ó‡Fñï+Åÿ8ª¾¹TóË‹ùå[óO‚êQ¡T¸Õ£ ?@»óO ð‰1œ–:/ˆh‚qLJ§v/öÂØQ¹ôg’ø•h(IÀ –ZÈqdsD¦]‰‰…9¼_8*di0mµL`AèKK‰Š©ŠÐgt‚.4É‚¸ªw/_ÍòÕP÷ÞPZ}ž"Ô†ëýR›¶Š`·†ÔA'ñŸÉ²&ÿ +¢x¸„V¦dt°ÿN·Md±ÖTû\¥EsƒrÌ#¡I—t&ÙVOSõémŽ×K›§4lf}Múo·YbŽºã™Ç6íbÄ©i§î(ÞÝÍ¥Ø`¡btмÂ($xi‰Ì‹ÁÝ ZÇ_÷×· Õzª.zîQ„RÂ…²ƒ7ú<†ß(Þ}¡x÷0—úщï7if5|¼©tNù1Ô1§³Doåt²r?“¬””8DcÇ3Å&ˆÝ5˜]ÔQé~:q¥»Á{§°»I  sN©š’¸ÿ‘­–Ú¯=Réõ}YÍÔ¤ «ÏnÒßæõf©Z*Œå>¦3ŸÅÖ>9õKm¿c ¤EˆØÃãù¥ey”¨"/Žž›MÒŒd8 â‹4„”0Mz>—SQœgÉoæüó ê·!¸X^:üññ“£{Ox Õ7 Kôý´$qáH¢ôSÏ╚N$ÂE8™ŒÊ¡È ´G6ÖšUP<Ýô°ª¦¥î U]É`»„T Á¯¾q\¢Y€"ã\ØT2ì~ÒY© ¦.,iû—aªÏ>\¼ûx¾ €‰‡¡i¦’ã "³ejZ¾›!Ùp·ðŒ„ åÍ ž\|‹ù.>¼g‘¯ßï’„Y5—™\ÅR{¡w.c]©^{P®øª·%=L™P`®Ç|¼žÖQÁU”„Ž>%~°âgë®.túNñîiNƒÐ¶$)CCŸQ¹)v2k$¦4'ª¨*‹Ÿ™xŸæ…>m¶& žç†kAÀµB3x¿d|ïŠòéª `+éÀSU›êÉ·BO6¢j‚J¯ì¹8òû©]›²ÙÈ¢²(±ÆÑ.TJ÷ä™9ŒAhºè´ŠáY=³§¦>Î¥ ¨ój|ÚJ04(sÑk„tœ”eWÒd]g3<$eŸx½ØqââLãÕ«*QãÛÑ×8¾ <œ@ícËó¸8L\^šÇ ¤Åz)Åþš¥€Ü¯5,~â<¶ÓsDÎ×¥#'#öin4{•-hùªÆ$À„8%Éœdt$?31kÞ%e‡ôN… :¦MǶ¢ªN5Ç)é·¬ò;©ìôè’J&±a~œ7–S$‰ÂM2=¬5v3*Ã|XõoIr S§¬Qº¹ Š*ÊTšT§ ÏÐ6ÞLh8.9¼Yõ†ZJÂ.«¥züucðíð)2Èï¿âûÈ¢õÑ&HäeLˆšß/á„cÒ ­íøsNƒYfW'ˆå…/š‘:K±§±FL˜ýNà}è¢&ØØl.ƒÕÑ™”sdèÇ*†FkvRyzižÎœÍFN6‹<¯ëÁ­\ÚGkJÞ¢–ôó)çS²xèç'VìÎaûööBþMD¦Õ.=y \_^<\¸÷ãÕjñ(ÚvšTˆžVìf°ãøÁ®ü»ã›V¤vTDZlØÁºf2®>9Õ&§Þì4É«,¥ë«Vªnz¢µärÿÍ;ËÅjs¡Zª6AoJËp_@šÃ…â}Z.üŒt¾­£3 · ¿Äu†“Žÿæm×IýÀí‘ाaX^Ë.ýÚjá;ÇílÒ„[ú¼CÞlÁ0ïz–Unnt[¡Yhx80êðý³fð§Up²n¿ìt0|DÇ$O•žÝ4úp³íD7=â…w¯HÓf÷ížÝn¸fxS1üžÞ¾ðH¥ï_3ú»­W„¼F@Óõüç†ýˆÝo@T^ü ¸G°O‰ 3’ÖØ]Ç>Žn+mÇõ¹×f'~ÝïÖÿAѺë:HõN×ïG„Ëf(óQi,IWªÀÍÍò#¹{.® ÀB¬QFаj¬5ª}Õq,bØHe4a¶2bÀµëÚ§u­à¬VõºlØ bÑÛ]ÛÂw?oÇa×øç•:ômŸønóØv(›èS àØA‡ÁbØob*L&•ìÄ)ÛÕ@J™{ú7`{t»FZFÏòW{¾ï؇¾øòˆó¯×e¡· û¸‡ñ•(çw2%rЪ6R—2ÅŸ«å¶½^·  c¶“ºfQÍmy.:}–føÀiuGy™1R2r¤´ ß-™“u#µ®š_¢x7|~]L¯„)Pš– œ/ºÇBWdèš“)IÈÖÓ!BÓ)ÅsœcsZHH“24¾´[‹vEMpgÀçu£1A±T͸ïxÝ‘ñ:_„î¥!$o‘¡"†9‘r*ÅÖØ“[M£êÅ·)"0b/fô½8pÎwMª_¦ rÖqž°0Dòº ŠÛš÷ëš÷;)müÇ¥ŒéñÊIpðQ&Dçh/gu´r2– Vøo±‹f«hÀL.I–ç‚ñÀ&'\©pp¤æ!5B#ˆ(Ž¿Ç].«©ßP³/Üì"Å>#'m¶^é…òܺ“­:mîY1e¦jòÚ@ 9~}“y9w 1°Ñ/6,Ç#źk4^_š¼È[L¢–„žÿ y‹¤7y‹‹¼Å¯9o‘–YH¤üö /å+u/ɰÒl+^#Xñí Œ´„o$Sx”)õËkuxÛ†G`]PÞ>”û„¸¸ÿÒƒ{øs @F$/W8Ðâø…­àuÍlµèÍžD› è'o_âæ\¸ëkðòÔlÛðÛÁº×0º$X«¬ŸšžïÁ¥l˜L´”b±À„XÅðq§‡?zØ#0ýxJü-¸@ð.Âîp Ï3r<Í6ínÏ_uNá»C¿÷ÉI€tØ0áµqÓ£=ÝôBQßô¨¨ã…š¸‹Ø…¤_^ðÜ1íà{º·µê€Î[˜(¶H ×çÙÁ–c4÷L°Ï ;[Îq°uàš`Ÿ~Ó/$Žl›@&ÓîAó`0€\ô{fP‚mïqßqÞ»Ðö>é8'$º¬~û¤k xót5Ø7ÛhìSd* ×ìúëö1š7þaµgZÍ—!ï…¶¿9®òÓæ~ `››¸ø0"~å^%*]D¥ÒµL?¨üä@i´‰A¤ø!á¡€²SæâW$>xŠÏH?íý‹ª/(U_€Ù¤R6!4rh(£+-ñ1\N¯>’ô*^ó4 [ãeµ³¸Ê©ëM>8/”)ú¿.EÿaÜh“ôüŒ˜`ø?¡e:9MWšÅËÎÊèzƒ5U‚ß{`ÒAö@¡QEÖ%{.ñˆ ¢¦ÈÊ¡ÍV°ŽÃ/¸Ç! *l€Y•W(Üö:”(4…¾»]Ú2¦ƒ”3—¾"È\ ätƒ];xê@¸ð‰.‚ÅŰ`Sa‡ãÌ}M¤9°J„}¤fùÙØI\+VVügŠp9×Oè0 dÍ"¾ÉWK~/æÃcŸÍB/[&À2Æ$-ðCháçµ . -d~Çí3µC>¹/£‘†…ß°ÐCxlª°÷ú’&f}OÒ£x¦~Z3æÉd4Äó ÝÒt|>•w³ ()ÀÎjêi8–Eâ2—†ÔßVTŠñÿˬðº DÍ ð…Ï€àVº]ÑÍ{È¡W;  q©ªlX=¯ Û4]Ôú30aµ×jAù2è)‡cø£OÕÂi‚w=F¦B eûÔÜÄdÞ¿;4¼ŸÎÒf+ÃB8ñl€089ßõJÅÜ9š‡k:Ž/æô›1øŠ„š ™f²ðõªÄ×xc½n™qк(_çÛ zUËÐ¥,$›0o?'*‚~×ùN–- ÆOvÅø™Çëßk\e =ywb¦ G?£)b <²ö ™° ^Æ AçrÚÝí(^óqÔ9ôM>÷>ýä>ÌJ%‡Cð5.§¸¤"vµ¶+wèٹ錹;“ÝÍÍÉûäp«czxª±bÍdjÖQÖ=åÑrw‰«³Ÿò~õÁ8‘¢Ü,FM‹Tew·ok×]â9ÙFO¾ GkòY«)“øó F«ÏËË>ìŠå ^“ýWï.æý´J®?R!€ŸÁÃDx^AåÇ<þ÷ÃXâaî‰&¢ÐÏžâðØô òqˆÌæk#›…³ZŽ’Î2´ãsx‡w3£YóìÇÇÛ8qä£à&Ú5]LxSó^Ø ò?‚Lsé—Ú®9UñMÿ‡ ä;éd¼Ai¦†…WBê`B)úoaEÉ­DÊõÖ6Ñf€~ü—zà‹ƒèĜƘ–¬,&Ï ÖãɾŽql6JÊrvŸîLþAp²!‘ýà®å,>~´(`#­À¬ Íųü5­wg¯ò]AÚ#Ûsw(n䆨˜Šâ³¸VíF˜¯_:c+Œ|OŸ±¢ïºièÖ‡B×opÈžT€®]T0k9Ç8¡•– |˜KU‘BJÈÄæóq¹þ-ío–…Ó{’‰‡šþ—²ØúᎠTGêRaÝ‘-™’¬Z¾K'œXŨdìó¢>püJ4$¸ìª¾ ZÀI÷l‡û%¢ð@h&3“¸êøgÌ”( =]cҮܥ^$í?M6Ä5ÒÏ…ŽàÌ(=ç\ã£9éü,Lœžc¢/¯‘£G Yä5lØŽÔY•ЫŽa£ŸŸ{Ëꄾ>¦{íÍ€+¿¥±>l®:ñ.VÎóì¼UQåèv>q­A8º¡ë2±+m¸¡57ó–¤âEáð‹-{÷ž:â?vXÐaK0Øð7$,P5¿¥?…wBhý¥Ù¹q HTML (ASP)asp text.html.aspxÚÅUKKÃ@nÚúÖ‹"xñ¤•F0¨G±Ö¨E©`ê­¶ÉRƒí&$QðÇ›Ätwš>Ñ9t6;ïof¶¥/Ú|0ŸÙ$ l× ©Ã½Wj—K*íŽ)1sxL¸—|÷hßc##MðuÅè™#òdU_ܶ‡Äc ­ ¾”K#NBâÁ7W ,#ÏÛ’ÒXaehSð¯ªé°G]—º)( ¹ŒP×´é[Ò(J‚€Ñ rï üˆº_E¤¨l ÉdÄÖ$˜4©/JJÝè°ÞГ_èìžàVFDî‡Æ }?z%ƒ˜IÒ’G@»ÞlÔ.tðµ_èËÉ8ToPæ"g(ï ¾HéR¹Ñ$hð¨v 8Ì“[ÖÝ,;@9ÊjÁÝŠY‚¦ké…™åp¹4¥­štN¶Ä÷ii2a¼óÄÁ£‡}Ã(rúÆtŽ3%…ÙéUFóö9ŒH3ën¯^ozg­¶yuß²Z–u÷ж:f§õqo¶oŸÌÛäp}wóÑy4Û–yÝIĺÞíåεÄR:„UöYò61n ëǤO ôtýYÿ(”péUœsNp[»øÝ%ÒŠ‚œ×~¸ “jÑ&urGðÈC'ƒcä6±&ªŠš9L 8¿ù 's¬Êßutª†Ü¡¼Sòeå;+<í-€¿¨OÆïðv ActionScriptassource.actionscript.2ÕxÚÕ[käÆuÕZŽù ȇ A,Çr\\yGÒ*Á¢gºg·­y´§{w¥h䛬ž¦‡Mrù˜ž^ÔÈ¿ÊÇü¦œso‘ý˜™Õ*rx!M¿ÈbÕ­{Ï=÷\ò§è¿¿ô¯¿³<›.Ã$›~öá»ÿî9æóö˜Gó´=æGóE{Lûúÿ:•ßÛoì_ÚýZÕaY·?ÿÙÞaÛ§þdïÔv¿ð¯U]&ÙÕÁ›&¯m|çÍ,µaT'yVEeRÔO?Ø:õGÛ†iÇú§î‹G{¦k?æ_‹&‹ê&äè±'Y"oý$lï]zs¹v=——í Æ¿F8¾³ú Z„%η孢°¸³Ž¿ÛÞüêOÑÿн\Zœÿ~ôÁwý{´…2ûÀôý®Çƒþzû¬ÿöã\ÎÌ…±Q^Æ•­]ÿðt|a«<½±¥ ã$?lê:ÏÌó2oŠàYà¾2§'f ¯ÅÁgylÝQže6ªó2xæ^qXÛöü~X‡/ò4¶eàNÍ©‡7Ö nmÔÔ6pITæÅ"Ïìi÷Î妩¬»IìQšæ$y..jM֘׈“Ðà’u™§)¦ØOª" ×n„?³0ºÖ‹ÀšõöÙ%YŒ w²ˆÀ ‚ÕÆç³?`Æn]Õvé"Ž4 qõÚ¬S;^X¬,¼²®´á2py“ż~<¸AÀ¸ò&‰¬ž¸óÞè(LS—&1tfš¥-“h\Û¢ÀÔlm1—ÕW+gWAk3lëÛYsÅÍ“+,¿™…®ó[X#«ím}j±ø!¦ŠÕç׉ui^º¥)`°¬>Mn“¬r³'à䦪óeO7ÓâŒa…2 ÜĬ ¿ ÓÆ: jÆYXT‹¼vìhjwl›Æ./—!ÖÃtÀºÞ!–©æê›|•¥ØgÓ:”¹QHGÀÄÂÚXs´Èó +?æXüÒ<7¼^™Ä°=Ì:ÁLó¥¹8q“#7‹õ¹³ndòâeqf°=Œ'û&Ö-M’Õ¿Íg°GÜ`W¥­*ž‚ؘQžpcJx {…ÈÝ—v]lÜ×=ÇŽò´Yfîgã409‚CÔØ ™]ÌÑWÃŽÅ®H“úUbW­ã·gÆíYŠÕ]˜b²\ǘ:UJ—çiM7NàîÏhMÀ¡?‘=üÌúQÂé¹2¼º"DéFØ\S-ü±enÚÅ»eQë–Ÿ˜~ƉdzæÒxüÙõâ›0‹l¼Yuà^àq¾rãþÉKìƒÕ1ÍV(˸U ›Gaºå®al°²Wa /¾B¬,záf6ÅLz¦:,qí(D`•.Š @…'áÚÉ,× A8‚9Î Füã4¼ª=våä[†“kÙp*. —…y*V“Œ‹ð›®À®D’,`€Û®ƒàr¶Ÿ½ª¦(òY: «êa¤ÿñ¯;0¬ÌÂ$s¬|e¸-'If+Çt‡XÖ…ù×0oå^XâSåÔ±ÚO“<&•vnK›1ÜŸÑj°·îlà"¸Ð2¤ß˜¯Ü)1ôk"BhEÐ:â”âÚõá8ÛÚ̦6²^\fé† €-ÌÊ Ã° Y²ô¦IÇįÊ]qlUŒ“·ÛV7•+ë;'øã0pb2‡#S.ÁL’¥=JœØÙi ÓUFxe¢á8ƒÊ®q‰ǫ́).ljÊ®O¯6j%Xƒ[Ù˜¢ '³›èÉ8ˆaÏáš„AW˜41 #‹s O¼ipäÚ¥[I±éÛyؤõ¨ ì^3`QSÂa± óüKÈkÉ_+L7¹ZÔ°kÃÅÃ[“·»3†½2$„š›÷Ü€è;fCææÃÞmRM’:åJOŒ™I–Í)‡HŸ¦I…äŠ=«Õ ÃÓ8&í-ötL˜9ÉS²F‚ÕyÜdœNlzZÿï™ Õµ»åf½ÆHº®Üë$fœÃ ¹{r „³a[@E¼âï'É2©]t}UÒMIùªW!«ÊU49rOܸ°øìÝÔMÂò .Ì®„¦Á HyuÂ%ÏÂr\ƒ¸“\#Ô{©éAt’¼8ÏŽóNˆÄ¿V<®õ7u3Àmmö6âØc¬:H ˜ŽÚI„½æƒc¬¨6§´l‘‚ 䌢7M ‰è™æ}@ÁÀôÃËYä!½ŠùùK°KþxwÆ|¯áK“çõ… ØÄ\øé…G¥ô*Séð0­üHŠ(“·°dˆEJ¨˜ñÉ$uÞ'HЮµ–óiH6tcSL£2ãÏvG)Ò®fƒ¯ErØvÉ3ÃUº +¬Â/Â,NIÎìŠW<öÉÿˆ˜Æ4F¥žïd Ë¨NB«=]ñ€na.K‘-WHÛÕ‘"""Ñu;d1ËÃì 覃 Â`I˜Vž¶ð–F“\ÞÀÃÔRø¦0ÞÏçóJ¨ÈÒš¼©M;œàM~… Óu‹D®Íª9Þ"©ðñYì¼°p¬ÌÀ«€J´¨óXò˰GøZS†µ0±Ã5 ‡þJkœ—$^ ¨}fg2TÐbÈó2,IT)î“æên#CÃ!\¼wð¦Ô¬)€‡6E™ä®7Ë™"ëÌs„Ù*\3‹Ÿ†E!Y‰ûF~±5[Ú||-×Džt¤œÃ> šõùüµµ×KŽ,î8IkÚ ¿ùA%&ˆDæ>Ï øÅMBGìa³½ß뾚ZÊЬ:ªÜÔæ>òÂÊŠSc­Ü¿#Ä L<ˆù¸ÑŒ!`ã9kHäœA]âí.ÜŠ=ÇúѽÈw}âÒq“¦_[È-³ÈdY}”/8&Ì` Œ›Y5gÞ¶o1(¿Ð#³Ë —jÖF<^j+â³p5%©Š¦qÒ¹¥‚ˆc(*îLÊäJˆo¹µq ´¦Å Ä&:ê‹i—»¿;f9;̼Ïþ)‘ItÞÏ—r|è·ì<,µÂBa¯7…+ꀉ!RRvœA¶×wÜ®¥@06Âob‹E0O÷‹Æ#ÓjÁ: £i\ÒÅðêW¢è§ÏŠ-²!Ä'z Cff@e 3î¬YΙYO6µ‹g*ˆHpE쑤šM°»Eðu÷¾©s@rl»rÃét¹{à‡‡xˆ¸Ö´ÁlÑeÁ—ٜƲd;ibœ| OÐÕ 6¬MÿòKyCÄ—Eòã50à (ì*,ú±Î öA±<ÉÇm½ê–L4’Þ¦Ò´<Êq ³i½L%2 ñ¶ªåó™•䈯µ Ã´D÷0¾¦óǯm®zÚw_*äm~úH4K’º Ï©'b·®vb)l÷[£ÌÃD‹.¥œŽ¾‚‹´¶«6¼“Z™¨£Å\¯A !dEáç|•uà2’âÞbo’¼AÔà4q o‘“åï ‹rA'a—|%â8¬ñ?‰ Н(^’ôo¯`ý> á¼.‡ÌMMcŠÂ ÉW…$'nŠ!x8‰nšªã.ÅÚÆ¯¼Ñ "Þg‘•ðØ•–Õd‚:P—ðûȇ9vŸ¥;ˆ1~G(sá*>tÌNÏT`êcù¯þm§uËej7ÕHKmâb9¶=pfngÉ`®°X8SÈ[Ê1¬žZ@Ãêfíˆÿpt$1Áˆê ®JQö3]”³LóKGÌ*ûzÂØ!*%t õ(hƒÃÖÈÈg~ö7‡ìaD÷pDi|Ö¼ÑêêÔVô9«4Œ!o’R ­¥~¯oÅÜÇFûÝoÓc!vFö&Г"| ŒˆînLwÂdDM«F-¬¿bØI/à3˜°S¡fG•ªÔÿI}@ÛAd\ îš®ASuE¨0pâÓ¾S‰ü:bÙ>çZ¤ç [õ¼¶cpê}WbN@zj¯8Â|±Q’ªÊˆéü/^ÚHñ üWAVè• µòþÑnDÁÙ1U¢†âÅ?­má±t#H/dùÜyò¥4PØ{ߢ´/[N¬ÜO ̾hÂ6äøT) S>Ž€aŽ¼Ð¼Œù̉1NDó°þ´•(˜JSO7±Â ¢ß)>¢8„Î T#/°L È®«+™ ™%¸JÌ*‰·•[àNï­Ç-ð ÖÎÛñ{@èÌ{€ãŒ´ÌË & ¾LD˜x"QšµS†Fp‹kÓ«¸÷Ü4–^•¹h²Œ ödø,ïAÔò5 ®½dÜÖì\£l„Û6t±J–…ßÉøÑf”¬CÁ«ó_vï­þé{B·E¯•_ƒkA ZXJ——ܰ³ ‡|)yK=p·êx£Œl ºˆ¨V¨­¡yŽZ?I7Ì¡µ©c¿Ä¢"ÚÈàe¸r¤f[._0ÊÐqO¥§´“¦"“àB ©ÕK^TœX¶Ús€‘hü>7LŸ%IôÂkÒ-†ôq+'¹éDV üS™W™îW±9ÏR¦ž+:tp¾yéÐ71B;̸ ¸ÑߟnáÔK,¾Årj: {'Ñ" Ûv§†äV,V*}uñh2ý¢HiG±‡$xµ‡ÝUXfqO oB ²’G€jëZ~Ÿ³8_"ÊA3ò~.žŒt‘3,k©‹ê;¤XB}áʬ©o™:õ:â¢H4k÷¼´wÛâÞÙam‡ÃÄRe>Ôðn›÷ô½·ÛÞïjt÷êM{[wK›.~h¹« £#ëQšny«ÞáÐìö½-âZ•ï‡5»»þòƒívqÛmmrç·rK›Þ#!gþQúÖ¾m}§a-Dé¡®u ·®ÚHŽõëãW­øz_ÃZfÛúÿ÷éNߣ=-X1}Vßì?ö¾+¥Ñ êÝ„IªdZù¦i 5ŽpHµÅ®‰½‡é*~ó‰k€´Nƒ\ÐÈ^Ï“+æÁ@{ØpцZ3s³Öž^cÓj¼²Ï­ß¦›V6 u  ¨µ°Û½ ï=[Ù(<—…C7Æê·Ž½mõÂMÃ|§Åm·²ߥ îo=ëñmê!‰–¯No‰ Ùº§®w\µ‚¯z–ö»í­¼ïîûƒ×Ú,á õȰ¯ÖCø2—¢†0àoÌ…®ýHb*í_ÀÝÚljºö:¢C ¯B<çð2í ©w‘iõРñ‚«_Êc½Ù]3>ª™ªRpJ·þ&·ð¯rÏዎRP}¨Ü«ö³¨ª¦jfúЋ‹%¥Þnw%Î6»YA¾Ñ­òw+T[÷ßå¼Ñpé+n/¢$AɃšƒŒl'fÝÖͼ3Q¶¨ËI(ì…p²³ÃX\ûЇ(ož—ÐàL¢Æñû¬‰‡ÚVëX^GðÌöÍ}-Çäo9ð·Dù^L&£±t4¶n!þÙÞ-Äßý¼HûÔÉåÌL§E ~>ºé´Ôç!Ü4Œ"ây…w)´=7|ócI;½žK[bã Z©Àt޲g²Jæ*¼åAUªôôJõŸéBí<]àå¿ hšŠÔ1M}¥ Ód% ›Êý»ÓBú\nÚ¢?bîš §m9kæ5wjÚΪ¦ŸèDÜ´)q?7Õ]˜Þâ¿%{Ix­ØOuSŒ¾ö_­å«w»{¼êAcÿç±ã5“D$?–É+Yr ¾h5‰oXyÍ©Ì „âÈ¥v‘2¨×9\Áu ƒRWš¡i~Mvƒ”X\ˆ‚æ$tM™¹dŽ€Æb"öàªU‚°ÜZÐ?ú×k»¦TÎQjzx=mÖÓ¢´Âs Ö¯ò$ÞºÀßwÏÒåhƒÙ åþ³Íèru >cªË†m¬dkðöŸrKCï¾Âlsó™¹u_ß|öäßÂ'óÞ“ãoÎ~þö“˃gò†_]èwA`À’¹üÄ= žù/ŸæÄ¥îå ²§kÜKwì #Þõ™n’™>€óðßÿáɧïõìàŒeæ;ìÚ~lëþëüêÿa&»Wú¯-¿ë}9õŽî¨7Ÿœ}éŽÎÏ&ç'®?8L_¾výó×gnpÖÇÿ“Á…{q~:póñàbâNÇøsöùgøóÔœ?ÿü³_žÜiï«é«ÞÉK¼žùwgƒç½ÉðÕ`:<;ž '_ËM£ç}þy9r£¡‡»‡\ Ÿ¿˜8åøw“ϧOåõ©{9úAxÒ¾ûôòñÿÍÓ•mÇ΃“üEûœé§Ÿ?¾ÌžÝ}òTG'…ð?©˜%öŸø{´7ë4û¡þjã0‰"'Ÿßcúùr©ÜòòaÓ·ióäç¿üçÇŸüû§Ï~óíþªïŒV ­W´ÿýý7]Öß>6¿¾ Ÿ¼í=ùÍã¡m?䊾/’6%É;“}Жßïr3Ï7í—Õ'ÆÏvúíåê1¾xl.ÍæqÚ˜ÐÇ÷¥…¨ËöÎmÏæÝ÷õú€ á¡S÷/ÿ¯ïýï÷Aª]ìüíÆNò8×®‘̳ß\®ÜåAð8à[üäéÀƒ‡]hýݶÜ÷¨Ø£?`îŸßgîûFØ·õ/ï±õƒ'ø@Öh¯ºÌãdžðt]òÞéû“ÿd÷ÚÐqj¢ÂºŸ<8ƒÿ²ýNd AppleScript applescript script editorsource.applescript^#!.*(osascript).xÚå=Ë’ÜFr3$µÒPï÷›gøfÔ­'%j$ªÅå®´Ò.wµ+ÉÞ¶Ä@7ª§áA-03-ÕÚÇ Gø¢›OìðÁaß|Ø›|ñÍÿàŸðÕ™õ è*3|Jî h P•™•™•¯Â\^Ÿ'äqÓøú(JÆ»´ŸdS’^õÄJõÓÐö5ÕvUŸlh[t|¬Cã¢çãíP¼®Úžhoû†jsO{Û7UÛŸ´·½ ÚÞÛÞö-Õö¾ö¶o«¶kím/ª¶'ÛÛ¾£ÚÞß4)™?+Yâ‹™{°Cãbêêи˜»‡;4.&ïy|ÆÔ˜f~Ff$Öp|´[ûÍǺµ/0}¼[û7êÌÜÒ¾À÷Éní †}ªW¥}F¢¨$ÍÓ­M ª<ÓÚ´ ȳ­M Z<×Ú´ Ãó­M ¼ÐÚ´Ø[›{ªÆÙzÓ’¤/5µ*¨é4µ*yº©UAÃõÚdŠVãd†lAû1¡ J7jbTm^¶;cì6ð3¿G³4gyJ´æg;5/p®Só‚ç;5/HâÖôüõë3?ŒÕ]¯¦Ù¯_)J3u{³6“~–¥á(Ï퓘†IÃx§îÄ ž¨Ç¶jcŠiRw_®)\]w«6½šž­è?Õ¨_›¾ºPí^©-K«&¯ÖV­QFY¯¤Ók5ªîs2d~9Öëu˜TÃ]²ØOÒ@µ{£¦‹vó<†)ô³0)ÓÖ'Íç󤜭 5$#«ûoÕ–˜š\¨foךÕXK5»X›äIå¾S»ÆQuw»~7Ëã²çwåQýÖö½š@â~ôhfEÿ—jÓ¥ZùA"e‹¡Þ¯ñ]%f=²§ÓmP£kF²™_Žö<^–ÇÕš6š‘Ìïs¦Ó¥¦ïÏç¡ã4œg+Ú“Êx«ÈÊWCºé’8pÛCº¥õâ ª6·²õ†#‰7­ÖtŒ$U–&QZUHu\£ñ^müžNz?MýE߬»l³pL‡ù¾ïÓßÿÉ;S¥p–­,§–Ù g$©áeÜ5²€ì¡aúWWkp´úÖ:Ö…ÎÏR?¦þŬ~f×z¹Ó8n6ò’’ƒÛÀH/-»môŠ2ñŒ”.ùÖj’ŸÜMrïÿsMr×pâ³NœtâÁ 3NnµóÏÉ’cÀØŒ5–q,]a³ežáŸ‡ËÎHD‰À¢ìqôíÕˆuÜ!6ì!6;|Ç¢˜ÂoÃ!Û'$†pƒðްã±GðGàÑd? ˜•Äðy&®ÂØ)˦iÎr´ä+Y¯×ZÓ#æ1k³xŸ~A•‰sÛP:qÊì-:f‘„Cºns×3Èqq½œ-@ÌEó^2ú+°º”ɼTÁï_:îàÀ;¹†HqCqrÖð³á¬'ñº“¤Îz–¬Ÿ\㘮­É{ʈu"¼é–÷ “8Àâ$>¹¶æ‚}mH_Þ~;ü˜%`TCWoӃƅ•N±¯ìe%´è¥Õ|9ŠO¥žu 4.ž›‚ôD7dÑ”6Y4jJ‘*3pÏÍÁÆ)N…STîêfq w©+¸w‰½LD'a¼Ž÷Ë^6œ LÍKf9¹æ °¯K(‚w™/<*õÁ‰»[3¶Íìn`R1S]Øìt…Í›¬jÞºhâ€:K6[•öíœ$ÖW,¶Ï«–ë}ËõW,×{+v³¦Rìý¸¾þéuçeÌÇj†Â_k^Ð0Vfv€ÈZ+dª5Át¦S:LX¿Wî“q¹¶„U¿T¶Êm˦\UgbÝW¹¿å0°·Î¡uÓ ¾ã+ ‚WaôgtØe…®z¼¼U‡ø°Æ§,zkÐb6î0VÖš°|`¥ &¼õÎ`b¬¡5aò`“—l˜k™‚áÇïÜÔ·È–a ’dÞ…Ùe^ÑbtÓ²[ˤ°õp¬‡Œ`Ý0i’ìÊ,<ja#XÆXLjjh™ƒl"áZàãßXy¬„Ûl«î4!ü¨QÈ)JJ™oPIºÈÄFFµÒL›Õe­®«=üèCÛˆñØŠÉHbðÈ.x¶cu¨ ŒÇ+` |Q)x¦üÕC/ŠùQÌwqxö&@ÔÛÝAàŸ«ÿÓ®ÀËj8€ðNþ|ð‹Ý¿sà¾P÷ŒÜ;Ú‹ОµPR€v;à9µÒ «OÔÎ믥©_Ãrý‚åú› cWϕˮiNØr:„-$tôZý¥œbäÇ;¹¿Cú£$‰ˆoK—¼X!ΣˆÍB*#<Ù­ ²n´Œ  ºHÆ0ØrÝaß…#Lò rÂm2Ü ƒM¼À૾÷µL&°Z†ˆð4ËüKI–§1Ã÷æL O^sPË95dµ¾«ŒäGò.¤m)ƒ€4I1ç±Q ú õ£’ƒ9 ádp‰…™Ð›G÷ftêÒ¦3Ñ'ïsu»BÓI¾3e.ÍGŒæ`Ö{,¯Æ> ›Çj(ÑlYs“SAê?vsbö!¹©<¿ê§îx '—ç© ¼²`Ÿä±Kàü“õ4”")ü¶B7tÊÓãÔî96ÜdÃ-Öc¯°ÿü6üʳ…ðÐÕ•¹xˆß@,Ī(ÔÚã^bÿó·ÿÈÞgïÁñŸÙûøóŸØ{—Ú‡'3¸„Ôšƒþ{5Ä <A&„ŸA>*÷Ø,Á\hïìäs} )¨Á”L0€ ÞõØ`B`âÇD\€VäëÜ\ÊÄT+æÉp6#”§Ï&0KýÂý½¨ |ýüÜ­‚5Í) lAÎí¤}—i!ÿeÆíß–p ©ŸÏ8À pAxÄ #«7Ùøð™(4Í }¶)¾rBo ­f‰!Á¤Ýháaž © T 逿úŒÓ¢ ’wã(?½ZYZ`4†›¨lšÀZ¼¢kÍr’aÀÐÙ9`¸ÐAf= à–Ç&a ¿)Á%.„py’ä)HÒ$œÀ7 ð›ûSFÂ) ß¿ùð<¤b˜W¼ «t (†Y©@Ì4æëq¶ÕN>Lhº9ÅÓ¬Á\­‡ÊCžH„*>‚ ¢‚Tm~BÓçl¤-ÚB_¯¢‚pÞÂ,¹r“ƒ'ŠÙíosY ‚–cÇ*‹÷V`&sÏõ"gcz9-HÃé[RHÒ°9K ƒC¦ZËÄ)®-d\?™/¸AAP‚IP>çBø7o‘<*ìEÁd‚ yb\ò¢ &x‡Àÿ؉À !Y.{(’ËYôÂb„ë‘àM×b ’3QÏÍ’‡A`æÙUâ=­åÞ1VÉTÀ’Í.À4¥&dbò%K DÒü‘½BvÀv…¤<¡¬¢K …ˆ ),ø?–b¨l+žþ—Ù)~¤\†Ê”ãö7¾¡‡è¥ÜóìƒÒ aùWRy“Ö³uÁUM]–ÅÊ *ýþO«5ÇÃ\–&%I\F±¥nõ&nÛ/ü-ü\s½/»ÔGïÀDÌPÖõ_ýñéo>ûø÷=ðƒÇÙ,¡\5£®di.äSYY`«ÁB*­64­Ðº„ã‚ø) ¨ãusüRùKÚC`»!{b¯„¡ùÄWçÙŽ ŸEDoÆŠjOh‚4ÝIý9Žˆ¼A†ý×ò¥eñAùšÓæ ø®ªìàá=À$ôLÎG‰Ÿ"TaR Hdp#íý›û}»êâÇ ^r„zÀgè"1è¤ÜGq—Rè.XaVC¼D ?†…’¶ýl-¼‚ÉÁô\è}pƒ½W±e«‘K&CE¥†bÊ¡ä*ñ¶à:'ãpR>-K¢Ð8 ;xaa°X&»#0»œ-9ñ¯™?žbøC½‰"äïFfÚ62¦´9Š: ‚¯1(ÊÒ6p¥^~÷ÑO¹T!+qãb¬¹µ +o¹:jÁ*0ÁãÚD‰dÀ{är=`߀x2×E”ÒØ» ¤ÜϹR(Å/âŸ_¥8å®g×½V^ ا>åYD¼)$ݳ›Õÿ]rÊÖÜq>âÕÞî Ø, Æ!×1în!rüã?ÀavQé‚«µV6]n Ø ˆÖ ¦€‚_¥úÕnÉ5Å{¼‰ü…ýD`ºÃ„b¸Ší@T ¸‰a׿+á€õoFÁ„¹„8οp…w{ÌÜ0§ìC S>%`vþ’D{KÎÝùfÚåqh‹émT£‡Üª¤€NŒUç ì9 }àuŒƒoãUJ6N{ýÍ3ÃxP/gT;à¸Q'¤§GÁZ×´†Î¿»nùÍšTíšØŽÓ |:½å ; ÝáfAÞ›·ÃPZåŸY±|¬ûnn3€MÞkÐ~{“7:Ú`;[h½ÐbÛøFcÍ´p ¦%®8žwK6lÙ g„O:™Í³…ëNŸ]gŒ˜G•ÏÑ¿4¼wÉqï0‡±Æ“|O¹Q„ˆÀYòqæ¨øO•ås‡³¤šk#˜ýôQl씬-`p´é0¼±¾ ©Zm /Ì+a~°„y/¤á(" ])ÖÆ.kbk«iyËrý¢åúk–ëï¯Ø­ÌÊ¢ÿ.QÊÃú°[}á&§ìç¿EcàŠ+4d@Ìs¸p—R5˜o  5I„‰såg0‘{!f .7¦xÔ•L-¤k08…âàXM}ü•så¥>æR„ÆÊaTìJuRQ=ŽQ¤ ¯¼+gêß5ŠÏ'9L`ž=ŒžM Áâ€úÙÇHƒcHˆ³BZß“Mç~Ny!ÉÂå§"‘ ä±i _¦dŸ‹&¶!–H‘Ï…ÜIù¤ùAyÙý4 ƘٹEò\| VŒáÍþ,„µë÷5½!Â¶Ž«(Še/ÄŸ9nf ëy`‘£éq aÒù+C»ˆ]# g€a™Óyx…Ä(xb Hàð\/®A“<Šè“z3 K(‹0C92Ž,ú£Egâ·C!6ÛEê1Zéò ý]u9~Ùr}»A¾+{\}=€Hd6Ôr§25¢VJC KUpª™Ì‚ôHs 2r¡h‚Y€\h‚©dàa;îbzrOäDi „¥ ªD}L«< …çÇ<ôé×'gËÆòàÕ_‹9©2K%W¥†‘ Æî4’öçU6Í<Ö©ó_hz+Ë –+ç¸ÈŽ8Ç<˜%á…þ™)ïuÆÈ غœSVv{i…”Õ„„±æHOI¼×Ȇş¾ëã"Ðãæ©aÃ` ÔSåÀ¸9š© újÇA'õnå@ÊxÌÜÁ¶@]YÀ®[¯B 9*õ¥ÁñNG8º–i9Ðß(úÊ–‡~@±RžÎ€ÌëÈ™ƒý >üüSGè ¤7;‚¤z·@sE7 '‰£’—Ž)uéh‰KÒ–N™´Ô {£Mtš·oKÀ´¼œcËÊ9Ë99GËÈ9Íù8§17èŽPGîÿ DŽç,¦Œ¥cÉWj^è¡!¾fäMÊ8S¤·‘ñ./”¹r.E8»ƒSôaèR .JÈŸŽÌ|ó%ÍÑÓà"ù éNSáT5¸Þ>göÂ^bëuMo¢Õ'òÔ<ËêÔÚN™Î>Šž,Àüõ²µ&ÓüOò;eŠß©é8™ÞwêÉ}§’Úwʼ¾¦6yv¸ÂÌ~ÃBÑ€XuVé©$ò-:h²ð8ƒ¸.]®Ép¨â¡C‘Q'ì-ÝïX­q^fáÝô„ÈÛ9WãäÂóùaçÊGƒ>ý:'4;˶húšPÙèü´f±p‡˜…o¨óºyÍ©¾×Ÿï5(v[yøE,w1†¾Â±,—4¸,ú–ž%0*+CóV(—OdŒÑšž‰ê_± ¨øÞT˜Ù bhB ÇéÉ9n@L3i¤…ÍÍh4¨µßµNèQÆ<¥™Q‚—%¤þ© ûVd;ñòÇu W‹Â%.à²%`TÝO&BøˆºPºwºQ§Útwâpž§“°IêÂØüÁ¦¹8[ŽF„“ðbMQqN§9èdˆ01Ó`áZžã˸,KW\݃FX_\<‚AÏ,;¼6%C‡ûbò9HÎEÄ[’$BÙ;@ŽKN—rmZÅ|X£=ÝaÆ sä`F«‚/Ÿ~lƒ‡`c­´?û¨Ê*á!ð|Ÿ¦SÔ‚6ï§gþ3nüÓ×TL'™X+›>G»C[¡dL6vÑt_c_hÃ4 õ†î ’ÊîGÿ3Ò],»Êðö?‡bÜðû«¿r´úJ޽b?N… ómuÀÿ`µïäA Ò\Ä…ÖÐo°/-¦½£¢È»òž£'l0µÖÿZ‘q†Ñ@ÎÓˆ‰ôê80íQŽöíR>iêÿ»ñÔ6 Batch Filebatcmdsource.dosbatchcolon_comment_start (?::[+=,;: ])command_terminators[&|><)]- xÚÕZysܶßµì\NœûvbI–ä]ÉÚ8v›NËnfêIÿȤIíÌtF»ÒpIp/ VÎ`òÙû{ Á%)rUÊ´-‚x÷ÃÀÝVú÷iVßµ‚08²Cß·çH0y4ŠÃ$:zp£Uþ{§n€˜ÂµáX p×fÃ}màVfÃ=4p׳ú³wX‰¯œ‚‹ŽÈiyeÑ9U¯.:â‘ñÚ¢#þdF¼¾èˆ?›odõ­ÒˆÈŠYPÐÐͬ~»%d̃QìÍZZ1·†›Â½5.ò­Ùp¹hßž — Ô¼_¯‡s˜g½dÎ;‹,ˆ ¯rŠß]vdÎÃ{ˎ̹zÙ‘9ŸTŒôèÈ·x`Þ~X1È#(ÒŠ¥yýQE¨Úl`4° K†±û¸bë2 ŸT„w.¤Ü¨DžkÈi¼¢ê£¯•ó÷Ÿ×¼§ø`Þß®øŠà¿ðEEsLØVAÛcHÀ–lJÊ—@1¤‹äNe²ó¾h W+èk¼ª—cŸIn›Ak fƒr#É0õÒc2¦áYCæåÔÞ­DТÙlTÌ&HüaA›±žÓÛVscÌÛ{•Ù³Øb^w*J5 š÷ÝŠq4{‰±]ÑaYd\&’\*f‘gÙ,dzSáÒŒÊ ½ŸÕ»•5Ð83´gõ´ñ÷œP -i[P³–ÖÅ~·]‘a”¶L,"±'˜­ëtR8Ó‰¯™i¯Ö¸µVý_»Sо§ûê`K=yÜtËÔU'ÿ²0Y±ÿ~CÿfCg‘תÚ:ÛOÈܾçñ€õbæW¤R qÎÓ½½ƒýûßí­º¹´ïÕHÛa.¸n %=¶ TÍ[ò—Ÿ×Ñh‡Í_cí"Ã7 Zéž3•𹢏\iÊ:ª;hWü€§–Ç÷<6²¼^À#a¹ÌÙÍãêtÒ•"1_”BBï$ 1 ° ü®V^%+6¬C`}± MôƒÌ˜jcªííÙÚΰÏ÷¯Ër{5¦_\U3‚’ HƒR/âÇ÷ß.†±ér‡ $K\_Ðdg'ƒt½]¡j¶Š†lăù^ùZ«AðŸVÐ/m×g2qYv¶¶ù³TÚR±—2àÁáêààp°Ýíìç€ík ´+„›µ³Ê1œ?f–3A‚3•iu“³—“0vz&ÅèY0ÂQP Æí­¿ÑäNÚ¢£8ô#yΚÿp·[2kX)⽜¬¡´pÝWßµ+Ñ­Jõ;☪@º@<¹<Ó4³D މˆ0/g< †â;ôƒèQ (œ¢]à u ãУú”ê04¶µ.÷€KØ1Ð+NÎÝK˜¥Ô 6êB‚é|BÛ• ݹòeÄ8÷-›ªô‘ÎÓO¢³'NF±åJ$+j4Ѷ¬ÆÌ‹taƒ‚q(d`ùLñÔ–yv"§¸ m¹|¤8è€|ykU<2ýÑ‚9ð˜¨ù·TPÑPéÛ å9Ü…}xn”7V^h9c>¢†}ŒÂ!ä°q¸>U¡ë*/:Á/V`G›šo3Û*ÈËg¾òÉHüchïXù¾­ mAþ(’@žÂfµê}dn¨|qb„xb6Õè~ô )ðHc*J\ÝI0¹jÙ6M$ôYbB>“>h–³¦„$˜~ÐtRC¯kº¥¥k„ŸÚÚÔ¦0ZàÔˆ,©nè” A*mèƒÑ´îP_´š–äÈ>m‘=†éì’g³›¹u¡Æ)gjÐÏ }ªÄX—ZÞ~AO2¤b‘j„† ™EEíéQÚNj”£B¶ˆÐÚ$6EþÚ²ö^*"˜½Jy†i„„°ö¸>xN!P|£¢ã‘…ˆâQ8a1…ßT\Q"ÆŽ:Alñ©:I­üQóž¸À m²êˆ‚ÜQ‡Õ¼W?y§OP½_ÖRLƒÊIÚžpºöUˆˆbÕÑ8 ˜ŠÇcGÑvuа¹?¢*¤ébFí‘Fº–0ʘR"®+©Ñ§±~÷@éãÐl'»STÚ1sÂS7E)É)bmõ1OÕûä=q8 udM=7†öc™!ƒ8 ,]:ž—UÀGöXZâX(äpšfB‚_>Ñ8Sáê„TÜÅëq›JÐ╚,¶J<@ŒQzϤÄK,¿¤X4û´ËJx<’VÄIË„÷GdºáA0 f—ò#)æhK§Ü –pFíÕ1Œ"mäõ7¦A ŒŠ$%bDËåYƒ”…©EŠXЇJs„×c© CUò·léNÖ¨ÒÔŒw_ªÓ±£Ã“¢øt*Djî“G¥¯&—'X¾ÊÐò¹‚UQèJ«ˆj Ö%ôŽ@•€ÇN¼¡PÖ>É–å ‚> õ,æg¤ìer¯Æü®´¡¾“ï8öUg«ÛÕ·bû•;ÐéyjÓ¹ÆfSê M8úl£˜Ã6¤…%ÊòÍNÿºp›)ó·˜/ÝE6a¹¾ð†èÍRòûÓ¯?äo¾-0Œô<˜Obز{>sPF{ŒÃþáÊ~ù¥ëzÑô†4ýe„·ÒíÛ ýwú; ý÷ú›n3¿hèßjè_öõó¢>+Ù {Êù>b;ã² Óõsf¥óç­©¬i÷ô·òôÜ… íKK.5»O;@ƒ€§ùRÍ8cJ%=Jà‘o"¼PÐ!¹ÎVÜl£Â:/«^X,¼Å¬"ÿ¨:P‘V¡§Ç}¹ ¹«˜'XAÂËÐ_q9 ÎNg¼Ó0#ÖUdÿ øÆÍbÇU|åR’!î§(–îHןÎÕûEô?÷¨{eŽÑÍ®~Dý˪žýnÔþü£m}Ö‰­qñkÉ)¦Jÿ]äÈÝ„•­­§t ¡.¶ý™Î—_¹¨j87SÄëS}ó Ócôä`ëÉàé\¢blþãìgÉÝÊÞÝl-d¯öSÀ7¦ÃP¼ oÐß lv«×Póîù¤é­¥iZÓ4ázvíªhzwaš¦×Åû—q]\zaCg³ÛéüÞ9p(8ÉÊoÕßøùûßënw‘à¯[ýâ:ç˜XÜÕv5!¼³ KÑ{ÑÌ×-ÿªî²œNAnt Build Filebuildsource.nant-buildæxÚ½UKOÃ0 n·8€^CÐ %¼N<âÂ`š&·Í¶ˆ6]ŠñãÉÖ¸jÓuÒ 'Šãï³k]³Òµ®mD$º!pѽXµŠkŠÏ%úØÕ>WèS«ö¹FŸº¶xîNîñÔÐv-»Iˆ%^¯nù§«ÆS$¼¥­…!’ºAä½RBZ9O;_äHÈCæcµÂsSÛa"<™€ä‘ >ëqÁ'[DãÕòï60&Jè—5òh˜¸sþøÐ*q2íþlNˆVËÂ#™§ ä뉼ÎY £h«Òàò“FrÀb RÆÜM$#B–’¯—Šs4·|Îlª#…"úÔe}.² Ù¹.0[¯ýôßðëfà]mu„·$’̧~”¸›Ý}‹ïd!òLøåö›No¤ö‹Ò;ý zÖ”P¶1æÀ›°›˜Z”Ä^š qø–™ŠUi~݆õ[¬ÒãáþeŠJåâÚÁv¿?l9mÒMÇü‚ÜܪIÏàkË|¶]TމRä¥nïbIp<“JSçì»ÙVÄÇöc¼Ò{"Ï* ç.Ó¬½Lô…ú¨RyˆÁ“J¹22BVæ{<¯þ:ê8H} os3cN?ïpŸò `}¨ >pÈâèÁIµçØRÇC#cscsx source.cs base_typea(?:bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|short|ushort|object|string|void)bin_op@(?:\+|->|-|\*|/|%|\|\||&&|\||&|\^|<<|>>|=>|<=|<|>=|>|==|!=|\?\?)binary_numeral(0[bB])[01]+(?:_+[01]+)*brackets_capture((\[)(,*)(\]))cap_name(\p{Lu}{{other_char}})decimal_numeral4(0|[1-9][0-9]*{{digit_separators}})((?i:ul|lu|u|l)?)digit_separators(?:(?:_+[0-9]+)*) escaped_charF(?:\\[abfnrtv"'\\]|{{unicode_char}}|\\x[0-9a-fA-F]{1,4}||\\[0-9]{1,3})exponent$[eE][+\-]?[0-9]+{{digit_separators}}floating_point([0-9]+{{digit_separators}}(?={{floating_point_suffix}}|[.Ee])(?:\.[0-9]+{{digit_separators}})?(?:{{exponent}})?)({{floating_point_suffix}}?)floating_point_suffix[fFdDmM]generic_declaration\s*(<[^(={};<]*>)?\s* hex_numeral(0[xX])\h+(?:_+\h+)*name7(?:@{{reserved}}|@{{base_type}}|@var|@?{{name_normal}}) name_normal{{start_char}}{{other_char}}*\b other_char (?:{{unicode_char}}|[_0-9\p{L}])reservedœ(?:abstract|as|base|break|case|catch|checked|class|const|continue|default|delegate|do|else|enum|event|explicit|extern|finally|fixed|for|foreach|goto|if|implicit|in|interface|internal|is|lock|nameof|namespace|new|null|operator|out|override|params|private|protected|public|readonly|ref|return|sealed|sizeof|stackalloc|static|string|struct|switch|this|throw|try|typeof|unchecked|unsafe|using|virtual|volatile|while) start_char(?:{{unicode_char}}|[_\p{L}]) type_suffix((?:\[,*\]|\*|\?)*)type_suffix_capture&(\?)?{{brackets_capture}}?(?:\s*(\*))?unary_op(?:\+\+|--|-|~|!|&|\*) unicode_char(?:\\u\h{4}|\\U\h{8}) visibility>\b(?:public|private|protected|internal|protected\s+internal)\b-xÚí}k{$ÇUðh´k¯/±½v¼öz½Ž¥ÝõN4#;7i¥qB.I °äê‘Ò3Ó’Æ;š–ç²»ŠZ!$°H!y^ „À›øø~åyøü>ó‘ªê®êªêS]Õ£i­Ö©I¼3Û{ºêTչשSÿ^Š>gãïK^?èozƒíñ®ß 7Ÿ¿·$~T€/PÀ™øûQ°íÚ;›·vü~ÒdYÉÚœ¿Ï‹=o8Üìøè{àº×ô)ÃX§ _x+}áÃÞF_ ß‹/³Õ Ú76»þgâïG$à]iUîˆcû?þ¾ Áõ‡£Á¸= ›{¿tö“¦ˆ¿Ï ¯t¼‘·9ÚßCH К@3tÞ¢“@»Û}o4øIÓ×ñ{þ¶7ò7ûÞ.ü°0Cæ8hÊ–ë,H³~oHW‘A>ªƒd<¦ƒdD÷æøûIò6Z¼áã)áð¸<ÃäÈä[ˆ<¤†ŸÐ²ŸÔ²¡Wîz£MD¥ÝþvÒýS Ùw·d4/dÃ1,Ÿ–æ—Á!étE ¸¶yÃß¿ :k>“ Çú~K6› g³á˜œ™Ë†{;…›Ï†{…»” ÷N wYâ½®çí¶:7-W2Áج<— Æ&å*¸p½nßß ¶"áÊz®èaY÷Ž–áPÕòÅY& €Ej lýÝn;èñ„·˜ÿ]6žZþwÙøêùßeã]Êÿ.#Ðçó¿ËˆöIPÄïHˆ(DÊ[%E½±ëñZùm+R˜ý–¿é!cým7c3€½÷ö|ï±U{G¾÷ØŠ½œ¹]·å6ozƒ®×êù Ëé§$ OßíM¯ÝFŠ oþ.#p6¢w³,3j[‘ª.Ú+×´  çU-(Ãw $»œîFVã¢Q󢔡ü-(Cù½’þ@÷¾»‘IÆÐøiIF/àF‡{^Û‡‡ù¾/±Q¼?ÇKl<Tô2xöAL/ÁžˆÜÏ¿ÂPûYãWb?gü £çŸ—TzôJ,¹özhv‚^ñt,ÓØˆ>ª¤á­.v­$éCzX6ìÇßOB°€­ô ñ·hýû2¿¨d|$þ>'Fn£Ôì/|0âù“@Y Êp¸Še$WŠDVv¯Ûîr«ò+ùÞcý}4ß{Œâ>òFþœ‡[;Ý^ÊÃù„” áWAAtókñ7u²7‰"¦ÿºßËþu8ò#úW7þ¦îÓ,XA!›ñ7õ¢S2Àñ^k<òY×Ò0€tgŸ” Œ4™Sß›#j ÒŠ¿ï@°KG!Ú ¨PˆŽ A̬Ê(„/ñc*®A·âï‡@æ¿S°íø›:þB؃íÄßgЮ0ƒ]yvh˜#iâ¥øûq’D8R+rC"J¸ÛG$éõºŸòÙ¼ö$vR€oz[£ä¥]‰@€ íÇß4Ò!O(T 5M(èž$ÙYüXÇ—%êd°~¿CaÒ" ñ 4”‚[‚ÍýHÕ ËH‰° 07冸¸ º%|[¡·%™âÛޞφ¾S'X¡P¸OIØluû^¯·/HR…EC(@(I0 €Å=b-´ÆxtòPR‡Ò÷·ÃП–±ã]! ôëWlûm"Ûh$i&úŒÄ´4¸Bÿý7¤5äƒ*æ³R—<7q CÁ?'1J·n [„<£ü¦$ (€ü?/qUœâªß’L#!ôß[¢¤8fAÿú;Ò|ðþ,…yEâ!Éç¥`¯ÆßOÃ`‚kLßù‚„}¯‹êõz¿+‘^Úe¦¿'Ic)‚ü~üM£ñ¼-þ~’ýìÕRø?›åÍÒwþPšGÉq¤`_”F¹väKŸñÞßhàõ‡=ÿ‘4‰iBþ1Ü5/P¿, ïšQ˜¯Hê:å¾QÀ¯J€dSý'ç@›­×¾á3™ò§Ò'îbà„ì¿&µ zqøÏ¤Y‰ý¢NÐgùºÄ°€EA¿!‰[7 øIù?R[ˆˆ½}D}Vâh_¿ïI@9zÿ¦¤pcO“½ 'Œñ[¤½: ùçñ÷y%äf¤­è ¡!âhúÂ_¦'@z­ã·¥¥‰d³À+%éÊ$%HÿZ"lÞå¤0#·%¹šîÿJkÌìn…ÝÝøn?d¦]ô ½v‡!^šÓ]°2ò ûþ­°?îõÂ`YIhFÂ`< ƒ›þ`Ðíøa¤ýA÷&F+¿=B8ì[¨¿!t Í=ú ¿~8ô½‚"ãu…íù Žºø ËÞ0ša$ïÂÑBq´3n…Hp…˜ÑËÈ0§rÜz[~HØ"¼ÙŒÆhT7‰Æéù!!-'Ä«Ó ‚^ØÚGÈÉŸío€æºÝÝE/t„¶nõÏÔ(ã?°]ŽÉŸÃ`€žF_Aë%cá{3èvPˆ+¨#ô×»;o? ]÷£èÇ»p}ÓÝ;øÐaÓÉ€x¾öî¨ê¶œ [_¬ºÍЭ†né""^°´fimú´æ0±V¦ñ'A˜C—9©Ê·ñþEª4+Õ©ï<}q+TÓýý=쿉zª}âÊ×·Áx¯Þò·»}$Î –3œés/¤H˜Í‹Ðu¯;jðËß)Iš…ó9¼ƒö0ÿÚÞ³Ú¢ØUÖð ùx55û¢¥JF€…jB|F5múi;]ÊAf3à ˜1Fô$pÜúÙÔ`Û5!,oÔzöòž‘?4YÞ¨yÍòÞ«ZÞM¾ã•éòX•bUÊ´U ¥Kê˜rñŒvMËNÐÒVéšF‡ët)ë‰çCù b‚WAA¶H\™ î"^•DûX¡?.!ÞEô{ÃäÓñ”ujg25ùú kÌ2ûÉev%öJ öYã Á:„×#qP¢•Û4‘D4ÖsÙí7²»}Iêö©Û´Ò“º¢|äV—hWž@tEv@ÐOÚt¬ê2Ñ2a†Yá‚l1%Å}ëÜL=Þ²… aVÈÒcFB>ZµâVØ2Δ¥©£ß4 C£)õž×ßã¸C{X–´Í­\~5øéëÏ6JG°à¾$ ÀÜ–Ñ™)YFå,ëG~¾¥xþyÅó—Ïÿ¸4-›T¥ÓÞ¤2ì^?êÄ—‹œø $ógôyX k¿ïºmc!7ýORÓeIB‘¦©šBmçèTék³“u ‘vPcØ?R2œã¥$¡jdœÜK|núëø‹šÑûW3hˆÔ:f£RÆçÿ— êáXǺ8DͰ®_Õ«zêÈ úèŽöcˆ%ÁÕð’rJŸ¾³ uPØžÄM¯7ö… úk©±Fۚ˖>#o[ßäÃNˬoÌ7«ó´)š©Ímýå1¢«NlrÂÝå(yŒEËnÄ–Ub…¤öqÊYºÏ\ùªÄÎc%•ed|szÔÈæPЙƒ~öHZûµ:E¥ž_™T/%æÓ”–U¹4玲®¯Ü…ëºsô5™b˜õÉ£Lÿy£iÏ?À)Ù½yfZÇA ¡ á$ÍÆÇÈÐTa0´}~fø– -^I|Ëø}ëîc€<‚MÀîþ„:±Ý‡L€ì¹yÅdn¨?ŸO:9õ í%kæø­#p<¯u<§Àµv¦‚17Y4‡¿R¸Ué¸-Ù™¥é#Ø ¢n9nÈŠì:Ö/±~I™#ˆ¾†U$"(iÒKkŒ\Jœ2›wªb«6סœ%ÒgA즙=0W*Ülš‡»¸.{|Ý>r»z·‡eC¯Žäa·Ä8šÕ.±±~%a˜TÔ#È)P7SD˜M&Æ›Zyk‹¨ÈaY@ϤNÇ$CPyXª4|AÖÓ'´å,ùR|m§5¹õÇ€NZÝivJ²” ¯+æWΌ̽Ïc=½’c_ kÑÔÌäðË©Ú~d΂E{9³åIÓ˜æ]CþBÝ™¬•?6Qò‡|FLJÀ2È>ôœ¤ ˜:«Oµ Ñ§€"Æ|FHðqVÇ&p¤D ¢Ø„Ãå>) ×ÒVRj–OÚœ­¡øH7Bý;aÿ×t¸?`5sí^’6‘ËìÖ-aYÂ* ŒYÕï/n·~@è"ßAí«¸ ©9ÂËp­ì¶‰j–¿Šã¯R𿦔‘–ú”ùÆ•6ÍÉܵL˜Rè‹þÅ­„‰ïv1£o4{~_Ú¤§çž ]ô¿pN›ìÖ ¶»m¯'6Cý,dÙ"*Gçõp}Ä–\‘U†å* Ú Y+xNB™â­ž·­ô3¿žÁ•`8ežÙÏe»×qª†vëç@£d~ʽ|³¤ð{¿.uœÜ ÔÛIW£&‰JÜu´@^më=µÔš¬&ácòò nu@eÎËÅk²g µ{’Ö=´Ò«||Zx-‹œDvºC¼Å8{ìX$’É…Ê:!ÌM4n>Eº¬qû™4&Ë_„fž—hÜé–7èã\º2¿Ò]ˆÎ€Ê@<^2+‘‹·jÃ=¿-‘Áiyý…âù¾Ê>„Œ`ª´*ë‡ó®Û\¨¸(ZVuÐó•ÆÜ|R'£®XdD<øJ´N-šµw=˜‚n£W”MÆ÷lÊíôýô3ŒÎrtéN²i¾l^öÒ'ÖÁƒ Wt>”¿ì!~©Æ—KOŸŠCˆ¶=ÁÐ0CD)þ>¬y @ÜÃlX“Æš4è_NUÿ‘ä± 9Ï0æÁ·e'¬sÉ€uðbkÿaã¼–ÄíÝh–ÖÞÇ"™˜c«Y€XžÐ´1H¡ÒXâ¶š×1¥&7Ò¹šR©¯è 8YåÌ®—TNÞuÇ€ØOÜlÞ]ub>ªryòÔ‰ð_·ÇL¬’.ö˜ £EUžŒ² *œ6íLpåÚŒ¥yKówÍçãeû¿ñ‹óŸlƒû(#|-õnô Ï”tÈØXW©NëhßöL«¼EŸi5عË^>+W~udx"@QØZtߜٛ÷tZ’’ åÝ4Ë>Ì}2í(ê>P !Òw\©d°ÉÆ´|I< ‰'ñÃzFì3­ž“¹o[ÁeWá‡ñѦ·Á‰üÌÐEÇ·ÚÛ2Á ÐÞ¹è?çefŒp„Ãæ³Ss*LVäñªn“¨‘„™É.Õže$Ÿœ§úfJ9lÁËúíÈ]'¤€D†¿ÛB,…Tók×ïub¹‹¸2¤G)ßaž‘‰iVALU`ι°¬×ï£è©ª¦¥ò,õ­»?JFÌÚ’jrô„™MéÈ?ª’YW\oòÆ'×bŽË4²ÝÒF3ZL²hOHüq­j³ª­@Õ†KÚhÛ9Y± ´|L…Ü? <Û(Y^±¼r|¼RŸ8„ß2©¶%ÜÁ¿œØi½$'´²Ý Z^Ï -é[Ò/‚ô#«ÕÀl¥G´hÝø,ºÏ‚•Û¯góž²Z;@ó£`{&ÌòÇñ ƒ ¥¬[Ð4¥ðͤk¿UŒ¬”Ë^šàÞV¸ðÒ”îmUùYRO^8RÅÊf§w!iu:¢È9íˆÊICõøÏi›Â%…)Üž‰™¤ô€A,÷0”>÷w„NLª d-¨:Oð¬iz˜@E-eœgŒ¬rí¹jϓČ'L8¸½À&¬ åX¾2݆¤Ç¨‹$f$̹ãMôld*2$—;SÙ/âð2ëšÌ-ÉÕ·ªÛªîL[­ô\¢Ü¨’X\]eÓòUSX u…8ßží ÂÀ/s¼Ž×Í2„eˆ;Æç †ˆ¦àˆÇŽ`À*–øk-K|#a L¨–!,C¹ý‹€—ÉsYÇi€7Yb:Ê* ÿfˆ¿â—dîz à®T¡dï8'»{q¥L;ÕÍ” ËùT)˧äU¢ÊÚÕoÂA’Þ¥㌻ ô™,lO”&§m`šZZZJ¤®L t4a¦ì’=û(_¹´É> ,‹Ìùÿôeù5Õ€nŽÊÒRV~Ð]†K)dé±9Zr«Yd t¡Ý/¾ßxmÎqŽOwy ù¿ƒddxûöm°U„@¯ÛGL€EW†òÁÒœëæ|õÑÑhoØX^Zr¯W9h¾]opÅ ÆýŽ? ¡?n¤ªšÙ™ÜMÆQÁa½?a‘uDÍM(>ñ—ãB‰’öF 9A¨Û‹µ;Öd)uüt@*ù)2³Ù" æ.˜w¸šñ‚î@ï09lù”×§Ø1érîyÈ·bW!dÐÜ¥©M›FMïȬJ$>Ê^$bd/%m™G¬NAëvMs"U#ñ) vxL³œï.vÕR~Ohü„P)æ¥Oˆþ“sŒU9‡u²c8!53v.€ÇøIK„þ'mŽŠõU ÍQVÊ5õF}YC«TCÂ×êq€²'ªjpVâÜt”JØ>,0·g¹Ðraá\Èo-Ÿ6/úepìÄÂPÁz\h ¨c½‘ÒÎÑ• 7ÀqWíŠÙ°4I“Qñð/xöÕ’áJ[VÀµ-ªÑÕU¡+]r›u$&hÄÊIÔB.CK·ô{A°W'ÀYÿo““Yo•|XQŽkŽÕV_Ü‘-·KÙVÐÈÛV‚îñàáUÝYÏ6,Y.°\PŒÕ´¦Ï/>#œS0‚xµ´áÎFúÅ<{:ô{ÂÝšÙ”–%]6æøNá”/ñLM^wo¹ÃæBX—÷ìGˆíÒ rÖÔ ©9SÁ<ŽsĶHHJ_èŠÂ\@ß2O8¢ƒÚìne$üðì³%h2~x«WWÑXî?Ëhy4·ÑÂ/Â?|½Œ˜jÝkmõ£›óW]·Â|溷“š/,¢Eñ3ü··:ré V÷Ë $à‘ÇÕžWd»º€)~ j¢t·ä?^RH®4U’Gkn£Sª‹›¾Ž6ë$~# éüéºÓZŒ©]ûDIñɃó¢4£PÅ æn_$/ñÜ=þ_ ]Är‡ÓK‡®tûœïô„‚,&¿eŽï})Ø‚1‚øþbIía{Çχð—„ðç4´:G¸wEuɇêR‘D²Ž¤SMkt$ý)a’énÁe·ß7í4÷…¤f”%1DV„nWÖÚHLïxûd›L,(ˆiñ¾)ú½`"ÕT/?=±<¡ÿ*QåëLá44€‹%HLä‹JS!ut‰ÂuÇqò…AѼ¤¾âìDÌeÑB¤¾gi¢Dã~N"…XadÝŠÅWQxû5äĦK©<È/Ï¢;<8lê“È^M“fô9'ÎnìÛù¡™- `ØÜ[¸c‘±óÌáæ0‹‡ñðWÊa8 Z‘Ôá ­ÚPUaà·ÈV.…Çõ6ðL¿½ÁÉþˆ_LpU݃J¢ôFGeŶ¿Ñ"ÅYEH×㸠@‹m·‚A1EéNà Kég¯>;žý°Ä¸@±°6ž"ʹª)Â3MÉBÓôiíð9› tNO«ÇöFÐA„Ð9žµg+ óH‚Ñ!Æk¡rH+ÇW@ñŸg¯¨FHÌãªäD|7nëøÆù)í8ïaãìiëd™èlžªË›À³UÐ214&I†+gt¢N»˜¬)1936 9cýQ2‰{ÜJNS°—x+ùBÒ}lÛíãjÉHïG5¸t›(›Ú|‡ËIúefsddÓþÉߢ„ÊŠÓÐÒøÅ,ôHc€§¹³,üå‰ÃÀEˆ9ËÍ‘¶„yÁ|šKºÂn1$ã»ÐµòtÖ„àÖ ªþë›áÞ-§q·þ•õ¯ ª±¢ON›„#hDºk½çµü––W È›á¿ÍsÐ86i£[×]Ä)ûý6b#§Q)~™,«ZV-äèM“/Ú¶¨,â38MÇÁíK¶Šã_×ÐfùêÁáʵfuÍiàÃ: {¼¥È‚nƒèsªñ΋êŠñßqê…5q,•"7¯9Ø ˆ Ó)¦4w}±ê6C·"±Zu¬´äwG„¤Ò eUÉâòqÙ9Ô4½J#PæËÀ3ñÞûvвOáÒ;Þˆuä ?0eØ<¥‡«TsAfh(­[F²ŒT,#,£Š…VÛ „Àó–z?G¹ OhgQd·Mã©–ÃN*‡Î`ñí¿Ú¸'X4ŒiŽtÌóQÅf’ºf­Ñ™-þ`l?ƒ¢­Þ°z£˜{²§Î)ge3Œ¦e‘Q´;lò¾ÁïðÚæ’74AÅ‹!{­åÚb®µÃNÓbµÑÄçÐVA¼  i?‡…(ÖJ/›’ªdÏÄ4ò¶õŽ,¿¬å–üܲù¡ þœÝÕVÉ‚X*¶²¿ÆSþ÷íöˆ¥ü‚3ì-iYÒºG\5ñ&­¯ 2ö,Øìd}]N³WÞK-ÄrbHrO^P¦’UÀÄ£ÏʹRægá…Ã\¦&¹;'×éÒÌÔ¬QÒrÏG4èã…¡ÿ2"ûa¸5v1£“RóáKú‰|>ÐÚIŠ4¢ÿ0 r ˆþð†m¿ßÁTÜñéO{osH£¯×WVŸsCl»NÓ‘‡  ¾Üƒo8q é\Í",ojíI‰a;.v2;52¤ï×Ö²êü³÷½Aœ/›´ðFÈËîBX[ kxÿ{)¼¢) Ãçž#†îFxíZ¸¶®®…×VCôs5DY çVÑf9Ú._•c°)ß\èöãSê–T[ÀMÔPŸçðKU'2©âIÏÄT„ý»2ÞC6ËÀ89;Å‹«ØbË*?Q;Å*¶¨‰6m(™³\qr¹‘˜\VpÄ=Öü°)m€¶C><Ûd-»b9©pNj4LJ¤)ƒsw¦>Zæö>õiᩊcU7zÁó1ä$Ñ<Õå×IÄäõ™-+gN¨œ1©w–,i¯Ì"r•í^Ðòz6Ū’‚2QÈÖú²>ƒìÍ’KÉVØÊ‚•Û¯gGÙñ”ÕÈu©`+¥ÒÇf±üaùcÊü¡5£€½‹åK(ätã?ô7ýN _± ÕPÕc „x¢zS*¦.0»”SKÇ_–q,ãå£pI§zÅÜ—µŒ’3öB!€²Q²±ŒÝ³Z¬äK¸>r:᮸® ¾Ëò–å­-»uô+Þ¶\Ž%á»5„•Y1“¹£¿Ëðè5Ù—3‰™`•Éz»xîâÀ¤ Ãë‰^ºø. 5VÝC|5ØZè6ÃÅвò Ž¥DÜA²àèŽ ©[‹VjËÃË‚gÈdußàÛ'诫îÕ‰/Y¼N#¦W£š.Sº5ÒAíÉ›HÀÍ‘hIŽç¹oò 7Œ{“aÔM»®#A¯®o\m.pM\TF?mz›i'—’`åùõÛŸh:î>û´¹€¾ªœÈÉÐBÂ…d`‘°Ûño{±†ãçHþ®‚•Ëe ­Š­%¨>™ ÚzoÓYþ…f„,ù• ;¯C·Õu%¦3LYC ’´ðp…PW| £ˆÿæTIfÕÖ:ïÛýp3\¯¿ß'zÚ­+ ‰^÷ßß\_pk͆Ê©ÐFúm¨9Õü«¤žL½ªL¥°B_æ'á¶Ráú I‚i57báîò¸öÆá8ì9 ó;Еk;ìS×RN)‹ó›r—FÀ½™Ò›%î^À7??á ¾ÜÂy|·m¾µ¤D€s:ðnIS9;­©”§àÛ¢µpä)–›¢Å>†ÁxÐöWÿÝǽÄ#÷ziZ°j]ÞVRt½©xþÅó-ÅóÏ+žÿ™âùËŠç;%ñ#o ÊWå¸uŠþÄÛY¾9ÎÒ=p‡MýI›w”h<÷@²:a•%‰ü”€rè@_ó‹„Ýw²ñ‘â÷¨ý)¬wýÝ–jûi1[ÐÃÍ´Å!Üʳ=ı ?Hþ-(ö1!šík®®œ…Å_ÑW@¿«õ»º–Yf…ËPT6¼6ì^×W.çR¸ðý±t43)ÜŽÎÝ'OÎøq”(ßwÊ zi/ìûž06jHâ{ÃŽk9y¥œiãQë–/{ÄL¨ŽÍs]¶ ·7+õz€bW¸¬HÍkPÇŠ}àÙŸ¬¸i—åÄâÏ©i5×¥,Ž#D–b¹“ÇLŸO Ðâϵè2>ؔ߫3²ë‚îæ*©\/àNÉY¹NV ¥ª5w‚¼2;‹ÂõòtdFªœõ/ ÔÁÝ“LÛ0tqÌÚw­(·¢¼P£ªn~eu,Ç£xV·þìŽp’>¦´ŒôãŒòP‰³}Ûº%ô;xû ¹fÍ®õg5ë”4k!Y¦’âE~Ñ™°úÝnüÍ™ Qv:P.þ¦Î1È‘1Rð ³ÈU8.h‹ˆ[ÝrW¿›iEÖÏÃ_4"â¶*¬1.7ZN=Šå¸^•ºñ}j–Wk¤.$/ $×ÑòYhíbsÚGœÏ,À\Ê+£5§Ñ,‘¸¢ÿ>úa¯µ¶Â¨°h‹Q£.ÊAmYLLƒ 'Sµªš3Mª4 ¡3æ¿ç4º[‰\0ìZ)~¦Yޤ#Bóî–3½Þ¾.ôö×Û`€hû–7èG7:cP¯ê£´%„"™®™÷G™,%%ªÆý¸Â?å%¸ P€6èÔ9€¨IÈ#vŽ›´~çxp;«N½‹ z=$ž‰`¦"u§Ûéø}†šK£—Ì(sET0Ò4óN½ŠþàòàOOs$”øRÓ&Ê"-‹µâÒyñùÊžVF%ßòŠ€=d×ìzd~‰VŽwñ_N ­ü¬0ÊüAvÑÿy}Út½jjÀ$¡ˆ‚ðÿicR+oƒäù_3€§:w0œÄo¨F«5ô©¿~è¸Í¦®2¶e÷ILÀOYÐÞç;=¥Xƒ}õè3Å*šß†¸ìöò)yܨÇ^0D[Dq'yÊ©œš¿„¨Ò=Ì*˜ —ôÌñ« e²<&ÒZÑ ×ñeGâS¯°â¢m¸ÃJcýàÔŽŠ3 ‘s½Gƒ‘ª(×%*Ú©‰#Hç mÅ/ç¡"mÊ5a¬±1Ød•¯Þ©Fåöqwj¬¤i­Û—+)Üq‰+éÎŒ{à„îaB9+ÑJ}ÿ@7Š¢‹\*‹$ÌQk¸…èèƒvU³+ðyƒí1›CªÏÈ£`õ’ƒÁ®7E,–ö8“´:¨Ù:rPDñò2”SbfÙô¼]I%„?XR aµ û²º‚h/®‚×ÉÅ»ÊÕZ0çAùJ"úaN¶ ÀV$¹–úŽ0ÃVµÆ­-߉EÑŠz+èì+"õÙµïÔEã–³‹ê ëAú¿žêFîDÑÞ• ù,m@”†ï$'VUøþÂ1à;ÍùýE|U/ädÑÊ/2÷²øþþE›ã`C¿Åç8(j”Œ7zfE€è³([°ù“îŒnWÖ&/Ó Éý’­ê) ì:ØšÑ'£¦CY+ÙJéRÒåšg…¦šw™Ð|@AË_ã_¤N@%¢Íx0é¥2Ôq\·L ¹™r] jKñ4‚›ñ˜ÝSðÚijØq(1'WPlîU7éªärù(ry6§\>5¹\nÁž° {¿š§nOÖ-Ü: DÚ¯Mÿì hÆ‹uŠ“0A%D‘±åÙIñÎÀ‚óø+#Wpõµ)¦Oþ£ÕnV»¯v3<×ß«õÝühþ  ¸"a ÿLÒ£È}d3­øR¬6Ô2\¹ zk%£xlYáPIÓ¬ L´`eŒÜ÷DÛ:Š/`Âî>ELÈ:Ï%_6°kÂÝØ˜;ÐCæ,òXW- [.¤ÀðªX¬*’z^2 é9´ô˜äÕÙJÿ"P?ÍŸeÄó7±êMÚ…J´L¸Ü¥>Q\‹S¹˜Ap@Â5¸QFÎDÇÂÁvžµ;Ÿý§ÝªòO~¹¤Š•M’r†»rûÉj\+®Š×¸UZã•[˕ր÷§êf™ÆÂ¹ã“²Su¤ —i“¸âÆJ’zN=9É–%žkfâr~¹æ ±¥­,-;¥GX¼l Wxdo×¹‡ØLye—2IÍÔ9zqQ3DòØm*Ѩí)p+Š ,ƒ©µÐÀM}Æiílü-«U¤‡ý(‹gˆl…XË?is«|„_Xçs¥„3ìU¥?)É·*Úø˜@ÿuйvVpZÁy'.Y¤Q"K~–üŠÈhðFí™ÉÔ¶Õ;ÆzçL.óŸ|ø ¦3Aó´ ®æ &dxïð°1Q+µŠ‰*™§”‘@Õ¤M áVV&¸ìˆãÔ³+ã 4!þDKþ„€CÎcÉ¿ZÊ©(þHø¯™Œ…ôü¿¸†áFC++ cppcccpcxxc++Chhhhpphxxh++inlipp source.c++-\*- C\+\+ -\*- basic_typeseasm|__asm__|auto|bool|_Bool|char|_Complex|double|float|_Imaginary|int|long|short|signed|unsigned|void before_tag2struct|union|enum\s+class|enum\s+struct|enum|classcasts4const_cast|dynamic_cast|reinterpret_cast|static_castcompiler_directive'inline|restrict|__restrict__|__restrictcontrol_keywords[break|case|catch|continue|default|do|else|for|goto|if|_Pragma|return|switch|throw|try|while&data_structures_forward_decl_lookahead`(\s+{{macro_identifier}})*\s*(:\s*({{path_lookahead}}|{{visibility_modifiers}}|,|\s|<[^;]*>)+)?;declspec%__declspec\(\s*\w+(?:\([^)]+\))?\s*\)generic_lookaheadV<(?:\s*(?:{{path_lookahead}}|\d+)(?:{{path_lookahead}}|&(?!&)|\*|,|\.|<.*?>|\s|\d)*)?> identifier\b[[:alpha:]_][[:alnum:]_]*\bmacro_identifier&\b[[:upper:]_][[:upper:][:digit:]_]*\bmemory_operators new|delete modifiers={{storage_classes}}|{{type_qualifier}}|{{compiler_directive}}non_angle_brackets (?=<<|<=)non_func_keywordsaif|for|switch|while|decltype|sizeof|__declspec|__attribute__|typeid|alignof|alignas|static_assertoperator_keywordsEand|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|xor|xor_eq|noexceptoperator_method_namep\boperator\s*(?:[-+*/%^&|~!=<>]|[-+*/%^&|=!<>]=|<<=?|>>=?|&&|\|\||\+\+|--|,|->\*?|\(\)|\[\]|""\s*{{identifier}})other_keywordsvtypedef|decltype|nullptr|{{visibility_modifiers}}|static_assert|sizeof|using|typeid|alignof|alignas|namespace|templatepath_lookaheadC(?:::\s*)?(?:{{identifier}}\s*::\s*)*(?:template\s+)?{{identifier}}storage_classesBstatic|export|extern|friend|explicit|virtual|register|thread_localtype_qualifier)const|constexpr|mutable|typename|volatilevisibility_modifiersprivate|protected|public¶"xÚí=c·Õ”ä8‰4ËNÒ$v$™'™²7K–¥&mÓ•¦iÓ¤ƒ¤Õ#y”/æPޤeÙgw7MÓ=Ótï½÷Þ»MÓ¦{ý…þ„ïîâápGR²±AßÞ{xxxxxÀý7~.'åv»ÑlÌÛ…š“+yvùˆÓnÍï=/#~. KµfùH4DÊ‹E ®Ê†I¹I€+Û-'Wqªv§ÖŽ`GHy[±Ûv®Õö:åvÇsZ¹R³²á¬#åÍZœrÍnµpƒnÃm»ÍFή¶/çVœFÛ­ºŽUx)sÚ ¹ªÊÍzN£U²¾‡JöÑJÎ%åMÚJœF§nÆ-÷kë«vå ¢¨ŠÜ‚Óp<·Uu>)wh«ªÛË%'WwÚ‡›œl6rTÛ¬HäoL†ÇÄxA2¼ëΓÔßo?Å{B2¼'Q¼‹H9­Å ¿šuøÅF㩽¼èD8—§N·lDÄ¥¤Ü,TÈ´¬l×jðeÀ¬c7)Í€9êD“A+ß‹·h{v3f—'Åd´^‘“©á•¤Ü­Æl{¶[s 9ÏA]Óz×á48ºŸ¨4ÂdTK pU<,ãêêxXÆÇ5ñ°lm‰‡eÃfk<ìõöZRNˆ°µfÉ®™¾Ñ´50™I< 5„“Ö5»-ki»¤{"R—}ÝaÎjßiκ\Ḩ»bAÙXPF€%™g4j{BÅšÔA±wë ˜®ç$Ý ¡Ž8ËKM¯ÒÊANÚT"4Fùe¯14Ùp앺$¯;õ’㵈ѷËe§Õjz¹{»Ôv_*tFìu©Ð¯“ýœdè¬cž” Ù¥ë%ûDѱ3ÏM7(ç‰n¬r˜F‡57&Ådb¾))&“ðÍI1™p§“b2¹PÎúݘòÜ=“ Iç`2<&›Yiþ&xÄ0vµ93xFדÍà=·˜Á³ºUrCø†]wZ‹v™S¼§Ä2ŠŸÈH}Z £ñ6É£#€Î‚Ýv*9iÅút¥9–»áÒ4M ×ƒÙ€;¥ BáuÐüWq[v©†TAZ¿Dy^¯51I=¿×š˜ï’<–Øšd'æ)+`¼Ü²ÆÂ=’s[A«†lyÍ\ß¼°‡J+/ê¡ÆÎ‹%ªÄiĨÛKz¬ˆ±•ï±"ÆZ”YÊd]+¦ÃgŒJ‡ÏèŸ'ånC|•¢½4}Œ;}Œ—)Çcê¬aWO”I9a„­’C…”bL-Öpçèá˜Lªz8Æ÷)/áÐò Í•Q³‡I¹© ¬Û›rI)F¼QØê¾ŽƒÇŠ˜pÐ÷’’†mççë¶Û ¿!å¹ìW$<¯M®I~…¸ô¢PuRÒðràœÐ¤dŠ !7IIC™|øœÂ,Juàˆ2î^ú÷}¤<ŸýÞ@lpžÔ ’É `-©Táy Û&å(+‡å)^G²n‰Ãù´¢£¤ÜTÔ/9 QÏ/‘r§1: àSäc¤¼@–÷m™”{ÍÐ@ÖSÍêQ«(ê RNš£Ò8­Â'å5@üÖÅ9IÊ+!²V¡ð§H9Àw…Ê)âË$W-yŒÖôò˜Á€…}EÌ`cêï•1ƒ!6O+z)é²Ê±½ÚrÎ9†¦ˆV !²!þjRî€I|•â¾F2ݸ%§Úô%òkII·z´Ý/*¾æ:ŠpÚ‰w (ÚëH¹DSÑó€4©ë±Ô-¿ž”t;I ô ¤úÐ&…ƒ4¼Tð4tBqÞHÊ«48á“b¼I2!* iÿ¢¾™”—ɨ­E§F(è[H¹EUmmP¤·J*j²Bqß&ͦªž»ä„Îýõ’(áø?Åx')·ÅbÈ–ô]¤Ü,bŠA üni—Âñì!iœqs ò $"ÉñaÉã Qdú÷{Iy…ô{Ní!½O¢] JS°÷“’:•Ø•T±H†H†£vH9?HJš]À»ƒ’,PLD˜¢}X² ÍóšKè#’Ô)P¥Éü¼JCŸ‚¸ê#5;#åå G…¦Ð—´ŽÊRŒOHæ ŠŽRøOJ3w7<`V>EJêIJð%ø´¤r|“Â}Fªˆ)Àg¥î‚Šès¤¤+äš•8b>/5Ò\t<»ÝŒ¾ Y‘Æ/Jƒ°” èÈayµçDëô%RNÄâ¹U< e¹†/“r*A Ñ‚’ÖòÉFõtã~Ušz¸ñ_#å.Ôî–¿./X}CÇ©SCÍ9µ–£&÷›¤ÌávÓû-iì‰øÝvñÛÒÌ,À‹¤}GÇV$C¥Éù®N…\d :sß#åõ©j!êE+û¾äh•‰2ødª¤î~ù!)Ÿ¨Bäw(ÂtäqÂâàÇñ­ˆ¦÷'¤¼T…„†(äOufDʦ5üL';U™"þ\š»Âµù¤´@d (J+ø¥Îî*‚‘ïWºáÿ(î¯I¹Äåƒ~ë7¤ÜƒÕÝÞo%ßLÀìÿ)÷«À‘—vÄöšF%çØm¢uÄ»êö„OJšØÝØ#Ò¬JÂuôç?’™H<‘þý()/’~'! öG©n¤?ÿ‰”çp?3#åü’‡ñgÉ!±Ç®°Û_$r œìLÿUê0y¿S·Þå/ý”Oá$Gæj(©cþ)I…@ ’û—𮣶çâ¡Áàþ-¹N]ÿ!å3êÎO–àÏììZàÉ£cc«:Õr‚ydЬÁ¦P8oª<9Ö„×qŠ÷z©f*äÍÚS£àrP#<"VÏãTú„@~´ÆQRb‡ ½<x&Snýëâ…5Ó9“õpF÷Qªú…¼*ãM”ž†K‚Úúd›åžºR'`LÑuÌ„V|çD½7c©eØç.‘5REÊíÄwÂd…lèâ…LìQ7EF!\øÁ‹; Æ@Méÿå?pfâbÉL`7(7²ô^'õn¼/(hŸ=U— )[Î*'¦´.XÄÍh½­(¾£žiÕå|“B0 kX2‚`Z#=T;˧‘Ï3dDÂVäõ}Õ'äf/â ‡NO68Q}ôYÒYDHÉOBJ.ðؤþ9|1ÕõIxfJ­šèwêÎò¼íe³ÆtvzÚ -­—E (9tg®1ÅitX"^žy™ÐÍŒ8œ>r§ÆñcÆÅPJ.FVÅÐozüz™¨KT¤èú:ý@OXc±|Ò‡2n‹0Ó¸[Ùü¡ìâäj¢pŠ_ µ2€­NáïȧÕEùQwí·`êÇP¹*éÉÂͬWïRT~ˆî7 D³läÒѦ[1u¢ƒÏn† YH¼,E YÈû»ý‚å´,y"b6“‰Gj„"’4ž„i§èÖîÒJw¡ãÙl.S±%¤ˆ3žÎQ‰qÙU,Æ“4§÷0y"†û¥1J:ßšÚ…4ù¦,,¾R’#‚®Q0IÒºŒ0ȫة›+M‹Â[µÐ€÷‚13¥`&« 9av¢HÁÐÈ XÑz3#-É‘üÈ’#òjaXíI!“BötJ‚ɲÑ×@Fª®žïnÉhÌà o÷œÉKó³)¼ RíRœ²5“Î~@ºyíi ›r +$î{›]¥¶Ë›¾ÑqaÄ{hæýVüÆÝ›LÔaüïÐòÓðj*\æÓ´1’EþPa©Ð*¦D,éÛu¤W™òÊéü~ žÅìÈ ók¢ª§;“½«7ÔÔ»yüy¼ÌZš[“êzICxH×i뀡Mû?(åß×=½Ý™~0«Ì‡qŽ¡øR7(V|FI‰ÃaYs«§Š— óóåÅZ§…ÿSÄ ƒøì:mô–fèÓ(ÎË÷šµ)·¾ØôÚ:×>§T¥¾m~èùwh´hä´£¨ÏN›PÍLêÅ«²?÷dLùà<¹Ù˜àäUžÞ–UÎÓ #'Lø9b$Æj #,~ÿ….–»çá ­¹ºÎÄ\ §áR½9°KõeÎ uS˜°®2ñý·OʤÔÂþÙˆ´ë¡ŽèÀ‰T-E@*^©ŒÇ‰2ù dª§]µDõ­í©É•(Ç$ËÍPÊ‹&G`ìš{Üñr5·ÕÖjÌMr#»UÇ­†•µsuŒ¤›¶ËÓC˜ÿè9ve '@ò³$é›1‚Y—(>aj@vWrþ˜Î([>1ø–ÄÍ\²JþPR*O®Úz8fÃý*Å^©íöƒ2½Ã=…9g°Zksò¸Ù‚Ÿ…†ùÕ,p‚­ö3ÃzPê.å±ÛmÏ-uÂíðxú!Gñ‹Às!.´ŽñÛgŽÍå?²ò¬ (ÈóXhøÈÛn–ñ9”r³âÌ·œ¿‚BB~TÁgSª·—ýNÇ­Xaz¿÷ åè® K\önAQw«0â_\¬4ñ=<«•Z-ŒeáoαàÛ½nŸ;l¹e¿aA@&šÝB¥Û¨¹ } o@_Ú‡½æ*¶±qñIXÍ÷ð‚‹üÞ–]uJjÙh¿åÔ/vcÙGXÈ/ã’ùé( §7‰÷&Z(#Z¿ cúó&ãí¨+œ¶¿Øisü'¶Ò©Î¥6ñ#™s݇}6Á²ëBpó”E~÷Fèÿ–ÈÓ2:3-4ÎC®ˆ¸O¥Ã¡(sÔ xØI`|„Gí^ö´dîm+²X·e©Ý¯ôñçùèÅÉß¡ñôT¢é1*wÜxµ“ ¡ÓÕ<]¦LpÇì¾ër(ùçày•§^é K:Ú“µä@¦rYÞR-˳I˜Ç7T­³ÙÒ¸õg ¡¨}/þD×þ¹é$3w'QªÊ€¦ðÿhs[ k´_qË’ÁæÍ¥²Ø4g6»§0aM!Wsb%oŒ’Ëf¹*ä„nSôRt­Í­H‘ýhŽ1G¿îbËzÏ’Û8Šæ¯Ê”‹Ë»6Õi ÿ28ò+F=Tœ£}Zy¢è»QØÈ”.¼:ˆ[¦_&u;Ý îâ`ä âÚ f«ívmm÷ÛÂiQEŸQæÂ GPWÝ×i¢Žêfn ÈœÛ(×:gМ‰K¿ìÒ«.a+ÞynFÕÌL¿›¹SnaT”?‘~˜® IvH+‘F¤vÍÚ<ªHL¸ «µs íDÍö@‘j’¼.jYu†l‡MìL|ÚGDÞÅ]$ G­g ®ÕS€ÛОŸ‰ý¨ÐîÒ ‚¿,šÔ¨›ˆ>Ö5ý`¡äó0YåÄ'Zz9œÖ™½ª›Ò¬‰/M Ͻ¦"YÓEµRÝNïѯë‹.B‹>HGß±¦£g©Ž¾(޾xõìå#kºx–êb>.  ‰xÍà.ÀUn%ÖÞÄÊVëLÝŠ5mL©‡Òiãü™¦ëú©i‹5-M©¥v:--­ÙÌL¼k1°\ßBo‚žíØ!ˆLÕï?Èœõ,þPfQ8b#ܺ Ð/£ýË>gx ¢Jz¢h!Œdí®¼0°ŽCMw0…6V˜:±ÿdÚÍ„[˜ eqžÞòWðÅGýøcé ærun…”ém-UqÝná6Àü®×µO¯\'aؘ„K£¡OÞFêãW“ZfŽÔþˆIû²'ód ”{õ ®[4u ù{ç3þ;o`æ!¡#4ô=Í6A²õä/tíùƒ ù¢• }“X(ºâeBW\Ã*ÆÎbÖCñ“¹s’º©åŒZ›‚Þî¡ÞWfTæRwLN¥âòpùx1W)w™Züq±u ú?ñ˜»¢_ɯUCÚ>6ÝŸÜgÙéU™QvK}¤z´êC¡…ýÔ\aiÒŸž68õˆ*Í09) ¿Ðl7}·êÏ߉¬PÝöÉ9…Ö’‹QÃà moÙ_:ìÖœøYÚ·ŸÈϯ$¤Êׇ$x»d×›j4EV¾ŠcÍ0J†qLaaÛÅã)íâ&¨eóÆ›ÅãiÍ¢R™Î(«xžjãOßîÃKêOY­¼)Nÿ¶£ó3¥YJ/2™4ØÁÄ \Öñ®8©¸J¡c"œo8uøv£‚ÿ›wîóKnÿ… T Ú1Z¬ásqø?ü+zÖôð—cèÛ±ðk£é+;‹m?HàŸG"R–‘¸åðÏqmÇC;äWüGúcÃYB ÔdŸH¼ÐǶ÷Zm±íÁŒT„fVÇCÕºÇfÕï´Pð*¨ÌE\á’èaPâSô°“O­'p-Æf±²_!wøÝ‰~½d1ë£MTQ8'|í÷.º™æ`Ì ^4î±”3{ðy€qJõ0XšLçs“{v÷Oœ™-úìïƒcèσþÌÌÁ9vý3>îÐÿüÂdaÒÏåм’›-LÌù…lÁò ùBÑß¶ Õs6…]–s KœemÝ'…ìG¢àä›ÍÚÅI??1^Ä‹Ïà6l´ØC²± |ˆ;‡V„ä\e ƒôJ •IkÀMŒ## œÀžÎ”?3517‹]žBÅBíÍÒk¸EaX£9ü3_èšêŠhSOŸ>¼R8;úArROb#ÿ ùU=ílšjh`nÌÄLþ©Lñ•ŒHaf ­#êxå‹mBÐ\ÊŸ0îr/˜º†« >É{ÚämÖÜ©ø+=¯ºE¼¯7ÉÕ¾i_Zd6]ÐÓ×ú^çÆðÕ(–>tmqïŸÑڛüWì.†‹ •â*'ÄŠ ç•Å8 Üp¸Zå(ˆWV'¹ÞÚÐxf¼FDƒÃ„PÄgÒwŽeŒÄ’0×å‰ à=}<ØZˆ&mó=MÄe¤y¹ÐsÉ)+Ú6o.q˜FDO¦TêŒ Ô\œ>C܃ŠDÜ@eMKÚQ¾üœß4Ûþòì–rMhfѬ\V àâGJ¤Œ¼ðH+Þ*ˆo@½‘uá±é ££i"zŽ‘ç¢q9&M hÎðçç±ØZ‹NÙO×®x`3JX4»©«Eã;¡86¬ ñÉ~PrÔ;—½3“áXªÔÈx…h MÞ*4™fÄ„w¦)ßc3àðÝ€çðüahzŸ(&Hü(|!°—¦~)ðš§feJËØQ{UJGm3Ø´ykçrŠd⦽*­›¦V'Ý+C /­¾Z^Ú¥Iyçeù¢¯ž¿xþš ì)np><ÿðü£Àó?Ï¡K<›ÀóFJ“((Tªk£„i?zÍ–¯B3”½œ#Ù²9š0 ^0x>@ý·çP0qxþ'àùû€çïž¿xþyÕ¸š9{þ»µ(vÕÂ#:ùõ‹¯ž@£çëÖõAà¹òU€ä»y½BnDÝm(ËÂׯØ4h´'‘Îú·½òÒÍ+‘ÝìÞŸ&¦„Ëdr{xw{O@3Øf•tµäb€ 1L°¬q—}æfÍí6ÄÆ›3EoQñÖòì4E ›fJ{»·¢ØUˆhåœDq71\v"\Ñ'O@àÝüñ¾ÝÕHòæ!­úÔÒs R/OL*_ã9ýPè´Â…tzÍy¬AÜ)L˜ÌRE6µ’šGÏs+)ôGjUH¨Zåäíä“.*Wù¶^T¬”fzbF£!ay>µdŒí vú|¼$šz W ÷¬õÈSb;c«nèY³©Ï6M@öþ³Àó÷ñ5–3œ~ T'â9yâäÕ<&u®ûáÙðͨäüá¶§dqö 5·Íê)/gR u#×"ngi²^> PüYµLiÈGQF¿¦§·ù£Ù}¯ÚŠ ±ejáF3*¯D[»aÍcH’&™ÜƒÞ?]Ëä^Ëä^LnJj×nek"ºc'"ùÜ ²9 fõ2Ì»ÓÀuØ6Á>œZ‘yV“'ŽiŽ7€Ûˆ/­eŠ÷Ó]äð°æ ÝTeI¿Iñì]BׯXbw/$¿suH6ÍE'9©¯vnŒ‡‘ÊÞ¿~Eå–XTfj‡ ™W”S}á`ç飺*òÆMÔB~Oø¬„“¼–}wfß½[P“µì»Ó+ûn—Ð;kÙwÚ%Wð¡‹E³c>ùC ©£u¦áÉ ³*ÛäÞX {zJ‚Ôe1ªæ8á꫘œï‰ºqQ·hg4O³“u0 }l…,à¿JÏé0|Aö„½.îýÅé-­q+ä\„' ¼6^<•1¥zoD5eɤ«š–¼h9ö¸æŠ™‡½:a@ùJP®Ïƒ&ãsE2ªþ&°sá©PóxÛ|½RZסü÷ òg{L1ÒŸ6¸r‹LUøÁZ£æØx2òNÝôÞßœ+7kúcjx2Oÿß®¦¿®~ÉsÑèŽÄ™0O%ÊÑÛªcÐöÐÊ[;8£±{À«q@ERôRÛkô2o'#ÈĆ&¾<|$u¥}ºX\& 8X¹ª¹¨7¨tBC¬î€Ãªe¢~*P´–‰ª$õÉtürñFA/&Z~D¾+ÉIrQñ‘Ã:“˜P¾ÆÕÈaýxœ¶'Éa…\è¿Ó‹5u ~&§¶$Rš`½fr9ôÀ—jsƒ‘GŸ·ÛmÏ-uÚÎü<ñ¶Ï®ž,pu)Ï ÷Zg7·d t;ø,Gœáüàz»þhŒ®/W4¾ÄA%©§â9I£K݈ó.òv-–…x)¯Œí…S)ðTª¨=­“ò]½°§EB¨õ§›(ªl„ÿá‚'2N11÷}M“FFêAµ× N'|bkðA¤th3Ò­âí=·Ú@…µ¯5„æä/gú¥@ÊÅ#ÃY7ùû娠É+{áÏè{gïú£î½Kä‡q9;‡ÒWVf(™ o]oJ6`q}I]C‹¯øD½K^ºŸäøÍ¾‰?õH?[ºæ«}îšo ¼kbMŽÎË8¿žÿLzN=”ãš6„ŽÞ¬’ä*¿h9ñÛ{M_ª«“†,Á»€º~ÀÏð?MÑÛ¿žÿxþEÝø#Ü»K÷$„m)ˆûY¾º½¬?Lvø£$£dp —ô:д f\ôžÎ­ú·Ò‡lÓ÷dm6ÒxÛ`Òš²mƒ4ÕšoÄZ`aÎà]µhÎXÅ©M$ó´›y¿Íc÷÷Y‡†WS‡Œ6ŸxI¬?-:m¸K½ûî­öu‹ìk2õÓ™8ûºæ[+Ð5_ÚøuD3 3"ZqÚ:ÉO³ÒY8IìæRœ… >”ë-¤¡Y«ŸÑùÝLBÔy•Bð2^ ¸ûƒ—W;&Jx5¨„u»ì5y#¨bØ–.šûL†«Ò½¨Ùžw€çÕþ)¹Â­J±´ÑM ´âñ!áMwô›ãµàyмpYCò;Ι{ÊÚ…b™ÄÌÓú±R}Üg©æ³3 uKÐ!ª˜…)ü¿ØkÿÑUº’h¢bvOašB#xb%_UnÖƒ‡(åZÖlSÈ‚{—=­H±À1Çìîì;h-4õ[¾²ÓpŽ-Çwð½¹f5W£fÌ`ÞQz@žh»C¡>›õ|\¹¿ž~êĆI̓Ë"Ýž9-œ‚H”[âr<ͲK¶×À›ª&Õ·T¨Ës±Lªº°Q®u*ŽOÊy¤&m?¬ÞˆÂmz Iµ:ï€lÀñTpv;îi´=»W  _ÛáÉõSnfŒ)qIn ’Îó2kR€s<¾¤ðBc)lVKabßY!‡—¬É!ø×ä|^j,‡^÷s{wTÊg­­ÐæÆ¯ç¿žÿÖTìð®þ½ án§ŒÒË ‘ ið(‚ô±’#k⑤ùôœº7÷ðº¨$”ýôO ûM…«:­%/ïàY9^‚wx:âäbÌN 1_#¾Âû "¶ Óë 7‡Ó ‡Ïÿ ôئœmfœei¨.AÖ0ÄüŠe£º™ä]Hn¤èÞ³c3GÍn,t0?F'3Í+”‚\רr]ÞdTµuÃï±’’5ÆÈ @ òpœ4_(Zs>’¤³„_c3V´’UûìˆÛ¾ÜZbu[ø5±f·íG–ŒÝî–PvºÚޏ}VAÓ¨^ê‡oóÅknÙmûG] êÝ·… pÇ:veÅ‘ÐSã Ñò<ˆ¨xø³n¹Bðô+ŠÀGô|c¶Àìÿ†©Q>fm@Þdží£ÕZÓn·‚ûP¦Ã‘Í©àËó •]hr­ Hý”ôÀ/ÜÚõ oäŸæó“¹âœüÞ#ÈWo«Ý^ô±Ï“¯ÖŠsþa¿î6ü|½Ó(εüùÂÒ„…w>Hn¥p«oZ]¡äëÈJ@•EÈꢩOõ´ø¨?ÜFÐx0O³^Ù>ŠfTæ÷ån. m²¶6ËmTîÅ?îÍ݈~ÅE‘8ìÃùCþSÅÎUoÉÝFê ÿÀ8ì±ä6Ä[KÅüÞ}ÊÞ}AûB0+C„¶:Õª{Ì!ê„þ_;±o÷u'ýÛƒÂÊwîFÀÿ?í Â…'!Ô•°ÊŽ!@ÝÑÁçJGëV{Y¥Ñ’3ZmÖjÍ%§2ZZµ±¼Üº]]l"º:Ó vc-¢÷v¿s“ßñï¶æžoe·eó‡ðm‘…Âh±´ï†“–É´}…jÚÆC¿± Z‹íRÌÓ\H™ ÆÎÕ÷fLÝ8+2åö·ï†ydÞЗýס/Kø*É4>Ï[+ÐQLÔÁéæD¸€³|΋\ÄÃnK“8Üé­ª_·È’¤ˆ1ÝÉgUÍõya3ÙkÍ@ÊNê¿'•Þô÷ÿg<©Cchsource.c-[*]-( Mode:)? C -[*]- basic_typeseasm|__asm__|auto|bool|_Bool|char|_Complex|double|float|_Imaginary|int|long|short|signed|unsigned|void before_tagstruct|union|enumcompiler_directive'inline|restrict|__restrict__|__restrictcontrol_keywordsKbreak|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|whiledeclspec%__declspec\(\s*\w+(?:\([^)]+\))?\s*\) identifier\b[[:alpha:]_][[:alnum:]_]*\bmacro_identifier)\b[[:upper:]_][[:upper:][:digit:]_]{2,}\bmicrosoft_types__int8|__int16|__int32|__int64 modifiers={{storage_classes}}|{{type_qualifier}}|{{compiler_directive}}non_func_keywords<if|for|switch|while|decltype|sizeof|__declspec|__attribute__stdintVint8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_tstorage_classes#static|extern|register|{{declspec}}type_qualifierconst|volatile windows_typesAPIENTRY|ATOM|BOOL|BOOLEAN|BYTE|CALLBACK|CCHAR|CHAR|COLORREF|CONST|DWORD|DWORDLONG|DWORD_PTR|DWORD32|DWORD64|FLOAT|HACCEL|HALF_PTR|HANDLE|HBITMAP|HBRUSH|HCOLORSPACE|HCONV|HCONVLIST|HCURSOR|HDC|HDDEDATA|HDESK|HDROP|HDWP|HENHMETAFILE|HFILE|HFONT|HGDIOBJ|HGLOBAL|HHOOK|HICON|HINSTANCE|HKEY|HKL|HLOCAL|HMENU|HMETAFILE|HMODULE|HMONITOR|HPALETTE|HPEN|HRESULT|HRGN|HRSRC|HSZ|HWINSTA|HWND|INT|INT_PTR|INT8|INT16|INT32|INT64|LANGID|LCID|LCTYPE|LGRPID|LONG|LONGLONG|LONG_PTR|LONG32|LONG64|LPARAM|LPBOOL|LPBYTE|LPCOLORREF|LPCSTR|LPCTSTR|LPCVOID|LPCWSTR|LPDWORD|LPHANDLE|LPINT|LPLONG|LPSTR|LPTSTR|LPVOID|LPWORD|LPWSTR|LRESULT|PBOOL|PBOOLEAN|PBYTE|PCHAR|PCSTR|PCTSTR|PCWSTR|PDWORD|PDWORDLONG|PDWORD_PTR|PDWORD32|PDWORD64|PFLOAT|PHALF_PTR|PHANDLE|PHKEY|PINT|PINT_PTR|PINT8|PINT16|PINT32|PINT64|PLCID|PLONG|PLONGLONG|PLONG_PTR|PLONG32|PLONG64|POINTER_32|POINTER_64|POINTER_SIGNED|POINTER_UNSIGNED|PSHORT|PSIZE_T|PSSIZE_T|PSTR|PTBYTE|PTCHAR|PTSTR|PUCHAR|PUHALF_PTR|PUINT|PUINT_PTR|PUINT8|PUINT16|PUINT32|PUINT64|PULONG|PULONGLONG|PULONG_PTR|PULONG32|PULONG64|PUSHORT|PVOID|PWCHAR|PWORD|PWSTR|QWORD|SC_HANDLE|SC_LOCK|SERVICE_STATUS_HANDLE|SHORT|SIZE_T|SSIZE_T|TBYTE|TCHAR|UCHAR|UHALF_PTR|UINT|UINT_PTR|UINT8|UINT16|UINT32|UINT64|ULONG|ULONGLONG|ULONG_PTR|ULONG32|ULONG64|UNICODE_STRING|USHORT|USN|VOID|WCHAR|WINAPI|WORD|WPARAMµ xÚí=yÛ6²¶“v{lwÛ¤é¹mØiH»RÎMÓõ:>b·Š­µ­¤­åh)‰’S¤BR>dÏîý÷ûýÞ7xïK¼ïñ¾Çûop‘ D”줧  fƒÁ ‚ÿ¡¿WX8a8®S«Ûnc§váÅ‘øïÕx&Ïhì˜åeáë±| Ã7 M³eôì Ê;–³áv:¦#Â<–žï"Ïwœ…çbùšF`üÀë5‚žgúÓéu0.–c<«yŽ…zjqMð< µT= %–ÿ OÅÊ·zNç+4 ÛŽ2¿#sÈŽ'gŽ)ÔÝæATÉK,<“Y®kxFGh³—-âúsžŒ•lÛnݰ ÁA׌*y%3kõ,|3–uÇ<Øs½¦‘0ý_²ð­XöŽÛ´Z–éõç5_þ×òå¿ÄóŸHlmÇlÙ,H}õ¤D3Í,£Ì{è{ñ\žÙõ܆éû®Wè(û —Ò 9»P˃Õv\Ï,ôº]Ó#z‹²_س‚m·|³c5\[ì7of#Õ´|£n›Í¨çüiu¡ŽÑð\*ª‚н=`Á ïä-(÷¥w% Ý`Ûô¢¿Ê["Dî½¼%B‘|?o‰Ë¼ÄyK\‘õÕ%u ¯g›aó$eqäôa!…œ:sXH!'œHT³EDM ¤åìB>da!/?%)•s‡’¢HHçÃÅ ¦“!nS‡’5}H@!i%'j@²¬†+R®|ˆÿy‰Ž¬òI‚vax!‡‡ÒrIê=*DöµÄeIÆÒK'ñáŠdåP 5–Ó²ý:5[È‘«‰Ù°ù#`ícÉJ®Õ:†åð§×$¸õ^À"6˜RþôºdðЧ˶Á@²y®,äv>±šøÃ›,äf5÷løó[,ä¾Hã“Oø£O%ÃUtvxž <7’øóß°ðÅð¹ô f%&Kýœg»-w²óÍ{žwNR¿r^ÁFÇèbçÀlG-6/!ÙÅM§É /H&A†“Æ‹-J£y¦sÆ Þ‘ Š,§ìEÉdåöºixöAÁÜ‡Þæû/dü2 ¹ß“å3r¯%æ«ñLŸ³ð-9“ä£ñü%ÉâKÊÂXNÏäeîJv˜Ú+ã%V¤îGUºÊÂS±§`ÌÔÍÎ3—%Aæ™™ëóýVâ§àÔñ,kR¯·³®mf¢<׺Ôó¸ËÇŸoHøH.!ÏV‘”‡mÔÍ÷XøjøpH€û,ä¢üBÒ¡/Ⱦ”*‘Ežï+IÌbN"Ï´)©[ènu¡®ª„Œ ¾˜¸Q†-I â(<¯ëíŽá…Ô¤¾ª,‹þv!.k¿“?u9«U%î4d ‹@ˆQ¥ÎÂÉL(ýe| T—U!ß”tvjÑþšM©§&:îIþõUÍ+¼>*Ël¬f¬ Á8ΪNf³·’ZrTÄ‚7kuêü¨¬<"Ý^ä„ðï]©b<è›nd¯àÛ†¿Ò áÚfµªON†ÙF%ÚFeE”Ì(ax,6Žõñ{2A*…›—E Â3ÅFR×PKÒ“cƒA:”üÏIRƱxE¬ˆCÓ‘ÖS¡$V™Iš¼ Ž”yÏ©(fxRÜ ùExŸŠÀø¤Jµ¾Yí>.=©mÑ.+p3U­Jã×ÿa•€÷±~i‰ìnƒåÔ-6N§ðƒf!swYT/"òF°â4®$¡¢neýØ ?Ȥnm?–4E¬W îñtÁÚ@²{ȱülTR£z‘^…°²ÓµÍÚ­éITœª>ÖõÄN!²òöˆ¢|3¢QG§“úKœqÄ瀙<ÏO–ˆÃËûÏUò>B¸Šç’¥>%J± ã»1t_õÌ®k5#­ÂgC}h¶YĦgL¡Le*(,aÕMôªêº.ëÇPa…Lᤙ>bz0 æU©½]“¦-TŸˆ²>¦ ÷ó‘´_¢Íù]#—ãõªX€[Tïfv3©ÏŠô¿‹téÄe„·lœ;r„3;b¸£.e™g÷Ι[7t¥†•ºµ¸ Cvl± D5¬‡rŶòéU: ÌÚ“÷Š¥îäJâϨ¢±¿HÈ‹|ëšïö¼†¤æÓè×Fò6›6[QO_¡; —g/Í "Gp½þ•¾)"\Y¢S¤¿w«àù ‘€p¿_£XÔó¡¡Þ+cøK!p<·äÅÿÀ ŒýÜf3†ªñS%%¹öÍôe|é’,Fs#ð?/„]wû ëZ Ùú ò5¿a8-tàf9]PRA 5 Òìºæ°l6‹è:² q›%ÓkÛÑ Õ­žžæk‡ºŽŽœ†Ö=@F€:]54¿ë m¹¶¢äÀլޱš¨§Ù†w:ÚÁ µ&©™žçĺ©Õ1‘m:Èk¬ý–×ÑCÚ ´‡.Ú­÷ ¬Û0lATGêvmàHæB¼¬FÒi.,_Ým]†å¶ëœƾִv‘Q÷uŒ£¶‹Z¤訶°vÚ û ´×ˆ‰E/Ð| Ö©±è³ïM¬˜š×Ò±–Ø×dW»%¢ÎEÖ˜Xüw5®3"mö)¹‹…³KïÏ&wM£¦‘Ów@ AY€Õ„ ¯ ùùx&@ÓHvS º®ÌxÔ°]pFô‹Û Ñ´:¼çh oßk0¦àêPÊ„l ¯^î7Ìn€|`¦©9»ˆÜ¶l£ ùðËÁ¸ Üwh¶À•I£n „¦ MjB)O3,ßdO€ÕÐÞJ€ ŽvÏß©·š&çRŠÅÀõ¸âÀÃD`ÊCBL :¥)týÖO´”j3B3GM šV3£r®æ´±2-ª•kâS€í¢Æ2¡ <³(*õ,FC¦’ l‰ô+¦=T§Š¢ˆÄkÜ#_PúUßè¢áá%pÉ3:ʤ:ä„qr(Ø`>i 1¸£y¸^\iÇÝÅêÊÀÈšX† \«OÙ'([PÕÁjjܽ]y)^¬pÝAÇíbнËaÔã;TY$3d›üt³7Ú³ §u4À#ÄÅñOƒ< â:A:Dc˜ƒ•l¶8X[Ða­®NP —÷1g!ÐÉkÕá9±¡ÏºÏÕ„[Öæ>ù$·Ax"rfØQYŸñ¡çñ•UöØXš={9‡»]ÎW§Æoi`ñ§fÀšº5^:?Yuf²vN©\*~ ™`ÜFÁ¶|(e8˜ù¬pÿî'@cà°*.ÄùnŸ: û©¾Í‡}†}àü,˜õ˜#o…Œ;çü‰l;%±ìÈe\P3ïÝ4æþy’óçŒuÇÓèx’; â[#§×jh¥R* Þ3QËÀ3sk•´8[Z_Ðû_ú ÷Z‚ÅÑîaç[dó¤~q¹´à!RY™ÛX^]!7¥åH ŸºeXƒ8Úð¿³9[øj«º'ì~<+ãF}ÔÐeíËã[?ްuÜÏC;+–½ÚÅL÷ÑÎ2°åy´sA*™N;Øžõ@ÒÞW ª7­‡W#œÞ{Ä/¸M«g2NmÞºQÝÜÒs¿rº×uŠKæÛzª ¿;#‰SuLÕÐ@“F0lh¨K1¨âîÕõ¤Ý«R[ªÞ³ÄŒ§" ýmÜRFPù2ëg9F¹ÌoÄŒ–@l]›¹Þ‡xh¦±C<ÄçC|lºôÝ’8 m7p‘ÕBµ29A ±W›ü=+€qo{f™Sÿ_)pþRÄùõ°Ù‰¼÷ˆÀ7Aâ§£užœC»ð²Ã ÅË ç.äáò¼XÍ™8ÆÊ÷Xoô½!N¶’ÊÕx¡Ð4ñ¹øü;ÇO¨`‹àR8‹U'¾ÆÌ‡ü3gª¾ùœÜ/Ïx-r:k¬ú#h“×Õп‹­ò¼Ü*I‡a<ƒFO`­ýÚ䤸w±Ib¯‘ÈJï5û;c„œ>£H¿®Hÿ‡"½¢HßP¤«ÞÝR¤ÿ]‘®zƒû–"ý¦"ý_ŠôY™ñø7ÄÛ¦\¨ª:ŠŽ¶JwƒØR@Ÿ$!¤zíY‘~?EªbCéDÔR Ra½*Æ%±Ò’jÃ?ÅÑ%)k8O·Ó½4¢¹ì²,­2j1øxº&’—Ï4îÂô-Ì&9]}/Ô+^Ýz¬'¶¶ˆs)F|Ë9ƒŽåaX—–èË#*B<–ÑibU< +êÕ½élAÿíÈÝîÅ<ü {À”Üþ}ïð)Dù§¢šlô> æ^ÂL‘ØCqVü§éÉhRgN±žè\@·"@,ñéÃÄ·^ÕZaåPÂv<£y‡j* ÖFRäïå§#ä÷ß!žû×_O˜Th{ülæ\qxºß„Y'lùù]³¡“\j @RçQ¨ðm>¾uc dæ¦1Tý¥a÷­¨ø^Ž1û]¡Ñ’æ†DwZñv b%ñ©ºö}bçg#'ŸïÏMÛÃN“ø›ª:´¼ž½&å0»gr´Ì+1*‡±›Tüû…j8ù§Xc¶” XÅ–¼ŸC‹Å̱“âÐ8aiN/ü²²ß'޾•Ç® «G.ãƒlŽfR­¯M·•~S¥ )¬œsW'#"i®”Á3é¿Icb”^Åt1k?=moÜu¼=îz~e ñäƒê}q ÷-s²Ð;¯Aö¹\!þÝwʼnX¦×!p•GCÉûÓ\GÕ»«yÛ÷@ä0lÀz6 ˺ A>ĄѼŠWòÀ¶†¹êª¶ù€ª|¼‰µŠ—ɱ'´ëÚÃÆëèä”­ð ­ZGɪ¿ÔEJS<‘j…ŰðÄ9¼öE:æ÷àܳWcžé ªï¯ä•¾áÏWÕ}2wÝÿñW» í£/ôÍ …OŒBk¶°¸Sn§»…™jsoÔÐ4œ¢_œ!‘)H¢y·¦Á;ÒL´4 ú KœÑµÍÖâÒìÇ?ºô•H oö*[3_áÁú¸KõõŠp‘lOÓK_à|1‰Ã…OÞ Ì?åW®ÞBø«NÁå<ü…¿q—pùôS¸Ü¼Y h;§å„#ÚŒ^‡f3qíùæM€Š>üׂ²O~ó¬`¤Xb _û»‰qÄÈÞÂx¢OQõt5û89lü`_švGÿiT- óè, l@¿G§‡Å3<.m }8Óö ¡Ç çygÐu2nË/ôÂãƒá$N^æì¢\šbˆ£¡Tºâõܺbœ…Ô ÂoUÑoU犿VEÞ°(Né}Kýt¡Ìälâ\–fv&dý@â¨ôBE+2ˆÒ·ÌÜÞ-èò~C"|ñ 0ç­‹pu Пò[ˆ*¯Ì9šá&õ¼Æ$ñù.½˜9<Ù¹^˜û‰%øçg±ä‡ÖµêÏ¢kåeÚño]¶Tlú]ŒMüÜÉÄsbcyªAkçˆØ>t×þþ7I㈛Ä~ÊM’©Z’´mÌ7~ˆO%R}„ÛlßI!/fžÝ¥+ܚƦ¦¢µ‰Ç—>z"Í[ë0c…&³jnoöO]KÇðŽ) íO¿™›üD˜d¦&‹dE0×ÁÂoiø½"ýq^‰}CVVKsfðp7sÈóƒU\~KÕËj)8ÍQbªS†™Ý{6GH¥ñB.³®HßÍà·œ~ƒj¹ÌéH‘þ§Ø}½ãÇöͧ®ÌñÃ|ó)ùIOý›O™c+ù½-k0·#[à[2Wâ(~§,©G*ùÙJÌwù+a"ýÏëÍ4Ö'ÈGîg q0ƒJxš#{ÃõÃjû©7Š«¡a SÀ)^®×å^˜Âûj]V ‘´ wØ îÈ€b‘Û;z&- §Ùñ*êôŒž]ÿ[ßžc|(BœwQPÕ&‘›8•>©ø~ª²à ¹ûЃ«òôŸÌïmdÌkÓšÔÆûÛIÈçªXTGzüazg‚7ðlBêùLc’,«Ø“õ=C‘ݱãGô1FÙ‡÷&÷*Q|wd@i:òo€|??ñ©%ù¼Å”/|@ ÜV¾ôóß²ëŸSGÑ·»È>ºP†z™óíòΕQ ž_ÅPÿV안‰ï%0ŠžL³gxŽå´s±âýôú@5CÞ‹1d:©éè‡# k ¢Àsá7žŽ_ì»I¾¯êï_$ÿÒæÍ¶éíXêížÚ–X›¾ãÄ,Cç"YW÷ícÉ77wzäÇMÿäœþs¹é?•LÿÔÅï9¦~ô(üè9p!7»mà°fÌåï ¦WÒ0UÍêÿQ‘þD‘þç!êø‹"ýž"=÷G9ŸÉl‡ÁB˜í˜¹^­¢M£n¶/Ø­ž;3³…6/.o‘í±tçëæ•ÂÇô~íoÒM·dó,ê w¯[¦A úq<ß)ä&†ÕµaŽŽœW™ÿ¾iT+¡Þ5ÔC}F;“½/v±·ÙIæ}#ÖÀßLÒ™¿ÉBûÜwí«#y¥èh~v¾zæñVª:?N«3vlÈ“°NÍð;xòÜïÔjÈè.ª»®j·ñwHT›#oåí#zd?jÙ® ÚrÇÞøÂ²]§üm|+Þ÷m6aú‚Ev]«‰’ÞiÍ}TÙ£!¶½Á©W£uõj¸ò^Tßci4éQÏhÖÄ£Ùôjø>gµéã'B¼x [²ÀFn”ð£ê¨Œøñc ý¯¨ù»Á¶g‹ðê LoqEÒ­”£+-ûò½”Çu¦pëí1Zã R¡(Fx›rÈ'¡eŽÑW„ái¬àâU^¾DëWjTX®±dèñ=žšm>‡Co84zÇaÒ»rT®/Ø‹—ìŋ⻖PaK¬¯%V׊ÕÖ+kÅêjŪj 5u ó{a "c_ŒôúcB£œJ» iIo~ÄŽÄ\G$¸x•†—/Ñðê•,‘îX°Và»­8ø‰çBð³åå…•µ/ÑìÆê]t{uµD. ³+èö— hn¶Tº=;÷9š›[š]Cô²ZZ][[X„ÈÊúš¿¿º6O¯¥Õ•;4V+o¬Ñ K«WÐbiuv-ÍÎÍ-” (-’\K³+ó¥´t{yãîlµÊúZ"µ¬—gçp|å½––¡Æ¥¹ÊÚú*”œŸƒ¿ù…ùÙYˆ,¬×µU€1. +Kw6fññ›h‰]WW øùåÕÛŸAXZ½= ˜,­®BÉe€W ivWúù—pÇ¥Õ9œëîÂJ ï®ÎWh¸²¼±)Ï–6€gKå´¶°^)AekwðÍú ºþZºO*€pe-2ðG¸á5|6†+0 ®À²ÒìÊåyTš#—/Ë ¨tg­Œï0¯ñ%Œ88¥q€‹—g×fïB@Zܦ¥rØ‚]Ç…Ês,¼·Ša—çîÓ{Ú¸¥2k¤Rã\*Ó:Ë4+ÊJ²´ðÅ¢e:å¶Sp†½ÒߨIJ#E!™a‚o×LŸÀf!NZÇ–.eB%ˆÍMd}™Œ®8Öà˜ƒkëkx1Q³:#~ã&»OÔÀ‘5°>½&‰®“o©D ư\Òj+´Ú ­¶Bª­8f<)‡Å\'»gÑ4®ÍðhM„cÃxK£å¨ëA»ßÇW¨l,^¼J±ÚX¼|‰Ç®áˆÐWÞI´Dòó»£Ã®Ûý‡]óYgéƒLؾÝß(¶m·ÓDªŠ#àþÀé‘ IÀÿŸé¤CSScsscss.erb css.liquid source.cssabsolute_lengths(?i:cm|mm|q|in|pt|pc|px|fr) angle_units(?i:deg|grad|rad|turn) combinators(?:>{1,3}|[~+])counter_styles#(?xi: arabic-indic | armenian | bengali | cambodian | circle | cjk-decimal | cjk-earthly-branch | cjk-heavenly-stem | decimal-leading-zero | decimal | devanagari | disclosure-closed | disclosure-open | disc | ethiopic-numeric | georgian | gujarati | gurmukhi | hebrew | hiragana-iroha | hiragana | japanese-formal | japanese-informal | kannada | katakana-iroha | katakana | khmer | korean-hangul-formal | korean-hanja-formal | korean-hanja-informal | lao | lower-alpha | lower-armenian | lower-greek | lower-latin | lower-roman | malayalam | mongolian | myanmar | oriya | persian | simp-chinese-formal | simp-chinese-informal | square | tamil | telugu | thai | tibetan | trad-chinese-formal | trad-chinese-informal | upper-alpha | upper-armenian | upper-latin | upper-roman )custom_element_chars`(?x: [-_a-z0-9\x{00B7}] | \\\. | [\x{00C0}-\x{00D6}] | [\x{00D8}-\x{00F6}] | [\x{00F8}-\x{02FF}] | [\x{0300}-\x{037D}] | [\x{037F}-\x{1FFF}] | [\x{200C}-\x{200D}] | [\x{203F}-\x{2040}] | [\x{2070}-\x{218F}] | [\x{2C00}-\x{2FEF}] | [\x{3001}-\x{D7FF}] | [\x{F900}-\x{FDCF}] | [\x{FDF0}-\x{FFFD}] | [\x{10000}-\x{EFFFF}] )duration_units (?i:s|ms)escape(?:{{unicode}}|\\[^\n\f\h])font_relative_lengths(?i:em|ex|ch|rem)frequency_units (?i:Hz|kHz)ident*(?:--{{nmchar}}+|-?{{nmstart}}{{nmchar}}*)integer (?:[-+]?\d+)nmchar"(?:[[-\w]{{nonascii}}]|{{escape}})nmstart&(?:[[_a-zA-Z]{{nonascii}}]|{{escape}})nonascii$[\p{L}\p{M}\p{S}\p{N}&&[^[:ascii:]]]number5[-+]?(?:(?:\d*\.\d+(?:[eE]{{integer}})*)|{{integer}})resolution_units(?i:dpi|dpcm|dppx)unicode\\\h{1,6}[ \t\n\f]?viewport_percentage_lengths(?i:vw|vh|vmin|vmax)­4xÚí}‰ŸGuðJ¾/Œ1>ð)ùì‘ÜkY2>äØk°-L¸1I€ÝµSÓÝ3ÓÚ¾ÔÇîŽT"7¹C¾Üä ‰!!  IH>rA€¿'ï½:ºº§{¦GšZ[ûûíLwÍ«ë½W¯^½ªzï»KâïuòûnÅÑK,·K3/éЕKÕ¿›' ã"ʽÔÎòqà•ð{ä÷MðE–Ç¡z®ÏJð½ÀRàÉïëëànì¡ ¿x&¨.õùýú:è Žàƒ9Fÿ.•ß×Õaý0‰S£þËÚ ÝðÆƒ”…^VÂ^>V7öŠÙ°‡앳a(˜«ä÷kë°5Š]=N·óšépº¯ikc„íK*È¿¶ö­a64ÀT•·ÔÁ²"A"eŸz‘A€ëÚ˜Eå(A_7T£@ÜPÍS{PDNîÃÛ¡:¦ë’oè¬1|£ü~C¸_øAîGÞèâM3èæÜÜˆð† ºŠ7t͡븥kÝï[»æÐcà¶®9V9nïšã*Ç]s<¢rÜÙ5Ç£*Ǿ®9S9öwÍñ¸ÊqWG&Ñ主c‡5“ÜÓ5‡f’{»æÐ­º¯kÍ$÷wÍ¡™ÄêšC3I¯kÍ$ºæÐLr°kÍ$tÍ¡™ÄîÈ$¹Ë«8¢™äÁ®94“êšC3ÉC]sè~îšC3É‘®94“<Ü5‡f’7vÍ¡™ä‘®94“<Ú5‡f’Ç:2‰FÕã«xX3ÉÑ®94“<Ñ5‡f’ïëšC3É“]sèž?Õ5‡f’•ŽÈÕžî˜A3Õ›:fÐ<õæŽ4K=Ó1ƒæ¨gÕ#‡Nƒâõ\mÒ”Àq§6sÃ:ÄK›´¤cóåÓœõ–ùòiþz~¾|šËÞ:_>Íkß?_>Í@o›/Ÿæ£·Ï—O³Ó;æË§¹êóåÓÌõ.ù}SC¾6yw'pÍïé®™â½À5/¼Ð \³Àû:kÊÿ@'pMðì®éüCÀ5yßß \SõÍ"#ÑT`÷ƒØÙ(iúAù}k8³ Ì®× eV;gѬ°ÖØ7™!õÊÖ;ëÒ_”ßUÃÎdj³¸{©¼.ÿ‡»ÁkNfÝà5+÷»Ák^vºÁkfv»ÁknöºÁkv4NåÔ¹>r\†]shŒºæÐTð»æÐt8.¿o¬äðC°È40éFhÝþ ±5¬” å‡]sè:¢Æ¯ dd…*‹›ø@c€)4õ£a tÖ 9ÑÈ@d-³O^:¶?3 Œ©ü¾¾ ¾Íf‚êVäR$ô£m7à»è®KßlDv’Ɖ—æõn5¢/ɼÂm'`YfÚP·»@놌»@ëQq² ´§º@k¹Ä»@k©tº ´–Iê­%Ò4Ò2õ†ÞvÒ@úí®1þcmI‹À#²ÛýØ58öÇ»@ë²¢ ´¦æOvÖÔü)ù}]3tÙäËïªÁ;óÏÉã´„ûéépºS?3NwçgåwÕ€^¤AÍ~n6¬®ÿç5„MRoà7Iƒ_èœE×ò‹-ÚdM&ò_š «ËýˆüVû5/½„zúõ—å÷eú×,gi®~þò[ë&ÑÈO¥üJBo©”_­‘¯¾e¦à~M~_kÀ{_ ì×å÷U%˜ÚÈR ¿!¿¯.Aô–‚ùMù}E #6®ÀoM¢7‹ÌGå÷å%L¥­¿=Y†ÞÌQ0¿S£€ÜÄQ?ÿnmÆ‚ŸiÈ%Hè‚!­èïM¶Auksj«FüAmZ2·Špjb0à4ðÊï×5‹}%ùGòû iìÏ( ÕäË„YCþq­´Š9CýÉRU‰h[Î*øO‡ŸèüŸÖ¸µ¶žR`Vã¶É‚¢¤ËËE…!³]/ðCÔØ'êÝ6—d è“5viXW)Ð?¯ 9Ø´‚œª`ÿ¢6Ê]ªÎÌŽþe­µå–û«š0¨/ ܧä·Ú¤èg‘3®Ÿ¿–ßj»JcGqNCÆÂACÊ©<Ÿ®qí¤J¯ ÿ¦Ö†ªr® þ¶VÞ¤Š­ ÿ®†Diöç3õ²Ç@9bðêˆúl¯|§C@¤YÚçj SQåÐßׄBàEÃ|T)çó5c»·¢—Î¥´º¨EZÝ3CZ©¢ÎNRÕkß'¿å vgñåRᢉoš„»¢‚»Ë ”¬*û¼§¥Ï÷6´;óh.^®¨’ÓšpÕRAg¢¯u€]Q°F °«+0«/žzb½7Á@õ6^¹Ôu¾¼ªZ|¥ôÆþ÷øx¦ô ¿§ÌªZƒ4y÷¸okË«‡ìÇ×rñU¦è­ô¬{{½äz`>f2úí5F×ë3¥Œ6q¸^­ËŲ\¶4ñôµ â|ä¥Ë ƒæºMZž±0¸¦* :j(ûgŒùTM®ùÞÜ×,µ®2pg«E3Fí<‚g§[m]ô:à†¦ÚМz®æõŠ"3Lã"i›ÎK"ÅzõÙ¯…¡E‘Suº?li굤c©Ã¬¡ »Ýz³hõøú¥Æjv\=î‚Êöú›ømîñô–&|qšÈÐvP°]ÇØ§qlu$¥`ÌÙ¤¼aéìFŒ‰»Þ Ü}}†Ô ¿+eCpr·møX]µ×¶ÖW×’So? ïÀðã§ï»oõÅÕ£,s|ÿè:üqœþ×ÖF§zà‘Ó«ûÖòµhm°¾Â×ÖV_ÄǵÑz¯wÛ+TìKÌ>ù&ûƒ ,zZ{ §E‘ºn«b?Kí·nü~‘ +òTR߸4e‚¹ÔLø¤&êvo­o]¹þ¬ÿ¨ro›;#žzaR9¥nnñÍßC |°íò'äaÈOpø!Éyâðd›Òòw×r4÷süÏ‹4*Êx˜•oÏŸäÏŸ42&>w(ÞM¨ÚØMÅ2†ý<|û‰¾ýZKúWZÒ_Þ¥2âæùeÄ%g*#Úpý™‡™þ©]Šë[æÇõÞ3Åõv)Žn;‡8úæ.ÅÑóãèŒçõ¶1ûå–ôoïRœî›§—.§_mIÿü«„wC¾>\ï&œ./íÒ†ß{'‚_Ù¥8º~]´h¡µ[q×;‡üõù]Š£ƒçP wá¯W‚@¶Ïƒ1ûåký]°óÔí< 7jªbçQ‡g”•G™`Å™¤euF©f帤¤Â³7_Ú¥ãåÐy8^v îŸòûsfê°­[<ô]7ð8]‚˜Ø“Qg”±/÷C<èú©ÜñÓƒa·åádhúÓ'¶ú¬ÈãÒ~zw µz[»zÖµŠÙW‚óÈúÓ›Á}(+rK”«ûU“u'·-Vwâ›ñË`õ¼3ÖéïIÓÊã„§þp”ó~œçqÈos‚æ^P |1¤Nî÷A†ˆÂsØcœ,¼’Z)F© ùVbC$¨þ‹7ÑÿâÈøuøÇãw¥êòÄNO¤7”R0B€{ 'b×=—Òv·‘åÉùÉrÙÙNõôï´¤ŸÍ>ú+a?se~Ú\±hÚtáw3ý[Ò?×’þm³Á7—C—öÀ.ŸrcßYÅJYK½ÄË ÇYMe»«,¯!Êûa°ŒŒô3Ös¶’b7q×›æç® –¼]nÉ{óRËߎ˜o*ç÷.,.,.,.,:ÍMÏÎ?7ÍgüY.õgì¾Ãå€åD- 9é‘z©ÆõûŸUßÐt®²ÕAíMy+q0×%g”«m‚É+½PÁêA˲Ræç<`‘ (I<ÝÒ2ÓãD& `K´wÆúý½Ö`ô5÷`Ïz°G߈®ßióD±wÖ§¡ °ŸBˆ²Ú€¬´FÈmjº(Vu¾$‹L1‡d£F]B¥œ"Êl,Ï™3ÂC¢¢F’’å  SwbýÈI)ˆ²h„–”GÁÀø«°=NíP (Ke¢Ä´Ê7‰ñóÌ~¤hs2\R˜$² Ilj'V\ï‹bD˜`$Þðì •Bƒl7¥Ö 1ŸÈ„¢ÒlmÙÏ}–ù™x4XE¸ š¯˜F´#î¦×öZhmMoeºh„N-ÐKSO̘º0NÚ‰›²¡š€S/wF€ý %¿r/L@3s¼ ÈäÌêÌ@` uŸ8˜pJÒRf)7ôXNd©Êz¡|Áoxum2‘G‹Q¥š¾âþqÜçøòÀÕ” !LŒ)†4Êv@ÎåìIµmxi¤d¬1Àú0¨§í2PÒÄ›’þ…óRcJƪ`'Æh†âsXË_*•T )¥šQ·”ö@D# .ÂK”“˜,SƒÂÀw ˜z Q.0 ä*ÅÓ"‰sÜTû©SíŽ|‘sq_°Ãl,àTCœ¾p« XS _ ‰Û‚B?˜°‚ì‚AÀ’‘ï‚fòt Ìõâ×È!ƒºP¨s¥Pl£ÿŠXÊjB§C ‹p̼B¢…þ¶9º©"6#Ô¢x) `äèù0E¸1ƬžTé$ñãXÔé&Q­‚ÑŒnNÄç°÷±l(Œ†W֍ߨc>‘´]&©áV•h&/Ë6€æq¶…6#عǓÈwIƒM$¤-+ó)ŒLùe“GYñHe¥ÿ JÁ‚(J*Ù²¡dS ‹¡#Yj2}< k¤q¤•˜)bµ–Ïj…(–!åV©ÈèÄ!aÏ+—š3ó$ .¥>é­8VDÆ¢®š_ËÈJ²Ì%Æh>ÒâÀ•(ÄáX '9¢ð¹Ê4 &²j C2E0íf¥àV¿y0ôl†?ªy”‡Jb…•Ì_ä Ãf.®ZÊñ C’z )¤ú˜þ¤Öü"Ç8ÂCj¾èŽ±Ø´T dÉeQ‰TcèËeC-UꃵT=vÌL?rH–säÑg+é£ô‡ŽUàCÅ”ÏVғ骤?*Ê?üÐc•rž‘õ>öœ™ÍyˆÒŸ}´Rï±Ç%ü±gŸ©¤?{L¦;f¶ç¡C‡d†çމÀX³/`ù`ÙPiԉ駓t˜œ å®eM<}¤tpÉ8ë÷Á~ ªd49hUxt÷k´.¢ºÊp· ´I&–¬…ëǼÏqN´”è£]Û…t,!x¿žd*X\XB‚¡9Xìëf\ÚÆ8¬ Q*)þ ‹¤2h¹,gô‚‡».Ó.üÃJ´d?²û£ ƒâ€DSGð”‡÷¹/òøáûQÛ)>êñ™Ø–Üè» ‹‡^ÄÖ‡^ÞW k° XfÒZ3¡•=‡æ… ~@]ÛäQ,Z õû‰2÷q@\œä¢5±è ° ǹ)ÛA+jÕúh.?Áӄâ%Íš2îÈråQA.7få†`‚îÍ%ɤ³ç†0 ÂD,³¢ÿ!ỗРls(ö˜xNœ»\/Ïp@ì•#æ9¬#rB0l¾À~Ž™R´·€Ù6ÏyÁ‹€Ãzö“]/æ[ÀTÛÐhya îïF›¦ë 2u}LmMáZìFïòa )ñù^oÀÕÆF$>XúÜÉ£3œÊòF²˜Â®õa³1cñM1 tÆ”0‡{9Ù®xäÚ„úLÔV°(xNÈ,*—Ý®oË•A|µòY¼¶Ü» ä %¯~€cjœyu«U¥Ú?ý¸“,Ü8ê‰"ÊÝhR£É]h⻋&ˆ>ĦÕÿÛZFl“¹Këë5±â‘­§ «GNóÕ$dí_} Ÿ¦]1qØ—ºxµ‚Ú*8uøÓu‹Eý&QS©u=û_ ,šéÿÒdX[ÙKm6‡Ÿ©¯…n55ü’ômºþ%- ÿze pÁu{m¡[_N‚V¼ÎX{®~èñžõ•'{ð6sõ©BôN^i¥rÇü¬IY},û †ŒUÿ­ÐÁ•™mi½+Þ ÖççöÊ’×d×Êò_­S4ÙÚúÚêýw­w¶?LuNU¹æó_[o:;±ˆ?Oÿ|]J\ðnÔw¿xwgŒ»œCܵÝ$«®‰“=-y¾Ø»dü.iu)Ûþׄ›_^êÐ0úSŽ^Õ…ºq`myÍEËóª÷ܺº-7!`zâ•w˜µý£®‹2X;á2ŠÃZ5ê‹¡º41³gªbœ ­§{Έ¥` XëWæÃY<ªhÓ€Í:˜ma‰¥5mðÌð4¨KlŸE—:Sïm{ª}4C2POIý£`)’QGT¸ äKj\=qõ{í7< \ܽY¬Q‹qæ R¿©\¿^Q®"Œ*µbxq O7†ªfmãÌ=9óFCºfž–—/èN<ðÞL¶·sE׍ЀÿÝØ)Ðx8{÷žDT%íÌ¿¸sïn« 1y¥Ãñ9v–Œ¶ÎêRw¦·—vîíõÕÞú!îîw”ØwÍè¤(lgzxYç¨ ”ÀÚgºÅž3 Ja.î2T.ï\ùµÕÊ;Æ«;×pgu>BqBwqh&º0ÝÈé¦\_t†#V#v±óËþ¦B×ÕÁÍȵ9åáêPÇã¡=ézéhÏøi&/•Ñ!ÀÙ}ˆ{èSë{°Me¹—d ¬è¡6ųNµzni«‡®_M­æH[üÌå‹«çmB­æ|a>Ú6ʳd‹«éhÛd˜ÇÃáÄäÐÎ=µ¦ïk«IÜ쪱⠩õ<µÔò7Mg†îtmÂNmÁsÓZpI‹º{ð3ÁîFÎÈsYÆ`±Âì›~Œw+úi¼SC‘0@c—; µr*䩇—gQìÄt^¯Oã%‰4‹¾^* á0±ÁÔ3¼R1f‡mÐÏø S†qàzQ 5Ñâ\< Þå“HÚ± Ÿžðh|D·0Ò ¢D -I"‘/ŠEÒàwFý+sÑúB·ÞtKä›lL-'ŠØÏ¤Ä™ëyI‚7&ð!Û‹’üP”ߘ;v‡?°àõSŸ<¿ þÅðB@–‹F h–ý8ùpg¹@Tñ_)Ø‹S £8òÆ®·95Ç`+,ÂÎãÓ0æþfœŽ¹@dÀ6Ƀ~€¦e#xÛŠ$Ó{€+@á` fRj<= ²‹G¤$=é¦ÉF‰DÄ|CI<ÊDj'=IÚˆgEñ&1*^4qÌWU¬/¼ Ö =U^äáÁ?¸UX„ÆH ”_³Ý熡¢ ‘ýÈl‘ímç8ˆ”È–êMÝUï]嬛=§HS`Äg„û \É',­ºf¸Ãl&ŸÕšk+“^Ü#§9|>rÚ¨H5MW`„_=˸<“ÿJ0ZÕtó¬[­eSË;Ýྭel§š6MËU—ŠqÿöNgÑg^ÔîV±‚z°¼:2Gà6…êƒÕ{cYãÀpÏÀZÜ}YC—Ú¦6dµsCT“-[8.^øù‹^}ß}ªßÝiŽÌ ÐdQgïúwÚ2ªk„Å¿nIo‹øÙ;ë¿»ÒÔ0Ö¸1^?íjÐS9k}g]ܲƒ™d‘Ûj/U*~Ψ'Õ– ÚçFßh8Õ‘Aýïµgcià€ÑK|¶Àæ±JóÌÅbŠ^AéÎí«s–Z XŠlay_`m^gÉ¢,Xgsxüù“|ãù“çʼnñ2fÖÞƒW¯ÌI«©êÊVIS@‘°¿¢³´ÞЏÓlåÝäoo£³‚ŸJéáR·6ˆëÑ;Ó¿3·™» 8=.n.Ýè܆ëkm°çØÕ˜ÝŽpZ;Úæ¤¶£‹:’ñ­ÚH[L„Ú=-(øôRK3ÚNª´ùJKúÇš·j?xààúœ¦×;côÙÎìxµFn)V»ˆÑާ¨^cç½pz·~zw–+§êÅÝŠ»òi'êâiä¯Ì§0ÿ¢Ÿ•m°S‚"Äßý£›[|sÄ71nã&n¤DÌ,!?ÁÑMm·'Û|ž³i[r?„‡÷ß{–LÞè-ïþú]èé!Cgãd©©š»]͉¦.-5](4ø¶àžÓb€™é¿ß’þOKóOa•À¢ï-§X<& †.V  µŸ2¼ï„^`5 ¸ÇÀ–¸· auw\ù¾q„‰+ñ<`ì=Øn6œ20éëÜ\mŽ>µÊã(…îk›4ÄÑÕ¦¢'\Ôaás1'eKóÎI2œê‹• ¶mŧ‹7V¾ ¡P>-ê˜Bѹ žÜ=;áuQË úË–ô¯¶¤¹kožå,soï{¾²3•ÐS³¹qk©ë |ýªàm"Lë“O^ØN®ÜÁ¬/<Þe[4p=á«'ÜQKGÀÁ’³ú­V§HÕ |0pdžþa ,°ÅÒ17îlÂ>'CùÈ„sqôLlÁ&.åDE}–ª6cßµ¤`n““v¨cEIˆÒ[¸%½GKwø¥ßgrdm€oÁ†lÆû, pAÚ|ßæ>td¹Oçé8ÆSÑN¯as6N¤—âØÙ°l#f”*ÌL2DIàZžê‡ðÍo©P."N‰Œ‚1Yz+¶ØYç2ÊŒ¿ƒ—^{fÈKƒ<¶e\@jkDx°T¤å^]ÄNà*„€phß±™¼Œ¥#/¡ƒo¢ å*~üb)cÓŠáÀÞÂIÇŠìš6™‰×"Ï-M_`@=ôÉÐ謀V@S 2ã^6Ƹ„þJoæ*ãñ ]¹Á"?)É÷ºÀÎ*~fžM^QdˆxÏr$AAá臰§üæÛ2‘êyéOúF8-v`2ÚVu¿Z– ãA¯ÕÐàtéE3«D¿zà™." ÉɹŒ!€ÖDØþÃqƒÒɧàWË@Ø™ôR/}" ·²"t WÐþ¾´I:ÈÕâ×ÔÏËöøs=èA&ÓâD=d™5b¾âd—Yéê.#O’&kV¸wáfºÏ†1F¤"tOIƒlfâ`sý Ýõ y/ ! ª eO!†8žšTÀÒÑeûÐÐËCÑcžàF…}8 Äz4,žô«mA3!ó‡¶Á;<`¼z9<÷$Ñ)lgz¹ 5<Ȫ´3H:ÎégÊ%$haÏE.m¾§ä"2–RÖÛv‚ÂrQVý1P>Ca&Jn=ŠvÅRØ=õBŸzSÖCþT< @EÆKÑï~ƒWtÜ Á*\Bùy/ô·¡¼A ¥1ƦÆAqÈÕ<…]â*dŽpFßãå¨àÀ2b3èØ ^KÆ@WAnd¤?U@œ’H/iZBt©Ÿ ·‡C/«LÈïNa§4#¯òèf1ãÊ”WÚÚµO|«*¡¡7Àú¤œãÇeؙΨ … ·'&%@7~‰Òp:N)²ÝüȸfZA‡üzG#`<ïË ÁNßZ!ãQM¥Á›Å"r‚ “«ÈÉYÚ€o0jp ¼‚Œ© løè ÔljUfÁÁ4ÄIŠ ÒY‰fÜœµ@ªãx”-¥3Ð\„Ï‘ 9Nºå@8ÚäÂSµŽö3Dø š¬ÌI^;ôûq?³=Ì}Œ?v„?~Hd’ hËš7©QÐ`äÚþùϹXGÀW@aA$ñše¯n×e/Ê&KH é·§ËS`xŠËå7OÏQ*ÌB*^­€ÅõŠ|Ú²”†Y[<¥EdK Ì§9€phôV,SG/1Ò<àå–ÚWVY˜›Dp1Z`Yåâ¨\kÉ#,r3ZBÃD ší–ÌLѬZx#ùV±hO‚Ju “pìž*Ÿùaø_2^à™1צa]w£E¨%OwT9åY„ÕbŒj¬#¦o€(ŒwC |¾…§ÀVÔ ¼‚¤—±Ö`=hAÅZ[U`(,¥À•‰¹œØðú“m¡ "D&úΆ âZ§\Ò)µKEw#µY'7¾I cÐY"ž=nÆ‹Ó!¯*B‚ä–…À廟é¶xOâØµÍ%8º¿Ö™Š5Ç-h€ "Gë鿜Âòr-.ý™ÛÒa9óéÉ&Õ ?(¬€y]ÈÖ¼Œ £ôX¥Ì²Œ(N*¦VO/ëE¸`ÛBÈ)¾2]ˆôžœì¥Ì˜P>Qü íªM#ßI*ßèœTf·e’óx5‘ŠÅ#EŒ¹¾3Õ°n–”˜²pjŸÔ?PlèdŸ”†‚T-0J%¢HJ逎,Òk+1Í„ÿôžŠ0Å•XÓ– ¾WYóÊ1§„†Èà{[Èjúå¦-V ÕBi·|Ž8†øÞ-'ˆwe†-º…§ê·¤.Aç1IŸ üD¬]œ-êV£mØá:|¤-êÒE?¨(Ü(%DBL‹…Ê’ 6¶}Ä^ŠÄ#Ó“R˜zÁB€6/¾È¾æzW¤Š»yÚz ÒÉ7×XÁØîc”é‘L懥]€qQ½Ö”æ]Fö,ÝÒ²,×Ûdƒå­/—À +a NÒ™Üj*2E,eãº$W¸œñb¾Ôüaq¸OiXlŒðqäÑeK®_R¨8b¶ŸÆ#f$ RÎ@0ÂÌeÓ•öÀLÅ¥ MŒyÌeô”³ ³4•€£Pj02Yd£vXeáeòqÖ’ªª¥5€À")ÝbõT¾•T xæwC¿áÜ^þ‹KIµT'øGªb:„‰„ÊÇ Œö)inþ˜I¥È—¹pÚ²‘_ÅT%µ‚­ìDK;’¡À ŠaA‡ù$u`z’…£h™,¼’Z)œ¤‡Æ†|+±!TÿÅ›è¯weé܉ݦ†à_¥5û=•m§ „  ºž?àâP‹?€¢X6æNh„5„Æf>Ú£ÉÑZãŸx`-:½Îïéµ^”ÖÍ"ϳc¨]1ç>âwZÒÿ¸%ýZÒ¿Ò’þrKú×ZÒ+N™õAÆý€/á)PQ?LWÝÐ`sÜÈSLJÐÇF?ÁÀ-§©¦:„:{ûm[Û•Üb´ÅΈ"˜ÀZ–eçW³OVš}­‰feçW[y¥­OmEûEyŠ?¾–OôC< x­” ŸÏ¯Î}¨Ò¹kö”»p€¨æßÿQªÛéG÷èL¡ÜYGIMDH“Ž ÁŒ®ù„-B>’Ù°·ïî}ϼðÂCûîïð\?Qø05…y~ßÑ£Bu< l€,Æ'9ZÈóeÏîÉ]å ìì!yDa0CìêÄS¸Fn—ß\t¶|³÷lnj´V¼II‘n•KÉnlz‡fÓ£Šân­á¹Dk•£†ýO–.g1ÁLGŸmþÍà;¥3R3O½êé!s+M»±BÅ_É6ìº^ÐSýèÒ” •V¼C~Ÿ•ÿüÄçnâ„ð‘lŸ_7!NÕïUUÉ'Úa´ ¯ž†×¶ƒM•ÓfÈPÃÎ>ÍóãˆÝîù§:3 :l =#dk+{ÌEȽšpƒÑ ËÑåw ɹ¶Ú%Í€Fý $l-ëþˆ ´äûòôî tk|Œ§è ³HÀæÍ‘ø”A¸ìì^ BÙ“*,Æ&Eâíx*–èdH¼ü±2~iÞüo…ùÀ¯~¢ ­˜Èˆ÷?åéa彜èÀŸñT¬5È)ƒø¹"dÙ9…€ú…B4è8’©` Ð!ïÅÓw+ï…©p¿æ©Xí¨ßðô®1ˆ º¿U¸*g†"@§ô?;3P¿×W(f$ôʨÂLD¼ú£Â)QZšßTÄ%cLП”q`ÆJ¼ý³Z3eNÔµ‡¿¿¨UPU,Þ¾¥0Ö˜Ž€ÿÃÓ#:ÀĈ"-(¢Qäo ²Lù‹·çé?x*#O¦¤¢ DuãQè4¹þm²Jš]/¸k©ÂbÌ2mÖWWÚë ùø ÌÝ,.¬´×鲕C)q ý2ýâë ÀÑ4þ « ~kºma{]T(p"óläÿfÏ黾K³¼^ÇïɺæáùºÿŸjžÿ!«S«cYmÛj¡ "e‡›‘D&±€PoÙQ£¾º°f[W_´¾²¼Ð¶6VÏZç—^]|áôËgš'VÖ¢™E]3ŒÿÆ[R»ñM÷~¯yþ5e8³#¨™óâµr^¼Á”O¤‘Ê3Í”ôoÉûë¢ÚSʼn•Η[)N"­ $-àÈÁøàuwðÎá¯F1å ‘ªà )›•1ÊI,¦gôG€¢Á)€›2I­ SÕz³úR,€ /!‘œL"ý¸éÙþæÈÞtf*W¯)>]ŽPD±šV²nIWÛõrf¿SgC^+`†ÿ°xáh›#‹ç!žQƒ'¢Q‚ù·4dúŽæù4Ϭyþ¦B™F¹¼]Žý»Ë!×±ÇùE)¼LÌͱW=ŠSå´~[¼Ö»M }DCh Ö󞩯:…!p0…UþhH;Ac…™b÷çb·Ï\Íì–êY¹šïR_>ZH™¨=³P‹Ô´ÆÅ Ö4¿µXÌb¯™VXD‰2Á¾/= r¾œCû›r»ÐPI2ÙÔ—þÄè¶£¥ì3µÔw5µ}»ˆÃdß0Ä>qÏ1·_%4ý­Òî{ Ú­ày7*6+8k»^ÐÕë½\ r\õêxùWFD:¡ÂÎKmÇ_”jJ“CDþLÛxFlEä =M­”"û3•¹c—^/*UL¦lóz¾šNy?Z+ÐÕôç¬P:˜õJ×j]}¹œoo2»|'ñ³ðj¦ ù¾÷MÉ\Õ]lLè.ªlšâWÝglLè3NŒbuÇq®‚~²–¯Ñ¦äSµvÓö(í ±„ÊWOÖ 1Ü ófänú6ÕÓ“ÒVaŠé§Lû'œØ:nE¼;tš¸/roø·š` ƒÈ™\+¥á3¦4\6@zÓ‰7Lâ$…È [ÛªCuªk¨r†Ã Œ9BýŽ©ÛLºu¬ [FSʉ8d¦bp^})¬XÚØÊ}çûå™·M§S*¨ÅçLYþ±R¤‹5â¡y`!qˆ‡–Áa5`¤çga/8aè~È}f/VÞ¡ö¢©EGR=t€Ìþ}S†£ |“œ¨†Ç>õ»N£%'쑹XNÓ­í¾1%’­ÐýÉbGr‘¡«&XJßOKèÓ,7¥B ×s]t:–Sg¥•æ±¥±¹/4? •]g’•m˜[¬Ÿ ¦øÛ¯ûò·q:`FÒ>S[ø!-ü…Rh¿;“’Àòh+Œ›Ù^™ïÕòWø‹Ê®›U8ùé¶ü³DÓÆ³µ½ãN¥Mzúi’ÓGz­a¾ùkšMuùË«ÿáw ïLzˆ0ß±›©çó¯z(pŠƒg{²œQuûF™­ ëMµ_ ë¬ì:ßFâ/u¨n•¿°K¯³šEÍ•:b FH…ý £¦´Ú¦oœ´ééækô—¬}_X9AšåÎé†ú²žÛ߃_ÉØ°»]§Àí;dÚsE8§ó¯¿P›Fäuµ~±fÈ›û$‚¥þfêµÌbP¥ýï)íŸÖµŸ| gæ8ü@ÁáX.];înM¯ f*ÙÈöq©H–§­¸=I[/“´RÖž‰ ýUA±šÛñì…\¦oz½ÏÔüËsa>{j曆üÿ€²…/ùA-‹­Qߊ²O©Ü1&$ÍiDâmáÊMõåÉ\y¢á«b¡šš…u3û‰8t˘C'¦´p¿Úu“m¤®úò¸^q5õþödÍS]ŒûŸ¥^ž ¯˜®zç œ}˜î¡ŸÇÜCõEó#Ö];Šçßv>kùΕù‡g­‰©·O(6gµœi‚ ĬÆaÍkþâË>æ¬æV^.YÁàT^$ ,ϼðŠôg$ç¿®z_–p¡³irôeÖÜje¿mÕœïììoŽG°³šTüqÁz –mIëÊ–ããÕõÓOh•z• \3f!ëÌ;ý=˨Ü*ßR$"·OÈ^ûîÓ™¯½W?¹}[mïäæ®½’›Ã™†ª~ºàž Ä,>]pï\dã¾)dãŽZlÈg‰ÒJï/ª4£¤óðÜsæ^O´ýUõ(“Øtí¹>L5œÛ 1kõ‘š†—Þ0å¥ûU^bK9Œ¡–÷€£ŽÖLQ•­=SÔ¢nªòý4 \HmñÏQѪâ)r ögP¾Wb’œƒDdê)‰™3BçjyüTo¥¿<ÁPº¶W(=‘Aépj´èçö›§3ØFjÕQæ þÝ8Ò·‘J»ÌzìöâvÏÂQµüˆ$£KÒt%¼GDÀñ{‹m'<5ÝÝ>Ë©áÂuê†/<îÕ0ß©7çq|VÃU‚Æ{+v­Zšh±ÃyZl{°ZÔƒw¥¼!5ÿ……µ¥å…Õ¶µÞhwêu·oùALÜ>ŠEô‚ñ/†$tº£Ä[ap…Ä \to*Kk{Þ.[xj†:±P©GN¼@¢+öp* íбl¿gáã Ù²z4UôpˆÃÔš@âuü¿®ƒ´@ZnÝ%ònT0è’8Ú½zÛ—ì'ô”„O\?¨:€^…QLúþ‘HzŽ7ôÒkäPêxöÕ] ³ „Ë%b_±¡¹‚Ð1D‹ ¹=¾Oé1ùñþþ¯®¿ ºwÀ¼îùUâÀš ¯ÿÑcà˜ñ õÀȶ¸ÁWøu6"½КCâ¹Ð³-;Ú²ðŽ/ø ~ €À€¡Cè~hŸÐŠA3Âh¦óÖãº^Þ¥x5ãýû¿šþYÏ“v³Ý$6"… ½Q×ÁÑt˜ð¯öîr¶Eù †ªj[j0¢ ×&=Oƒ’Æ·ð Lá`Ê,ä<{¤¡ ÿ"ç¼îúx»°HÙ>P $ˆŠŒd &@Ýˈ%¤3Xx„Ô69!7/„nþ±@ 8!ËöšÓ îÁ¶# ) ˆÁp§Åx–f±IšAY¦±P %WÜxËr} ™†æ/Û³€/"v±MŸçFqXv]\}@Ü÷ª–*Š,õI {θP7î!u噩Ժp·íȌՆ0Òž‡ÃƒÅEÝå}:RÀË.4MœÁ0Þ% ŒA2 kpÍÕ·½Èé@ta$Ü®ø!€¿Ù–Êè›0nd.šL> }g“ø®G€¸ ÐviÊ*fí•=Ê "´0hð.raêCuàßÛƒæ"ü,ɱd¾Ôb1eÂ&N„ß2á½ê€@sÉtû~£Þ^ÍW¤êÆ!õ•:¨¤ò…ÌdŸÔ©& K}¥AéVoƒô¹A]§øÔá+½ajDÍKš‚?¼MCŒ«î¥d¡gA–¦ÈTÊp®ÊG—¾ä >ÚMšnÒÔ‹ðBFÀÈ£!Ìp‹) ~NðhHF>ÊìÈïÁ&ˆuËé^†µÌhÔc ò‘<®Fg9y@ÕâL{òD*u×s·AtÒœôk¤ ‡v0,; í]ë\Oæ 2#5ÂSO4ëÇ[‚ï©"Œ é ¡ò aj™*®¡QWECÏ-¤%ÏÚB¾¬DÔ°ÕÙMÝѬxP¨‘7 áùÖ(îW|‹ZAhu‹8±Ew.à"“ai¼ÒacBæ0è÷i. ¥EȲ< yoBz @M‡îæ´A2eÎTêý¦àNxÛøô•‘K­t¶‹ƒ‡9»KSî{Þ.ÏB‚¾?Cå…1ñ#žÃ„Ù¼RŠAJ¸¹ ˜=qµDóÔ¼b.-‹ÿQmÌR…ïDIkµ6Ã`4¤Á@÷ˆPò`QÐ]B£~S:,dˆÃ>ŒFµ]È õ™‰„QâßêÁÛKHOpß,é y™^aÆŠEô ü؇é úïtDåAhŽ5i0%T? œpÓa2F³`wŒ4wÓwh7ÑQFÙsýmtÜåxÄæ¶\ð•ÃîÖ.»eJᛩ,Æ;È~ 蔞3%Í#?§Ñ|U æ¨ZböûH¹ÕsúqD¯àªÁ aå©„`.Ðeæ½!-‚ÓŽ %4ÌèPÓ °œçØÛ4›À¢c1D€ú0¹Á39xä°˜ÜóŠÏwA5öà¦çìÔ¿0 ,~ÒÀ\Lê·£ÈJ3d3£«ðŽÉó ð:‰(]Lä;ß’Çé»A×RøˆÒš=»èR!éûH³¾74¨«ÅÉÁÝ.èEç#˜¡3.HÑÁ¦Š &l´úLÒÙ²ã0ÍAßæèsO¯3/œÜq“B³t€Q‘‚昰H¾ilâ7B'‹\‚KDÏa3‚¨ ÝFYæF:Ýê’înªë†¨z-n–øŽØô„Û.f®Å’¶·Ë¦Ž8Qf)1gæ)@ÌҙΔ=÷=ð8Ì# ç9ž|Ày Ë_†Ì’YNb°‹ûÑÈ`Ð=ÈÀxà®o¸€àRâvv¡¥Î(¦$ìTâÜ+¶v JL© ÇL´åö'÷”“é­ÃR^ •¦},&f(z4‡L%^£ê踛(B ‘;ªÏè4ÛÂ9# +ÛÔFR3M³TcÐVA3Œÿh–3ÍÓÎÓí2Ëñþâ aî …Ñ+‚+y&ž8iˆhѦý4jÕé-\i0‘©uÛsüMPŸ6Ê]f<Ødü&&OÔ¢Ø0’ –ÙÑxÎL±¡ùc=ˆPÇDL² –8èæge~vjfvFçÖÓÙ›BUÔµT¾g#iJ¿5d’ÚžÖ ÞªƒÝßF7 Õ ÷=7K)ÅCƒÔ€››y¯¶Af‚„YÅ)? ?àž!4G¦Ã$pŽ7~$½TçÌäyÁð(¸#Ñcs}T!Tw£5Dd[Q£™ÜQ椊˜ér ´®ð\ b3èÚF¶²Æ¾ÜÜPù:÷“¡™…ž5¢1U¯ÔJKÏ hõafÛZ(¨Ð«JZhc[`ZÐÌE¤%Lo‹-JЕH¸Â¨+8;òž´Øµo°ƒWýŒKþ*Úø§.“~L,øJ‹:°pW6Žåç-’îH7¤Áf¹[楚F˜lÓ§¿ìö"Ö.;æZõ&s?+š‡÷‹ÔJæ£v%{e—DZ" ÖÂPh‹Ï‹[tÞë°]oÑö•:ßÛ?+Îб%'Ô{µüa'¼¥yþç4•å>«úØh¨ }¤–[°|'ìGÇ\Þëi/7VÛzâm¹~¦Á2íÎøöN>? 1·Û¤s¢&”.zˆ!Ûèºi ”)Ô—©)uѧ5ky=Á³ÞnòÜšóuúŽÝ7V$yÛXU_c_µçK³]çÀOçã"šk¬VGgíãë«Ć)ú_‡+R²b4ëgÁXžµžY_&õµg3z{j“¶NéÚâ+tÍ '­i—‰L†6S“º$W-æ¢qã4…ÇU‰Âþ qŽ•g|ŽŽÂÚΗ֩@½h½d[ýt'Ë€ð®]*Wuâ§+Òú™/ILªPé¨ÌŤVÉÒ¾ÿ¯øo…´Ÿ‡ÿWˆÕ~>eÒEÔÙ÷¾ãä|¢ J噵ötY—›t¯DIƒGõ ŽíE£?±?üd½Ý[&§«ªýÏù¾”G#ç^ñζ_‚ܯ<¼L^}¼ªûˆ°Ø-T@AQëâiòÂóÌÆ Ûi‘¹Wf¾©3—*'íäE­6åËËÂwÇpHyhBs,e'•>V+6ÝF¹ß¥«~ËçãE-îaÏ?QÙŸßú¤1R×çíö4ßÞý©Ê½^4í5~7جן6FBœòk×A ¦Ï€ëªþLQÕ™m“všoëøÇCërw¤ØÆ6„‰]i© aÉÆ,ÝÆ+¾3×dÃhÙFIMW?›éßSãÝa;Ùf¿ôî7¹Žn 1 ß=’§VÇÙD?—AôáqD3ûææÏ¥ >GÆñ;ÇpGV]Çp‡VõýNº.x™.Ü3Þ\ù3¢dé"’ƒAƒgÆ1¨ÃÂb@µ.?¬·ÔnÖñÝ BÝ‘ƒ³?ƒäK9H¢‹µÊeµÒ'¥æ†óç38?8Žs…˜çø~©Lh3{ æŠÊ—3¨ÜŸ3Št÷:â0·QùJ‡398Ôéæ±+öPÝ®üB#‹ÜÁÉ«¾ûQ׋™îÜ›§’a¹ÎhT'$h§V`¨©ðwÜÐ ä‘W3Wä•LÛb) Ý®p 3h˜G¯_{òºÜRÛ¶Tuìîe–í2}ÇÁÍsø÷þ=™ÞP¿›,ç¸;Áî¢]p¢®;#Ÿ©¨·[×ìÜõFžÛgx¾çQ•K²Ÿ¼(¨0C!éÎe4¢"¦È8†çõ#Õ!°bMú$$ÇÉiÒnxÿ =³N‰IêÍFõÑÑj]@ˆÏþõ3³pˆXÒ„(ŒøÆúµs]O9GT”™ÜkV+.$Â=-ÇÍüDmc)/¤ž°²ü†_æ£hÚ÷äËW+…_¾Ò±Ã¶Véæu¤™×ÌúØJ]~¤7G‡„òê®CPêDcÂv_»ô]§j@`nÁ¼Z$}ÜfuØ8û‡°gõÙM¢š’Êëgs#ñuc'g¾k8óMØi–!WEcÿÑ(L¼Dddisource.d^#!.*\bg?dmd\b.e!xÚÍ]é~ãÆ‘q’‰;‡;¶ÙÎ!Ž,y<ãx³>¢IHB†$hÔááHPBD Ž$ÞGÙ¯ûm_c÷)öUvÿUÝ 4 R#{ù­b¡« ÝÕWu] M~}Kü¼,Ëwý(޼a<Qšxw_¼UþYQïUïY¾Qª7^DÃ4à'I0'Hcýì›ä½<'ËKM¦~lŸ_]'çóÕuî)Ú «ëÜW´ï®®ó¡¢}ouß+Ú÷W×ùHÑn¯®óOŠöƒ¥Kš¤~Ð~mΪ? æÅr½xã&ùêýP–/UšÌÃèDÛß][-çöÒµÕòíxùÚjùŽü¸²{¯zû“ʾy4Ñyª^ÿ´²þd²™^΂DUøYeOÕ9Pï_©ÔBzS?J½Ùħñë¨ê¾Zét‰à«ª?¯ˆ¶>¥×*læÁÉbâϽàb6’Dgóz¥ê’MVUQÙÃ$çþIÀ«±9ªÊLÁvà ’¡? FÞðÔϾYYy¹qêõ[²\S¯³Y RÙ?»tF_]e¦OçµÊTKð),wRš¾RŸƒãu/û¸68¾²mÕò'e5³5Gá8 梓eëýÒz7_©O?|Uûzsû•>7]XxšÁED£äš5ýN±M¯Uedù~V©õÚŠ!pMß·µ¾³÷ßÏ>©]Ù꧳߽õÿgUŸ­(@‚2¯[£7–’ÙTÓjÇó壪ööóô×n6Š_,'ßî ž¹~ßfOE½¹BªfþÜŸnNÂäºÃòB!RƒÚ”ÄMOhz:ÏÿÁÚáÕü4’Ï´õ·EÌ3^O‚kzVÍß¹rÜ«5”±ÂjÊ~q`5ƒ®øÍ ¿_\7à¹~Í Ul±NªüÚú;µìbÙž]¡¯¾î–Œ•76˜ÎÒËMY]-ðÒ)¿¾b+§|ìÏÒðZ¬4÷¿ÔÖÿRËþòÿeî«å0|#9üÝS“Ã[Kø?ó5V‹r¾’x1e÷úg™iüÉu•Ÿ[1¬_­ ¿»‚þÆ úà…¼?¸óÄýX»~?rozÕÌË?EÏÿðžË|s/éý÷k[w~=ˆ¶«¹b8 £@ ÿfOåtk´ÒIºéŸ{’HòÏ^n'³>Xèo~é=Ú€¡Ú~wûîö`sûáÚ£íÁÆöúû›ÿüèN6¸S[liXmûáiëÑ65üÍ£ZÕbªTÄVœžÂ‘Ó¥˜£2ÄÒAV¹Õ ’;dJ5³¶j©n÷¬ØÉr¤v­£ÿ¤#Lô÷ôŠ/gA¯jöJE&„/ÃêQ“†o*±Ïé§÷µJ—ü3yFÍñ¢ög¬ñm؃á»Ïæác,W6ƒ%SžÍæÐ¿C¨àly ‡R>Èd´¨Àе?É"Àƒ,¹Œ†ðT¢ðKT÷¡Iý!6ðìkwjkï®)ÿö:;èYžÆÀ.oÜ^œoÐv£b8Â4dU k„à៵G\aPËd= 6Áp×(YAUo¯­QÝé=`fI%˜$wÞ£WD©m?ZmCD:%˜¯ñ|óÝ|q…¯Žˆž«Ô¬¤Ì¶hþ[£ç+µÔÎÓbB®"*kÊàú;•ú?_Æ5•k¼5zá–4 ÈK¦Ð"Œ Bh:ß­4ýeydB]ÈÁhSŽï{ߨÕ÷¿Q«ÛߨÕ¾Q«¿Q«~£V«TÞó%ó_·ž’:ÈØD,W "*ýVtA~ÔžJGíõUGMeW¾æY[µm/”¶í¿ŸÚ¶! üQ⃠„( 1Ñ,Aî•<ïD@Ë·ãIOä¶l?ßÞºóIm TÿãY Çkä­úÉš¿öÉm²üëOŽNn¾™ï,Ù¦ÕÙ™eð½Òü‡fFaŠìÃÚڟמôóîÚqpF›ñx“&~»ü6|à‡¼L’ ‹‚óì³ÚZ­Âb-ž¯‘dz¶±–`ÇðÇó`fWâ¨QJÊöÇOIVâÇÁ|޽_*#¥•ûW–’ ²*“«Ó`¹¸v]ùÎmí: RZ!Dtj™ÿUmñöuUM´-“§ï—äé?¯¸eÛ¼õì\lˆ-¨m ǃãÚíoe'þ——ßd'Áz™Œ9;¥¶uãÊÙßþøq޲ã8ž~”_b˜tiíA#‚˜'±Ÿf“8:ÉDX”=œ#.Á‡‡Èƒæy¾1تÝyhl~ñˆ­±þ¿â¿êë«m×6þÈ’ÁxÙÛÎHÝÆãÁúÖm˜>ùÜÙ–šJ8•+,Ñ×Ó\ÏýŸm¹ªò}õZq\%ƒ·K2ø5.¤~Pª¡ ì o=xÿh³Tó—óÀ§*Êð°šqxEë|Yö’~Sô›Ÿƒåò¯ãíU+ïq­Š[`=êqëã¢#‘Æê4åB+žYq†ǰèᤢ,ùÐ…Óé"õIÞ«–´t¶²y0ÖF~ͽI1T%.ÿB‘º<‹ŸVXø)²^Ç v< w‹é*ǤÙ2ÂÑbš -—-"H™6Ðå"«uðoE‹B,èÁÊ`ÁO¡„!å±à§TÇa*´É9?CÒPCáœCR;ÙˆßA•M²P<ÏP22q(ˆCI‰À¯3·´õš_fC?ž ™˜\fJK>)[‘PbÝ,Xσt1‡ŘÏÐÜjF ¬I0ö“k“Ÿ’ÈÁ È’óÆŽ32$Ú~¼bz¿oýJ?š¿Æî­ìPŽ8=á—Y¿^°>‰q˜ä„ä\4Ư­` ÛŽUâ©i‚b°äùÃÓuoà¬b¶oÀÌ¿|Y~Pð'>˜T&·‹‚5‰ûóJ-£«ô,Æ3:1”ÇBAO?™fÓð4¥•±i“àGë²±üÿE]ýù'SÿsKl~ª)·Iè'l"G%Íóóܸþª1…ÓŠæ]5&Qq©Œ+´=·˜pªñßÚ'6¶kŸ(ž*6æKQi´Uîݪ¨†Õv¿¼ÎªJ—KOÁ¾¬+œË±_>yoTmàÄNÄDzI¥Eø´àæy;VËô<Š–Õ@ÓpàZíp\£Ý-&“ÚUŵg½G}üðÅ3Îa-áÂÒNW8K¹œè±Ñ:gãŽï®_d‡5J'û›ccsçѺ§!”¼ø»wß[»{H‹»wïzø£Œ˜qH–œ›Þ|ˆÃ`Kf¯7i[¤¯Ù[»»E¼ÈxfŒFx:‹cñôæ(Û‹ žÍð±x Z<OÆŒˆ0›ÀØžÎéD<=É'c}öÞðSñdÌüâïDÓÙÒ'†j$Ix‰¡æ0†›ÃnA‹úpÛóÄà –§ .è}Á¨sØŠFÁ…*µ^ *ó—X~1µÎj5¹´Åú`PÞüKËÅp'G%!x¯Ð«”Ê!ËOV„¢\ÀÅÒÞàbLÈ‚=½TíI›ªZ›¸‹F4¯/åÀnüæ8*ÛïŸi>…L)Ð×Tóè;.ø‰jéÿUÁnÌæ\cÄ8ˆÒ),ÄñB÷´_Y>WªUö2ŠCµð„ÿï ·áq$á‰0BÒ ¢<òÒLþh4G9”åH•Ác<ÇáÅ,Ey<9FH¿: ©yy² r_ŠñÄØñ„GA•#äÎèµ™ñ3ñL‚“äK*ÏÁÙ£1ŽTµ!ÝÒ+Ñ_"Ë4œR±Hr¬zSÀKvG~Î+“Ñ—‰øÖ|k¨-ã¿k›-2>„4T‰û Z©@6¸¨â•:1®‚4t~.gX&T¯¨6ÃW—ÍPV.ÍoPˆ Dà¼Eé‰òþ=Q~ô¡'Dä²ä Uc¡ª ôà¢%Š@7)žË9í冋rËE¹)ac­Ã±ÞßXïn\êm¬w6.õ5.u5Özšñâ/rÀÔ¿ÐÅUhÉÑ-‹]:BÕÒžh?Ë>œ¹/ñïÝZþ³ú[¿õ+õnU›ò‡#ù÷ÏR_æ-W}fðd5º¢ßÞºf2¥ÿC-ÌÌÓB‰±–Ë$"c¡R!2ÃÊ_u<ªäC‘°|ˆ»³­Gµ¯“ѸnÅóXlÙC—Ñlž>þÝ;Û28À÷ FïÞWÙ…æáÿøBÇ?ü*ëëø¾Ê~‹á~R[+Ñ ¯F¦†ÿ¤4àü3þÁVõ› Î'áh+œP¼=ÙZDgQ|m.áR™öóË$êÉ<ªdÄõšñýÏj¡ùQ‰uþqéœ>ZÌ;\ç¾²lÕÇwÏþ#†ûÒÒ•øËÓY«——²þÝÓéüÇ7>Ý?ûa~º ™$v‚9üÅ̘Oq#Ӧnjt}$«æYÝG~™ÊxêDáxLàB+¬h†Ü’€íEZ ÂÓp0Ú¡Œ˜BœvršÕ¿ g²9 Ù¸Á5Ș–85ðתÄLcgØeã›5èOËÆ!yy:ì ÍUB#½È§8b ªqRµ¢q h‘¤Ô‹(¹3…|¾9¢F0ɵC”eÿwñ_«I†!½ŠÏÂ@yCBœî/àå½å"ÇØôSŸ–K¼S˜ö²x¡)oKÀÉÜŸªQ4ƒÇØ® O ¹ ê}<ìÎ9Oà‚bହ˜N/¹®ÜW&ˆ’bbÒ~$ø XòH7&ñÉrªFÁÝ ‚3wN,ñßq»zˆ¬æNH"¼“QÆÒD55‚wø³@wçñb–‹¨- ]©Uœ¡OŒ'˜¹ê3Žñ;ŸújmvçA0 !áâÅIL¹Y@ñ¹<={(|vÉ€8+{8g>Ž!hi:kLøÆ“A‡D‡÷C„Y„ï¢Ø`N‰çuºôÇâú á"ÈÏ‚H¼uçá qafuˆh”%Öê c•ñÌĦH+HóJß#ö-ÿ’òÍ-ÜIŠÕ`(Ñ)!gÐb ZñIÖö¥ W ò¿r¥Ú£{øý0ƒjŠç—âÄ XîD{Ê», Eãt*Ÿ_„ÓȬÀÏT"Цø ëð t.z å½#'.Ö™1ÊPˆ8ú9"j3,öJañô8VHËC!¬DÅð%ÒƒZOèºF⮟œe8µpáÅù%ªRØÇ‰ÐuX!¹.b­ä†téJ Iûn85c>³ô¤ ÊÁ%À˜n©œ‘N +¡€KQŽЧ]@ùN“y ½+õwË›ÀTË K¥ÈðH,àçô]}.=?!…«D}rGbäzˆ1ç#'æÅL.•ÁEÁ&žLxK§Ej…†ÓWŒ3¤ÖÄñ/äèäBXsЬœ`êÏNÉX”›3"'CX'¤Ê‡À§XWVL¨j°œXÒ`‚*á(Žå‘`P 5’ò,ka냈¦Â¨“WSg, ã"¶kÌç¾:K$‚rû”v‡3Ù»L".¦3Þo9~*TarØ„²&R¼¸zWÀ­K wéΔ5RæÂcä¬Ïhh°¯ÁÇ<Ôà‘<Öà >ÕàPƒÿªÁg<Ñà©ëcžiðß4x®ÃØ Mt8‰‡!«ªj­TƒüXƒÏ X[;öm ´©òB° ˜tÉžc;êæ0§Xù¥|Nêj`,œ…œàðg •©8â?ÇÝÅl¢ñsÅe`Aж^Ûymãµ}×øh´M×ö\Ûrmǵ ×ö[[m·µÍÖöZ›¿¶ìÚ„µíÓvOlÞHž*å‘ê÷¬`>ÇÑíÔ¹ìG¹‹ÙB>•(‡HÂqW ŸXiΕåîÏ쟎E'dûáœ>€“fú`¥¢Ç­¤Æ¤‘8œN”›øE8“¡uʲI­®PÙ¨‘1TÀ>nŽèÛ"ðÈe)T!bp€ö_‚äìrŠl: Å| ã×2kËÒHù?b°%ÿ‰†›íÕk­µô_® ¿½‚þÎMýÿy¾÷Ä~›êŒÏ`ñÄ(1Y˜tBQ‹ÿ­YAÀù»:‰>l 'R¥i8"»Æ$N‚Q™V`2x2éÏO®PwàchÄ8z,†B #…$ÔyAŸEèõçóÅ ^”²uÅ+•("üüŠ.4„b :†Ë¤Ê5 ‚#¹•ÅËÖ`‘BÐÍÕ•¦ð5º„á¯\¡‘ž(ˆlZ5\¸Å Z S'vÃÓ+üíY•±ÞŸ4|‘ÚcáÄîÄOǘ­F>fŠ! ®¯°TgWˆB}ÿ%ñÀµ±’6Ñ1rKxpQBÙã.(¤Â4Œ¿€k…lj¬1$¼JÕp¤™c%uXÅËÒâpnGÃùã&±/.Þ]FÃ#õ®aì8‰vÎßõ£ãøBGÙh„t\ ûâ"’ v˜LýÒÂèþ= %¥] PøÛ8 †gÉbZ"VSŸŽø¨DEðãµ[z5]U"DÓErÞÎÃh¤/™Ðkšf÷zÍ^ü£8×)÷’‚=+®wTrK‹¸ÙíµDÐcAO"C1@dǧO³/ Ù%Kyô$ôÙDfq²#³Š¼€Õ ‹Üß·Tx©€V̶ղ¥A¶èxðgž–stS¥PAbKºþEÌOû,šh6]wJæŸÒ%<éýqÂ&[– ÂBç0Ï9Êu8ôFIòNòP¸ ÂK¸ùfÿLÑ7ó£· kYodøÝiÙ†›†Ùâ§ãÐ÷Mvß•˜g´ZöÙDdb*RÓìX9ÅôöL£iö‡–×3÷-Dz;žÕÙ±{mÃÌ/ë ³B¤"oß4º®Ùó×pûÐæŸì:×÷>ÈŒŽ%žÝnÝè5 ×È”EÉŒ4ž†Cò[Û¬n¹m£+‹†Ý3e?y ´–ªî¨Ð–]Ïê=ûÀ‘M¼=£Ól™â»1}jÈ)ã÷ˬ¦"¨ÇY]ü¹D/Hè3Ò:®œs–5Àâį̈yµ,ÇÍu—Vi¸ãöú ¦xž ÂA§™5öŒžè•ÁžÑÙ5rLW•ëžI6VÛ\º&‹EÏîwšjõ('jó€X˜‡LÍ—U-ž¤”DEÐìúŸ/Ƶn± E±£$ö‚T T½ÀªfDP!$ùP$û–êŒl0è–±ë( N)ö…$ÈÎÁ¨g™ªV×:4[ûY2לf÷vsÚÕm¥ƒè6öäNJL ”lm ÔíMWbM?r P£³ÅdHBbêȇ®Wï».ÉeBœIÌ·£ö¸Ñ”×fô8œÇûs´zä9€A=0€$ÀÝÉ!Ár3 ôÈè€ÿÎV¹ Èeß$43öu­Î®GkëaŒl§íÀt¸¬°yè’À{—˜P´j2àÚv ~§ÀíFß¶P-Í×±v;Ø‚ÆÇªF8döØŽ˜¼ÂDQ–DÞÝ&â>VÜl2Ø‹ã4w³—ˆ†èBv2B@Ý@V‡²;â‚–.LÕÅp3HýpB´¤$èÜ å5!`øž3td» ü×ÅÐ~ r¼Û ´u’íš³g5<:rX©l*‡$4§„ˆ¸a:¥«lànßjfÂ!v:ʽ¦·g¹äWñÒ%ãJ¥0ulº4Û3[Â##àÀnþžµ»Gî\ž@¶ç|Ñ5`ûÅúÈ|޼/Žý†X;>Œ+¡jÞ‰ºNIq5ŒˆTF¨é"âØBÁ×´%OV§ÛÏ÷&e5Ù]·‚ Ø™ø'òº˜/ ´(&ïe`b±À<¥–Ñ1<:Ç€ŽLX £c6M>dª)ƒ:òH±eÔ‡m:r­–~ìZ6)õB×¶è®Ni›í:$ñIoîãÍ®0û4; ¸,  l<ú-H†ÁðàZô,(èÅÖ¾× ç®Cœ6±ý€éð*X ,>(¡ šöAGäþ´CƒC†‹ôæï½†{ˆÒ*¹õmÓpú¥èµ{GRg Ä«ŽÕ(ùl°N}óÐC3lŒ›«”*™ÇFD°BT•+S©NY­½ uÔµxȹñ@'0€_˜M%¯ ´CÑ5 h6´atÀ²‘ê#¬Ó¨«Œ0©ÀÌ^¯@pâ ÄríÜõ-¡÷…Kò ¨ S“#}ǤøAÇY•3T™(,~ëö¡t¸埵¡¤,´#íéšsÁ/D·ÁÙÙ°ƒè•Œð;älpI¨IǬ`Єv¿Áî˜*,H&F,pƒÙé´)¨é´=:–äJ >¦‚û]’R€XfŽ­ÕNuœÜb‹~útâ((´w¤B´wäÐl Ú~šu 1JØAf;ð[•"zeßµ>(¤´„¾s2„¢*ÚµÈÅjföxœi~- íÔQQ©æaéØðïi¹¥K Ðåè½tvÈmÃ1ï“[á!}‚`´Djš8íVQ•BP½žÕÁéDw¥¢p>=Šx3vóDŸšÖdgF<…­à¡([¢p2åBgä*/à{âÒ6b#¢Ú¶÷ ´îYjPEPtô^½_F?,£¿ÏQ! b–ÐD¼^ya³Ûæ¬ Ëõ¢wÒ™³õïC–`ç(u¤|=¨¨®ÜrI)m/¼\gÏ4]©É*¸×ÿà*éÞUÒý‚Ô…¡-c%&‚À,\æC-޽o5µ©8{òuû†Û—ƒE¥~ɤ °‡ ÷î)|©„°‹…P#‡' ñåÈç}FAV™Ý*IZ•ã OÅhש £Êâ%D¨E>kÇá]’©µ€ñRóIÒ… ÖÍC uê;as¡ðòl) C†_ÂqdéÑÊHdaŸXkòrÁƒ¦öN×l s Ÿ‹¸1ëíÖ?ï÷E)S‚ˆcYÊd)·ï$§ED0“áÐÙ-¡2‘¦Áݽ{¤›úœ¦Ïœ†[TÚ;jEñ®…t%9Π`ˆl0Ôr#/Œá^ÁÍ‚"ÇQŠˆÊŽ©t¡r…£î”©8ê}S’NjK»£P¹"82Þr è쑆CbÐVÉ=¤dØq@{£¸}ákÁ¯j<8‹ë"xEM÷¨ó°#5NxH&'q%ˆÎ‘žâô¿$vìõÖÅÝA.¤NxBÿ‚‡ó×Ö_óÏl<·”¾åpfÁ0ô'ylãBñx& "(óD^M £ò7B;/{£²Ê‚Ò%áïI–ÎJ–ÎJ–ΖØSÇέCåŃ[—Ñ®[—ÚÈ­Sà)O;r6l¨H‰H„j·Qr{²k)K)pÀ”¬™ø4ѧ«BåŒÿ†ý ¸y%uí]HË‹ÔoÇã˜ËnILš8˜›†"qœ jc 4 †aD°G¢BA†E5~–D ”~m¨·p ‰›-Ô .4ž´?ÖnUkX[­$%k ·0â€Õ4ÅÂñQî€ë––Ö%ë=´oJx^¯\à}ª‡šhщ[ŽH€ÂAA²PžWF(n¡„uá¥rž—ö¸I_†rf>î¶ùK°~S\Áõ[rQï]Œ¢ß¡´²ƒ{„B}÷;Ëb?Z6á‰<á*¶+à{|_Ý•óqƒ¦£,ܾÁš$C¯ÊÏPb²ïxœFÉõ™¼L—7 ü?Ì(‚÷û÷ÄVäêK¸*ê Û2ü@DÞÊŽp,"÷%@Îüp¶Pâ¶#!¹íâŽQƸk´`sÀÈ!xï²cˆù“‰¸_9ääŸúN‹&vóϧäÿÌ/eß,þm}ûã·<ôojƒ­‡ƒóÁVéßwúѲ®eGÿ Eû]Diffdiffpatch source.diffº(?x)^ (===\ modified\ file |==== \s* // .+ \s - \s .+ \s+ ==== |Index:[ ] |---\ [^%] |\*\*\*.*\d{4}\s*$ |\d+(,\d+)* (a|d|c) \d+(,\d+)* $ |diff\ --git[ ] )QxÚ¥Uán›0I”HªIÛ´MÝTQ-“lhS»MšÖ¥÷¨•fµ &Sµ }÷b0ØHDâ9Çö}w÷Ý7•k&äÍMˆ=5×¼¾MŠYu­ 9RU 9u/MÑ×F[wÔ²óBÈ$JcÛñ}õº©ŽïzÔa…_©oO…¼À1Öß¾?Á \®üäÒZŸ?A¸pè²B|]ñƒ²¼B1bQ\"k-ë•ü,ä*¥.K#µ=ìJŠmE’¬WŽ9ž ¾ä?Ð(ó2ÊÕµ·ªkÊŽýmÅ! ”ì}¨#¾º‚NbÛ\2ÿ 8"¬1ßõ`¦”ø{Ú¤'ä³í!— oÜRßâNoÐmÙ~Ju›‹²ÚÍ#;p~²-gfîp-]ÒHŽˆÍ2¢FÑó ã"ú¾ã¦Tw¥©úƒc—(jž±Ÿ]ÓñÐÛÆfÀJ   ×Ÿ1V=tLèÝ=¦àØ!¡·‹Œál™¾Ù†½ŠÊL͉§B¯+Œ¾³Ñ-1õ ,3&Ì>±ýÓþd¤f»&«2æ;íqD¡1Niz¯3½ANô1©Ãö,Tr —…LMÙ0*å½ÌåùAÿÄ0ïñ¬²÷X;Ø{+ÚæþÏ«ÕúË †A"pÍg6ÕÚæ1jã4“u!»%TÞ3cÈ›ª­aÏzcšññŽwbºŽ¥;®kš®zÄÅ3díȹwí¾©C@ ¾­Ç†Ó£3$çPìîJv)*–×¥¨Eåj”·Òî*1üb»‹¬*°¡~‡:A7€-b13+äÜZLh H®£Æ³ö“M¯2u}D;]Ý…¾•Ã×i’¯ˆÉ †× ™Íí6lœbVóŠ/‘Å_ÄÊS©ÁÒrÙÐóÙ]ÍîÙy t0Dï²e•¹|oÇeáF0ùó¬ÊŠ™7—”[}áÕbØqk“&”ãçž©ýÔÔþcXö——ñ;ܼ³‚æ-IAkÙ‡Ž—£_IL¡C‹Ú÷¡ ôkuiþ’ f½•ÎéŸêÌ££0KbÊÌFeœ ²RrÏ’’‡ ƒ ~oG  h»r&Ž–ð3Yº2Åqy”¼@ë´Á…hA¶!&‹`”}2ª#•Í/Tè¾mùMÙ×k$Ò€Yw:yŽQZ°J£… ¼.°lTÀ[•ô¸7€Ûf`¿¦o Ã.³ù÷: ¾.@ ­ì„G_hXUnìnmJd}ßÊiÏHRzÆ»åG0B…•ÆØSÕž¨öB¦ij»æ °ƒ,•¬K2¾Ï Ù_Q¹)@̺Í7ó›ËçÒ1gejú+™ØsVPY• ¯Áu;DKÿ‡T¢¿ŠýÝVô¨4ÊN-°øŒdá'4¾?wÜžHÚ~§®m?üN;…ÏxR'ütìXÑNâ…OßîØpF§m‡D3qj8ÌVl×Ç]àÈ®íö€×³là÷žÛí€p¤ú.€ƒ_¯=&Ï0ŒcµšŒ/ù¶P¡ƒ@§«n5Ó"$3]8XåÇ·Èg ™œ4¸=˜¾%ˆh—å:[&œý€²–±$„ãŽ}rð±´Ìˆ…âMàûU!ß'ÎñËS®ŠÒrÒ7V*CÊOpd"ñóëŽú1ÏŒÊÎz:*æÄÒ…&/Çœ¶Éò3<`çªàÃŒÅ`ª>Ãí‰à飩§™Ûãx„™OzqÓŽt=ËÓ§¥xÅh"£=eŸ;‘¡^MŽñ’Ùoˆó$ÒIñ0ɲü8k?{6'.,*ša¡>[‡ûùl–0 %)·…”‡œÐ öOsÜÖ§£×xTc㱟o<æ2ñÇüΟá!ã:ƒtÒN“°ZÚ‘mÆË·ÃާüŠ·/®QÍA[俣ÐrL1ÀxG"Å ‚å²x¼‘8>÷%/èA»Lø14($–ugx1³$Ðx¥Æ‹™Çv-Ap|Í àz¶Þë:ýp—Ì͆Å;Ù¢ÕiåΡ­}e›‰”¸Üʵ{ÕJCÚðe°¡$å’ý…ƒ ª¿•µ Ó´½Ì7mÊKãAØØ©ÂUŠÝ]žè~‰ˆÐà=ÙÇ£~زPl ¼øLi9‡À…rGì0L†^¦ àl7|hù‹T( `“CF€ü½ËÂa^´F¡xpZG œÐ9¦Gäœ؉¡œa ÅìÁ)³‡•½ðë:ß8¾.ß¿b´‚ö†EKZðWUÙ«;•E¾3,ž Î"„Ör¢FÏòžýtÏX6´ýJ#L©àÈá]!p*Êö¶ 8Ú"²?K™ÍNtE#‹be0' sF{Ú¼ÔÀ¦=‹æ¼kåùÊÞŠ¶ ×Yk?Ô®½ƒbD[Ô‚K.*P®ƒ«) ®n-WW·V¸õÜš2¸õÀmÄàÖ•Ámn3·¡ n³pbp›¸ÏòÀõÚ}Ó-ÛÃÛeÆ=œ 8äuVW ºÐ|³c!4 úÓîD‡ö(¯®†œ3,³¹¯€/*zuu‚øÐœòj-Á§µšÚuŒµ"0ÖÆvSû\c½Œk£ÕÔ¾PǸVÆu„ÑnjOÕ1®¡Ë¡ÿ0ŽRlËyØŽìæäõópñð°©}©ÎÃÍ"0>@šÚÔ1>(ãC„Ñij_©c|XÆÚ Âøß¦öµ2ÆÚJ‘Ñ~hjTÇX„©aã6µ?©c,ÂÇÔ°é6µ?«c,ÂÇÔ°ñšÚ_Ô1ácjØÇôšÚ_Õ1®qa7Ž[[½A‹{Øš:^†—0e[ÇuŒë°5ªu–Õ{|9s Z´€6—¥«YǪ•3 ÏTß@Ä2Öþ}ØõKj³/(B6-U*r¨Íå4¥„þ¹÷K»cÏ¿ûæÉ÷ó­Ʋçì³mbN¨»fÛ>ê¹¶ÆÓï(8 ò”ÙPI2g3‰]5iþø& ÚVʹ±”r~,¥\K)ÇRJ*z7 уÕ(ÇkÙ{¿XC›ïfÛA˜Jã¦ÒøšË=ì—èè$ˆô¦‡—Ù;Žc£‘)µ÷ìnfÃ(pÊÛÈ^ ólqhÃ/´ô~ÛæìÁñvi-d—x¹³6C ß÷!µ‘þB›8[Å„ ¨Ôå/q®CÆ\À|J~¶·%[˜l©játŸ©m…«Ø=/„ŽDÚGWØÃd<'[Qع˜Ý^¶Vÿg%£ƒW¹2åì+ä^•2˜à`V°MŸâ½€ýe|+ß ÓãéÎ@má•Ú#£"Æg¬"ŠÐ&פähGIÚ ¡ËªFº.£úö¶ …Û2Tw\ ú––,t6£Ü؉ºP Å ?åð7Ýwqzþ¡¦i!ªð„Hê㙉‰Íl®ØŒS^D<<7õ |Ò+Rm¼†LT·ZËËŒWg/edÓ‚ô‡‚tM¾!H"H¿/Hÿ\¾)H_¤‹Žê•éÛ‚ô{‚ôÇ‚ô¦ ý‹ ÓpžL@ `´œNzÎÿš@®èKSx õUÝy\zx{IZþ Aùì'¼(øxcŸÑJ.I+¹-¨„s+ ¯žßQõ|…ë)C¿€ÑŠ“‡ÞDžYt×Bz=‰(®”9Z.r *GËYäÇôØ9Žéq&¼Z0ÿ’ æ^^Ÿ_ ú<-¿ïŸæ—Ï\_Â+ÿ"U>ŽÊ[‘Ok¸)¨Ajäõž ŽèÞü:†®áÕqi*þPôXˆß˰¡øNþCiðè–Tƒ< –À á8ïa«ò¹÷³QÜ6ÅÍ$@‰Ïy§Îr OCêlºÜ™‘¶Êx@ÅNhð1Õ•7y=ŸL/2êÎïê´üzFÄž+ÒZˆOæk»Ý¿PÍgÕHǘEwµÈÜà b£¼é:mbó'$ö²&$¨ƒnRN㓬Þ^}"1H½Ê¥¨ŽÊ¥Ñç›iöýœ-'œÕO)6^—jôÇ}•K}‰S¢B7¥! …>Òš¨· j"cpø«ß>Ð:XŽt²Àé×îƒ^D!€áHBiðüȆ11Ž->X™ÑæÞÆ,ê·¤E½Áõ¶hð¦Þ~¢oª­ MPk=„+ DSç&fùïåûdÈ\òÇ%3St|¬¼K㜔)–™íxÌ—oTÝÔ•8yˆËH$o…@lÞ˜ÍÀÀ{MÌÀà­¨Dd¨;ËFÃh4¸k1ˆþS²ç‰'’·QáÓgøn’]¥QùÌý'ÜUwrò Á ÒW黂ô%AúAú² ]¤K‡ŠOyZ%‡ÚòöŸŽþªö?óúÉ1h?onx\Ž7º½I†€Yù£ÛS²’¨v£VÖíÄ<w¤qp'ŸâÑÑÛÉ'!O”ÙB>¦I¨Ù¬Þ¥¦Ñ Vxl9oÙSH »…Y¸#ç¶ÈÕen_b¸ÊpÄè{ÖÍa W•;3¸Œ»¨ô«1I$NsÒÆbhwÞî¹x7²”ɺ+EƲ± à·¦ Kàþ¸vàï-ø¿·ÁØÖÀ6ØÝ»`N´¾Ž9þÛ™Ú”Æï8ãâY¦ô@ ~áOëEÏáO þôüð?‚ð/¯×áO+pá,çN»t‰Ù–;"ÉZqÚåç¬ëé]¥R½6/ÝkHÊt ö£=œks5æ _G³7Uˆ/$´úÿ܇¦T HTML (Erlang)yawstext.html.erlang.yawsÈxÚ­‘1‚0…[D]ŒÆÉ‘½Gcü+¤B£$P =¢þ{îšRa0ñ–/Íëë½»†¬«2’ºÔq!3ïW¬_3dÜê¤räܪd$ÈéZ'žFOm‘¦¬«D UåR_…*.*MU*nPä̱C!O»íl¯qo:GÈ{­¨%d¥F%-mÃ.@@¾&î}G6\ÜéAl?Ë ê í4ùK>Œ{q¼¸³Qÿƒ~ë÷µØ)-öß{ËÝ{³Öx> ß¹(G•Gogo source.go-[*]-( Mode:)? Go -[*]- identifier\b[[:alpha:]_][[:alnum:]_]*\b type_chars[[:alnum:]\s,._*&<>\[\]-]ÁxÚÝ\ëvÛ6–¬\oš¸¹4i›6ô-&e‹N7M]ÛJÚmw{öÒm÷t+*.EÁ)R%©Ä®áרÛZ€$H@JV²MyŽE ƒ™ƒ¨/+ñõnr_6]Ï=è8žutðp¡’¿®æˆ¬¾ég4Õä¾§ñà†AF7'§{DÊkÉýnŽ}¶ç Ç AÆ÷B9ú”ÿÅä~;G8r­Q7:^÷$c~)¹¿Ï'¶LÇ¡ºx¹ u*È;e¨·õ•äþ1Ÿzhúæ hxaPc3?A¥T®?%÷{üJ>G¾ÛO†Ô ¹ž«c†žOÛÀ»R²T‚kÉýVžÌµCÛtì߀O±¼^L›ò](¦Mõý^1ícB{£˜v›ÐÞ,¦ý”•SBûd1ç9Ú D¶Ï8âûE”©¾îQ¦ÚºËØ ôm·G5ý”,m÷C.6a‹£x}ĸèÁÁÀ´ÝÆx/§O‘Ø~¸À8©lZB òôf¬pó'o4ˆ¤¤÷§é˜mEΑ’( ðDK.2`ÐÙNhgü—³Ì4ºàÐ9ig–$ÄøLž­0ü ޒ竌ün’ŒGÐÐ Lß9!„kŒ›±LÊUfxsØKˆ4 ò¸H¨êŒA1ÐFÈÖ'á" !Þ`¬%Žn פj0~ÊÃJB«3x>fQ›Œiö¯c:äéCÆ®ì$1æBc¡ÙbL✼òünúü13aüÂõJVüŒÑ«7¾zY·Ÿ2ƒ4tÈfŸ3èË// ßaœ)@p怒‚ÁÌÕ¼Š]Žb¼l€À2‡ Û Ý}Aì„õÕ}ÏéfV¾ÏRÂäq“­¢=c@#zØèùÞhHHž'÷/“{•1ªM=BB½çU("&FùÇ8«2X7ĺ™X:‚ÃÈÎÑט#p»˜ëáy¥]F ;¹þ뿎¼tõxe¢‘úkUÆÚ’%üe¢í1¬ò˜ÍUW•–‰„ÎF}³Êø‘@*š‰ž>ÉsÇvÞõFdÖc}™¬F*yÞ 9ðMë„A)+hW™)Id„©LÛd–Ùr)™´’–s,#ÛDN_C®+I\¨6 ¿™ûÛ=^ëѤ®£¢¾×M:!ÉPÌÉêÍ||ˆ”·Å=Š¥­Qh†K47m–1<ýûÙA;¾£¢êF§ÊL`/Mß6‘CÒc˜¶E©E•ªeµŒZ¢ ³§}îÊ•‰•òû_!¾‘Ϊ†¦©FP×RÊ9F d4>âº\€…f¬÷Mѧ9ÁäÁz¹hõŠ~¦•¶üè"­ÚÜCŠãª—h£Â­¼¡!§u«L¯Éý.GqÀB£P¢…FEà«ÏÚá™NÅý¥Õs¾EÔ! Yeõ‹(Rárî`¼"Ì,§&O:AÜÀo¥Kjÿ,Y-è/‘ú~®Od±7-›†Qúûèdt)ÉýrCUaþ1†‰TÙÙ#•Hj=É'ê$M—éŒ%#r?Ê£Œ¬©´•­„¹€8õŠ7Ïü´Ê´-å“.¬D@wG þ¼ŒÐeºÏtÌ}¦I[©üœì ‚/b+ªkMT 6&Cפ¶†™4÷Vàü%³»ÚŒìî¦È„2ËcY3&:ƒc©*WoЛJ‰ÊÚ÷³»—…Ÿtù}F˜«´‘%«ÚÆ.Mˆ"™ž•‰.,(ß®ð§Ø|b7Îa à#Wiv‰Ý}ÈlÂ÷Wdß|U&ýËìåe›enÇtø;\áO–Ô+à>‹dï³ ÿª2žK×ùT ’þ ¼‘o&H_Þ‚O¶µ&Ñ%ÃÐKÏ UBÓQOB=ÏÑ ð}χ±Ç@äˆ6DÐ’üX}² m=Õ´,-{=u^Ï7{ …ÍL1[™`_Ål~@4ðÜzôí[7=àGßÓGµ!³¡×£TJ[q;Ó€9"‡…h ZޤšE÷á ì%¡=0{Ð.˜Gºàš®mÁ!0þt\èÓA–‡vh)e‘Äe0F¹¢4;—œ±*.gQ72±“£ŸÃ Ú"$&Ak¹Ð÷œ|d/UÝ€;Úd¸BÍŽmG>(5 ŽmU6¶é²ñbÓ¨+{8/®×›8ŒÚSÐ~äŠá6‹ö5…I‚é™!ô¬†c¨šéºzHíLOädòmP‘"rÁÛi%Ó®í¾D˘®n;è™Ö´yÒHZh$“T&ìÝTm›y­¡?ZiËŒÒÆwd}HôxO¦Çˆ!oñ¶¹9;-Ö*%PœEþ5A¹:¯eAùc ¯«‚:¢ˆöA¹(ú^”?”‹"ãmAùSAy]P¾Ä4ZUFíEñX!¶\¨pRKÎNÌÖ¤¨•‹eL.W{eL&zÏí÷©Æiq|%Ú€›c\a¢íø‰&lQNìRi¬¥½–GÑbY-^êOsÊvºkÌÍ`s[ ®\B%¼´çGr!¸Ð4ß‘ Dnæ½–7?•Ùw®Ó§ÝãH¿ìˆgcYºw[™aC9ô¸B½F€0ý<_)˜;rˆ*6¨h!½ÞBÛ-Z[cY¤þ‘öI¶%ü'‘LÏyöº1] : Ýçæ¢I¤¤ Úeʯ*øiZ¹._<ã¨k¢Ô ÄPx‡ Š·±¤#Q¤Õ¤G«˜³cÙ;:C|ZlÐZ)ã)>Ì”¼œÉ¼‘KW¹äÍü´‚¾çe²> Ú”.(¿O3^KªâÕ°œ';-H$”Ù¦äÌÁc:å| Ê7å»×È ‰¢ýèølˆ#Å’Vp~DäÒä]vIŸ;ßÂ3­ws¢ÞäJ–—æ¦aŽ1Æ×]«H†"7I^ËL¡al©ê¹-òõ÷ðz®[ Y/¢}ù·§ïåú¡³ýèà=9zhÍ׉Üc*í%©Ù¼~€›øÒÍœv¿%â˃ ¬oà5˜ªŽïìi¥äâ v»´ƒŽ2“T”gµBøÊ­¾-ŒíŽÄÙMh«‡0,”=TqêSC9Xëé¥mU”!7'ì#ëì!&¾Ðt{ˆGÏSC'ÕQ’öh҄除®í@´óÚ3q«¶šÚø‘èÔ¶Ôú{ŽM[Ç?µ5£O«^c™¸£ðmK·ã´¼ÞÇfX()íÈ&ކ܋ ×<·LÈLÈÖÃÆçíuCîu˜|Y×ÔøºÝZo´›Fw]kf]Xu!Úáгæ(¥\NÛCÌ2VËEÚà2“ÍÑ÷((ê›.ÄD±o¢ ÿp¢Ž+)·H¬êM¦êÀëÚ‡6_¢÷ód›‚%^–[±G ¡y¬ÍÇAÛ|´hŸ_V¢Å‚“¯ ò¼¾b†ŠLôŸçgQÍE ¼û³¡èºŽj¢àSÕÑJ„Mïçc}4&^EyòÞî‹{sS±) ª¢¬ƒºÖ+e•º*TªŠ'ç(®Ò´¤,åré÷ÐùYe?.0íM3\d*OpøóÒ9Y— r.Fzh@–8óÃÙ`{Ðzð¢=YÕ©Oªikoqw¿½7è»»pʪ ØØg7?ǪbèuÛ¤VqçÍ °{.ÙæÉ8[m56ëv÷×á‹ÕÅ ‡@æøã8>òq„¥8¦T¼C…˜à¼ªˆÃ,%FÒ(;+ÏšÐ(ÀÁÏÙ®£ÏŒµªH?h_Øhc\¡z„f<·hŠZ'_âé&þΫóŠ‚aÝмl(8ô‡b‘˜Ö@{˜Ñ7,CtV£È0vÏ¿Ùq½|¾qå"tí<ÍÂ;qDNb‘Œ,×%wiú)àò›¶êÿЧûæ2˜e%~O;¨Ò˜ ›ž¡¶^ Tùºý™ö¼2Qð`î$ÑUêñ¿øs WQc»T)KC¹wýƒ›Ñ2Ú„µ¢ÀèSL‡GnAlü® +OûüöFf´9”ٮߔ/ÒŒÉ>|”P›‹ÉyM¶ÀÞÁ§ÞöŠs·8öê˜h2wívdÓÙuGˬõ¢Ì~Ÿaײ,¸p¯ä¸Þæô,=(_+ÇSdïç~m²ÞŽIÉÞät°@•96]$[mªaÀ–Ù9týQørm© þéÖ¡ÛöüÝžžA´:ÿ¬}úøLÿ…d ªÃ´0xÇ?Þ‘€ÒCE†Î.èÙCE#÷Èõ^¹ Y—þCÅ «1p-?4ÊúZ»®^ËÊ¡cö‚dŽoá|A[k–ªg§«¨¦ßáØQYޱ³µñÅÎA»‡ˆIêJªGE}î„ö¿€•)j#J‰ÀL:ü.ƒ€ßMrƒÑ î•Ý ûI×t£qVh1ÿÈQÜ£®íŽúów?‚¯¿éýÅ|n}|?üÕ}þÐ9ùwÿ¯ƒüöój;©‹ Mà¸r4)±çÝR»‰³Ô¯¸ðÃ÷U6j`ÍFÈAf3câgt´ðƒ ¯•_fÜʇ‰»çò¢Ë´ÅØ qªË?D*Óðü>ö£gt~|JÜ–¾€4ÑŸZ޼Ò4ž|E€zÝÅÇNÚ8™M°^+|+@¤œI‰&ƒ±Ôäø\7Ù»ãËY4îqbkἓYыӬã™üGžY«» œ*Žr¯¸CøßäX ÑB³.‘U˜+§“Ú䜹Ç<‰wOöV`½t¶BtNóŒÅk(Graphviz (DOT)dotDOTgv source.dotûxÚ½WÝnÛ6¶týM› °,Ùf'³²ö¶kò»°«¸0(‰‘¸H¤JRKݲ¸·Ú!%Ò-+îVÌ"E}<ç;é£Qó{ڶLj2ºŒ9J°Xþr4êþ7¬n°ôìÆ½v +KL}»É°Ý k·7l÷ÒÚí·í—;\Æ8Mq:ÏeY¬¿·ƒ±óà‹Œ÷Ûöy×ø]ű„QþrY"BíìÃp¹qi§7é²³ƒ%lšìü“`ÞÒiç‚¶ìQ »˜¤5y$ÇÐ&4Ž…-±DQÆY]E)“#ÏjÏ×£ÕÑâ£8iÛª¦‰¬‘‡¢_JL·Ä45°d}¼úùÕ õu”ÀâH2n¾ß³Ní{¡< Bz¤ä$®%»Å圙 Çåáþ¯Á}ÛÕPTŠáë:.ð\Häa˜c?LëØÉ‚^vc·fßôáÓÉç‚dô?ÂðqÁ’›AL›¦Åé¹ÿ~85»›÷«¶¬æ‰fOFvËEzË=At6ðtz1»\ˆÓ´t/@ßu•I ½¾l%ÊŽ‡£ £< ºpÒ«µÄ´Î‡V¶@7/µa‰Þ÷6ÛKë‚ox¸“d[~§—¯/€ß5»£ÉN߬¿w³~º´Àþ¥Yô¶f§í,N}¶óÃp‚Ú6«ƒSô"ÚÜÕÎÐn’CaH$æ ªðº@˜Ÿ=Q¯>|T®Âü8XaJ\2¾š¯7ÜÞ6V}!ûÙ<Ü’GBßÈÏ`ý5{+ö‡¡ø7N¢gd]Äú\}º WvølçCãn?ÆC~ô^çÿ¦Bn[~Ò›«ãϸBW€öí|qúרß9™öå×áíÑ»Óxoȃ`jåO§¢ŽUJf—GU>[Ä q6&E- $Àt{chÛ tèJã(Ñ\5…$´·Wm “ÈUDQ‰#³°6Þôн]QÊd›&¿k§þBœ ]N½éÖwùÑh¾Ž˜²+œfX™•!ø¦"ÚlDBØwEçéêï5~̤deb\¨„Œ«V>°’FÐNªkRÍä5y‡SAÞcuͨlÇ §¹13gJŠÊ1Ér©ì­0WŒ€6‘« sRåðÀBqœÕâJäPÓ›'¬ =’¬¸Á·ç $«¼?~ÿMÝ’Tæê½»½ˆºªÀ÷È®ÂDšÐ€Ž“±£qÎnsŒRez&Ó“ˆ„pÿ%€+œÙi| Ý {ÚGÓÑÑXžà‰h±š®Î¢Iûv]0Ô2ڬЌÚeÜ›Y«¡¼0ÑÆÿ’ÐS%À֌ꎙhÉ…nã…îçtÇPmrùiLkÕLGk¦ã¬e¨7Û}À½Ù ¹¬XMSÍ·66<{Šô9®Â#À1ú' 7=8çf„*‡*¥Ê¤ %‘J+ö½i_€jS¬ï,]ùÂÞ2ò·5„^—ʸ¯zP·ë@âÀ~™µëÍ5ûU+cēܸÝIÞÅ0Éɧ«ÊïÈÉÏH¤yh<#É,›º…µìqOOwO¿göI+ÿ9_<ï»aîy›$(Ù{²Þ*ÿ¨Á¾¢`íâùe,šNQ˜Zƒ òÞrœÇŠçÕð[´8ˆâ¡¸áx?Þ žs¢>š¡ØM£˜ãÿ¬xþ¢?Eé$ZžôdñÜPÈpûQhÅhêúá ËœZ}.cé´rò¹Ân©cØÖŠçz ,DIºçÍã`Áž-ž_” c4Fïfêœr÷2ì‹•.f¢F}^ÄÞ|]-DŠÄèÃk)3¿Ò1C;47WDn„¤Ž J´cÖªÖ×ÕªU,Jˆ‡· Øà†$sçÈÓ7_UcåÒ`ˆ+år]C¼¡ñ»9Õ¶@u¶Z¼\UP«Yª‘п˜7G|ñZ§cÀ/¼öž¢(@nˆ‹aoâÆ8™@²‚Á%âQ¹)¢pŒót Ãç ë¾ÝÐHï@„ß4!¨]XÇé››&,döà¥X—„‡½>™ oHZS:÷;4¹iK¥N¶uÁ-)Ü’ ri¶<™”¨¥ \ÝT²G.Ç•Lû0’9®7²_6ÖÈfÞçòjÖ•Nâè K‡ëÝižÊ”³Ö‘ç1J3Ê5ÚW#XñÊ\åžF~Y!NJ¾:ÉѺäÞpÂ^ÙmÉÛwOúfûŽ`å–ÂuSºÛÔºÛŽbäåOBmU–³!!+v^7MÏêsÆ­šhWZUX‚êØ2ÿ´kcæzÄ1 Äsÿ­*•Ò¹0ŒRW“Ï™¢ Ç\Šòó7ÕœóU-7ÏóÚJ%€³lÑÂÆwêMûš,¡¼HlLcÖT8ªäÓ‡B^¯t¶2+ƒBmÆ£Ú¶eýÌ›"v©êöKæN¯¦F#5=ýÌ~hæål@ä•Éf‘ž–š€i.ĦӇZ¶ïWx½³á k þó-]X‰æ1+9¶|øS¸Áˆoä Õš–·ßš:ÄG?gM“Ϫ2OÈ:„ §~-ÝZ‹%%6+k›OãVTq¸-ù¹ .Sð¹JÃEýʂ֫€K(ÿCu*¥¬D‚¼<{fÅÍ IâEËŸgD nЙ¹Þ[Èï:É yÐÍó2IÓŠä±ë `Æw¤sÕ !3æH¥¤_ÄûGBËËK80«D°(ä[”&Ãcw‘n:9V•ÒÐR7øx#áü$ç ©çH2 4‘ÒŘA¸ð=<‹ý}p›ðÛ3šØHHöà hŽÀEþ>ÂÉ"ô › ý÷hˆÝ(-†¹ÃÄ! aâCd4XÐÌjEÚ2]32H÷y Bw—„nøÚ’¶!`Œœl©ƒøCI0¬ëzÐ Là,)Lã(ÐDôÛºÙ9¿R ¥« جL8ŤM'åñ*Ÿô™&EÑnûIÍ*EÛ•¨©BW46ÖjlcT"[Îf­Ÿ[©!ª#íXi¥tæ$' ÚµmÉI–Û¾h:Kr•}(úK‰ßU)”èêåì‡F[[¦½Ij¦åø•¯ø!*r;+mÔõ Vç@%åÒP–ÀqdÞq·8!êw§õ¥xEU–€ ‚Â#7HçA »*#£gºµð¸Füºm¹¯¿^¡‚Ç4snhÆ;¸Niæ\ÑŒ[šñ[šq[3~[3nhÆ}„M\ QšLüQºŒ…ÖÖFo{Çym:69ð~mÖ6mBwß»j/pQÂÙ“±>Òa%I¯U…šUˆ½Z¿£[dù0Re'¥ƒ*FÁÎÎ?k÷kJ¼ªžtŽá¦xdEÛå‚`Y÷P4 A»Wz)•’±³³ƒáÿݼ½ƒŸ‘×gxþcøÝ®×Hƒ öÕ¦ÑÉ;«·,¼Ii9vºN×”› ν8»ã@n…åï*L C‹Mìláõ,»é¬ÒQ{?|ˆøgÖêe¡r”®µ²/°”ÅÓÈôƸ×´»²Æ•’á $ÁpSG”ÓhH f£hä¦Þt¾éóM¤7n²–QWwºyS¢Ê“å¹¼W:÷§p⯋ÄûSrѾÄÃêŒu‘ü²Žzu€-Í•§^W_š¡lž_k©–JSá$ k'Oà$ ñõ@aew몫¶Jû3 Ǩ破w¥:yƯ«I_¾¯1@c?¬ 5'[Û£n]µáÏ®¦tEO•Ö¸$x3Óš=Ög¯Ú®Q9³Ôrº±¬þˈ,šuYÿúcïQu¢Úh1b½´„Þ¡­ÆŠvÞÇwñòÆdÞW…¦t3„´ÊWFûf—4ü„#ë-Oì R¶vD-?¡üáš}Úv{}b/C¦—f‡bŽ^֜ޫ4åLI=~:®Òºé ãL!rê:n8ìD´¹L\,ï?çíÞÿC¯·kvóv.ëöòø xŸö#è L6€ùW«^n‚e‰²SSŸ¬Â™ *×AA0”°Ò•MÇ_Ûõ¤®¿j¡û_2ãäǹ åA·¹ÂÞèG¼ÆšóEì ?MP0¢¯É%Le! ž "¡3|Z7wµ°ÇÅKÇGÑÚáeÍ}œÉ‰ÄD•³ð¨r^E(„sI8KŠQÈÃȹ#ñf?÷£‹ Už—·Ô²?±‰úiN1̺¹LÙ §4‰¾xrZš|¿n2˜S1õÌ!˜^;,ÓgÃô9M&¯ YÕaj­Õ47gÉ_ý¥‹Ž"ùS]ßÒu¶1QšeOŒwø¯æ.¤-®5zn½Wƒ ¨§-³Ó _ôÁ_õ²7Ùwv>fš†ð÷f\ öLc÷eðbôÃüÃ>þá%ž‘|7›á|JüØjº”Ï-ðB»o¶úÝ­ú›ÈuÕKéºY“Üú\•°Ku=õZ$‘Sœç$B?h5©nJÙ GÚÌq*:!€,ψ8®FîT@õ[Žjõ¤ªÁ²š¶ª¡ýã[èý†õæm•¯Yº#(Ïþ]µâ)oû5Ñ¿ÏK,Rö¾u^wW£W™p4šËf[ÂÄ#‚ú(iµ„JL]ô›®Œ ½Fó;›|E“Mú¢±Gn~OìÓQw¡Š:Ý ²©ßÔŒ?\9PîÖŠÀªAq¬‰.6‘BIs²¿G!·‡PÅ0áìŸG8É_Š.ëoþ·´<»Èf,ëï¿—V˜Dó`øÂõ<‚y¥ßC*$fCj#à40œ »×ðëÅþ,Åʘø|Œ²qøˆ×^‘Ë8{ù‚ˆ  ø/ðíL1z© Žç0ïO!¹–â|ü"»šð…ãt‚מ“²¡ ÀX½£c5EIê³>µÀì£%f„fàòÕ‡óé Ïae8gž4‘i³@ »i°¥ïjÆhƯjÆ/iÆkÆï6µá€)ø ¹ Xq®Í. +/‘üŸƒ¹HTMLhtmlhtmshtmlxhtmlinctmpltpltext.html.basic(?i)<(!DOCTYPE\s*)?html xÚÕÙvÛ¸U’“™‰'™d²MöÄvKv(g_Ç:9“¶}hÏi^ZÛñ¡HHbL.Ž=E?¡ÿÒ÷ù„þE¿¤ ’@Q²¥xx$ïî~/½­Ä×Ùä¾dzØÛ훎·ûøR%)`žp˜jr?§€Õ €DOs@O9Щ gètÐsôMÐ ômÐKô]Ð+t¦è5š/zþ×kEˆé¬¾£§B+ç €„V~(Ã/Z¹ §[Àü¨‡Š»¨‡z»¤‡j»¬‡Z»¢‡J»ª‡:û)¹ßÊÁ¡ïx]ÃÆQÛEÆ/‘zßµ"œþ(p®'÷›9œÐì–ka†€ÞŽB”¢Ü("lâfia!·´(hy¡Š°Û¥QawJ£Âî–FFz¯4аÙ‰§¥‹<ä;–J‹c ,$„p_2¹ɱU”=(/ˆzX^㬕p‚Ù+Hª—FT5J£ÂVJ£kY-"¬å‘”¢vY4á_ )7íBL0ýnJaRôo€m:¡ƒ¹&å/ùûc)ºóû},èy"¥æ,­O¥X«Šxö™6é8ìs)Î+bÿôB*ù)ÿôRŠúJ¯áÀ¯¤´&[3‡{-±æ£N‡¼Q(™ÿ´žÜß&÷ª÷ú(4›€ßøhàc ö›}·Ù ûn%ƒÅ•Å.^ym·6«RDžFfè`¯i£Žã9¬IÇ@žw[Ëv*‹G~ÿLóþ¹Ä7_jk ¬fÛÅÖÞµ,¼zª+ ÃØV7ËÅÜð18GÕªDLUrÇÛ7]Çn:®‹º¦Ûl›¶‘tØ7~þðþã{ÖUJ /J>}ô¯É;ÊÊ]ÕŒsù¶ÞruÃØl´@õµF=°|g6ê› |ZÑ[6\ ³ŠqS9%ßk#u¶TNY‰U¥\S`‰mÔu<†<'!ß̆®Ã¦göQ–ŠrJBÃòSåò¤Êä¼`–§Ì¾¡‘oÊÏÄ«2²f½u.óŽËøßœË,à©Ê¨«ªèþ´ˆ×ÑŽ| 5?MÔo#ÛF¶ ·šÅ»žuƒÖ;á k‰ÈÚ(úØu[ô÷NÛ¥Ôgµ´²µít:ꦢ÷¬äÞh 5ô#кš¦wX<,ïãø’Â:u±‘þŽ);#Tµ~¯µÖhMÂkj ;Øïmá ‘æx®ã¡“$½ëG‹ov4^òÝî¨JnH·wG•Ä®³iÈ\ÿð—Ÿ?þý¯hðÞniÒ©­ðp€RÚTAýÇŠJŒÛ[¬¶ÙÞ™.æ ø,¡¡â0$\¹÷oìñ¨ÕÇ¿ª³ã“b!74†&L¯N ‘—e"­(ñ‰ñ²K2y8ì!ÿÄj˜Å€!³j`Ÿö/n}ZÜÜYYäCòYp<ÿnÆïf'ØÀäkhŽv1´xjFgý¹™Ù)Eô*OêÐÄl¢9TMc‚Cs(6¤jÖ5ÑŠ/vÅS(Á°ÌJM—Àcr&š:eûÍjòJæ_\ø-«y @©ÚO: ^?%³+5Í9Ÿµ¤Ö;˜Š0KR8½fÄ\$L'7¼#ãÔÁ$±©lå¦ O¥ _é›H2B±·?.E^¼ˆY޼åi§Rü©BáÔKžÑuUcæ7+…\Û8·rã\MãûÖ§í`csmyq‡¬A¥¸Ùh¬òˆu?kÁéJù'ìP3Fà|tU™ œ_—nF^¢Ûì7ÖO¼Íâ¤~Å.cñµ ˆéÊä(Q6YËòz,lf¼éHl.OƒM•§Í)…\ÞÙ~…ÊszÛ“tyïNæ]áêÞ]¥Tç$¨”7.­ãÈHË×½²|-TŠ.¥-K`UiâEUó¸me<‹/W?d’úbcÒZž´bk²´–GTj3LÖK•Ù$ëûc$ëš–ôÚ•¦K§ârC°RTN´Ga⫬EitF>ðpF>°<†ÌI™I¯SÇéW²„Ø2\'9bi)MJéZµ®¯ãCGdRQ©NÆäï¦TMW…fRª62ïøÍ9õYÀ¥T¯ÉÊZ-_«eùzT)ºjª‡q˜åc§KQYùåD¼˜¼+g=_©x²ü–g ¿SÎV¥´.”Çà+œ!:ˆËuØÄ kˆŒBB³EÀ:êžàÔÊàˆ(.;j‹Òì`{Åôì¿rà£þ°Qß2_ßÿxl¼ÙY%K[Éý€6L£óÞøãÎj£þ¶!Ÿ"›5VÏôM+„ ›dퟥ(y@fEcU™.掌YÆ6èçÜž±8¸±ÝjÔúnºÏ¢ãéH'|_Þ8ÉžÇT™fþâE/=SV•²Þˆ\RžQUU¦‹…qÏèú?›ëÿÐÀZ+6ÏÝú r}wgÅm,sºÊÑ ”öU<]RóÔZ‡²}µÑªo4êôðD²u²Ý†~ëì°®e6öæ4!jä–ÊŒ·öt2¸œ£þÏB¯ ëÉI¸ï¼IØrë]³E}v p>›ûf‚Ö\i4FKjôyº™ØKæ$©NVù$x+çTml’2mB{¡MÙôµZW TqôMŽ£ÿ qdÚ¶‚€°#i¬ô ¶MlgŸÈ¢ÓËEµóÈ' >ñÌ}ñ+"¶Kìt| 0þ ôžÞSÒ{FzÏIïé½$N áá†àög…`— Häs0pÏv¡sÛñÉÀGÓ—ò”‡ª$ümN†$ÜóO:ßå8¸9Ä=iG:rmÐêô™¹[ÈLîØŸŠ›39nþ7lñí¶OLËÇÞaŒ™¤M  AìO{!iÛ˜´.8Ë0'°p ƒØL½ã"¡À"‡8ý.q¼€8P¼Ûè€ìµmâ:ðÏÛ#}s@hã@ÉÖ'¿€P?’ämÐ7]—Ó#´ºßCô†½.a‘žQþˆžÂDdßô¿žRçEUJ™Ï)åOÃ5 C³ã ¢¸f„ Õ5Ìk„]Ç8ÖD€\2h6¢Ê›>ç÷Š9ißçX??lÓgáöåÒ.GÿÛ!ú-ˆÞð?V;ÎHB–'C›„4O°ÿ¨›„30Ô…b^óç-UüþPQÖŒq s4Q¯ÙÇé×Áüç‚ò4ÀäÓ‚àeıA––žiаy>Çæå<›b6º>u®t…mþl§Šƒ Ù:S{’FL”†ZËrt<˜Ñ3‹?ú憎¿kÍ¥¥aùØi¸^š.U:¹"tv3Š:;Þ-úK«wô°àðdA6¦qΜȶô0oK± ¥}0ÛJ±ç4#g… š¥Cì7÷Ðaf+N'¯¥åõ[Ëë€ †Jk{fûP{fû ‰5JÈ÷±ïÚnDo–éY-Ycàš‡d^4ÃÄän~ë™^—vd¹ŽµÇî8`ÏPÂ@&e5<­©Ÿ^k޿м_×¼©yÿêH5E¼X{Ìq(]F$é_q:äÅ\åÿz\LHaskellhssource.haskellB xÚÕZÝvÛÆå¿Ä±SÇ–l÷' m1 ¬óÓ¦Q£°I<¦I•”’4Ůȥ„# P’Ûm.Û^µçô¶¯Ñsú}’OãôÇìÂó‘ã²§œÞå¨G.8‚„ê¶`.‘¹ Œ½¿õ|àúôõ&œ,žA-E}ƒ¾OxoÚó¼ëŒèû»ÂʳúÝôämA©DûET6ÂÁשB3-§bü—#ØõÌ#øc7æñ :?Bc‘Ÿx‘X©x ¼hYs ñ6úèt?iK\Xæ1 Éûâ;’ò׌?Ó+t¾c»ço:v±¦m’Kª2´û±Âós’#Ç„¸(+~6?ICªQ^°–eÚ°ØwƇÔúÀ;–.'3\Á°KiÑÁñõè<ÛžÜpæ¡cÈ$\e%ÐhPÎŽ¡ Õ˜.'LEt€øòÌqûEÇÇ㨩Q3–“KÑÔWÛ@ûcg5'(gÚ§À2ûáBЗ?Ïš9¾ò¼©§dFS7ßÀäÉñ„õsÇV@9f_E[_:.*F–ÙúžB¤l9V =œB×*ö ¤¿@ ·šl;g¨>bBôP¨Á…t?ÜpÆvR+$زà«%Tµ}xäb:òÀ´ðôè,ÞÎÞx¤–È^#Zã~â0IS¯n—µï:Á¼FÝåÎ åWˆÎØÃMÿedÓÆMö5~9¶b+‘Eþ`ÞOµ/Þ‰¶4aœ×Ø<ÿ#hcþ=-H_5åPß/ Ç”Ÿ:yÏŠÄÈ·¬¿ÓyJ}¿†ZÔÚûéÁ¯±‡ôúïP¹ò mè5´ÑB;{¨¶…¾ÞC[[¨ÒÄÔ¨UE›5mV>Æ¿OðïSüû ÕËÏPë÷uÌgUÊøüµö7Þª ­Ún¡f í·PkmbÎmp8°]ÿÔ0ŒÇËÆGU ¿žC §™c€=[z=0’ešÇñŒœöSíóÎ*2Œs|õEYÛÚ€Ü·É±ëØ¡‡áÐóLâ2S]…–ÐJqEU dt’y>#ïüDtM*¬/îP9ÁÜ|¸“‡x¦'ÐOïmq)W01(x>^°ËÉV9ÞÂìª3Ãi¦k’ˆž•Ã+¯ÎüÿÅêЫâ+æ#Ö0ƒ +y(Øe5vf¡Q •ÎÕ›y|(}àdó€"HžE4髆—Ï/å¿9†vä}g”·à)´òŒØ<éØ<ÌåÚëe]m^R:J'/KùržN„e6uÉfªö(ñC‘x±çb>«d‰š@™Ùo̼/.J ®îrPWÄXŽ¶Æ ¯LÜ Œ‹Â^K«CŽçBìƒnEa1]³qVx"–~ìæèÁ 4U`rqr—µ 5”£¶d¨b€0™`lŸØÎ™=™·XÈü˜åƒ‹é‘ëô ç%+4¥.¥úKrü76±R+×·÷ËÛ:jìîUõVw{§‚ªõJmSGß”›õj}ïÊ»M½RÞÓ7Ñój½ú¼\CûõÝ ¨7¢‹Vc¿YÁ\¾Ö›µòîn0Š^—7jñ‹VÀ»±£7õú¾¬Uë:æ]¡®4ðå3‘ÇÍýšz¥Z®U¿Óã˖δ òÜ&µ$°6ÌeT˜÷$´ÁAÏ»|ñŸ››vÈpŠw's,)„á¥ôh)v½'“‹¿cG&ŸqeêLÔ]Zœ¼ Ñ<36  ¾’J>†’¤DЬĕ¯ì£q¹Ç˜›Ä¨1\D‹=Vš Žü—šez2V·’l"X¯Ëdy+ŸX8ˆ”%—&–+ócÄb),qi’9¼€5t1\šÜëœ\г+LÝ·b(—#š+ŽæÖ“)Sáˆ;ˆÔ¦aM <ˆœ² L;®Wq$±å3[Ø X‰°Â$ ´-·SJ¸L+¥¥–Òw9@X  åAF«?i‹JŽ/vaKmó҆z§½ªuJá=Fà ñy"5•008 sÅA€>J„¯ŠÂÑS¥}þm'¸Á>n÷ñ£¶Óè„0€ª¦-–’•–Bñ»ìaÊñ³³U)ÈÆU½Lœ’cy.Òªñ¾l#ŠÑ ÕÉü£n¶zà-ÎõïÄZ)­!ìÏÈG#Õ@o63¾Í |8AŒãµløMj}“Óúß i[•eü+­án³mäµ`oÓ¾Ou—B«¹E÷òŒ‘&UÁØ\ií5Ð9Ò;¿ Dœ€Ó©±Î:A³<ªp½©SfÚp5q,Ö©™cwà9Àí­9LqÁ85ƒC%ÌkÄÒÞM²V“!Z_'mîzF„¿BŠ…ØÌÀçaà±Ì«ÂpmºÜÄì”É5É…AÏë f´“x_cÓuò]ᣢ]n žÐ® HëÊÚúáoÿ™ŽÂÍ‚n̆ÃE_q{ŽÅ£a²óΜ¼ð"‰qÆ|ìº/š†/0,‘ ~ЇÄ~¥ïã¾Ê0,ýµÈëC5â‘jc(KIщö½5—q¤˜R[±`U‘ý2'èÛhhá[úl¸Ð?=Üž4…+Ìt¿W´¯Ðùgœ*u_àºÎ™dB1—uÌå¯ —¤\Í#-‹Óe}Þ™3ŸøRÌge=pê#9Èt œÿÜÙÊ.Literate Haskelllhstext.tex.latex.haskell¿xÚíSÍNƒ@†JLô¤Õx0j4Œ%ž½ø"$dmKJY²,FÓôÅLŒ¯àÁ›/#… V›êÑ=ð±»3ß|;?­\CÀK³ØDÌ#ÑÈãħ©{‡—¸ÆS’Îh|е­ØtÝ9 c¼íö«ÛT.ðzp°¡ À=Àº´éJ¶u ¨l0áL0ñœTÎ(n =éɨ ö„³,± evD}Ò*k]&ªžÝØ8K$¾E%Y싌ˆÅv@Ça¿õP4 \¥µ2ö$ÉWuÉãýŠÎ=4°!u%#úœ¦,ãyD´©œÀø‡Wš¦ãX¹jËt–¹ªQþ·´ªlu%ň'¨"KÆÅZ¼ùîH×ß'Ñ#þ,H:-½w$o{óxtÆ%‹!±\>/¢vB8ÉsOùZá(¿z›h4ŽæÖ¾ÚêUOy[iŠþÏc ;ÿ”2°Aê–ê¥×sØÖ7›ŠnŽÒâwuTJÓ¶–vŽýÿpï¤7V1EÄÿAøëAPO×¶jä¶Òö¥Q9ƒý§âü]1Z]…ý‡âüEqþ¦à76=™ëð û!*˜Java Server Page (JSP)jsp text.html.jsp§xÚÝV[oÓ0îeÝÆ qB¨£ÙZ¡W¡4å^øUnbÚ°Ö Ž³ -û︭Oš8vÖu“&Í/vìÏçòÏŽw+‹¶+ú—ˆd0E>¼yTÉ7æ-`ªzÌ!`jzÌ;ÀÔõ˜÷€ÙÐc>¦¡Ç|̦ó 0[zÌgÀlKöóuXÝ‘, C”Áò)©ìÖ»’s ù¾èÝ`:Å„YÃIàY¢°’V³¥ë¦i8°°'ú0&.‹óbyø·OüùŒÏÌÖ²Þ@¤˜!Ëó)v™Œe÷µ¬{øX:o*œG3K³ r6—†@ý“W`æ™èð¿“€zVÀƘ*‚ªfxåXhÕ a:Çûi /'§IöŒ£þ0f‹ê9ã³Ö…Á 9…SÄj¡(òG$­AÑÄ Ê+ñHÈÈâ‘OJ©h˜[¿n7²‡'¢þÆÞåñpR®«ÆJ!bâé¤Õ·ÀÔs¹ÂîQä2^e¹(̶<ˆWÌãàfóP„FvÂ}Û~Í7}‰\ê‡l‚™“,&ðiH1—m@`ÆÃî„»›Eít’¶átRã5)yåýÂÐhy½É;Z%—ž±çqúIK޾C=»Ùê´{͵’I 'éŸ%ýóŽòÐdõ¾©Dœ]¸oK‰8Ï.«Çbò‡ š bêòZ£c´äf̦­(¿¥ primitives3\b(boolean|byte|char|short|int|float|long|double)\bprimitives_with_void8\b(void|boolean|byte|char|short|int|float|long|double)\b qualified_id(?:(?:{{id}}(\.))*{{id}})storage_modifiersw\b(public|private|protected|static|final|native|synchronized|strictfp|abstract|threadsafe|transient|default|volatile)\b uppercase_id(?:[\p{Lu}][\p{L}\p{N}_$]*)ÝxÚÝëÓ¶6Ðã ã9 â´N l0ú lÀÆÆ°W:Çq[×εݖ®êýr?ÞúÊYÒ±äØnZø-ÛâF>–Î9::/yÖâÏÉäzMw\gAw7ÐËuü…©³5þ#½E@÷$×Qê:+¶îû¦¯êNOuÌu:ÆÞ’¦#Ž”|ð6yð£äz…Ðóô ÕÀDÞªR§vm×xK1Ý—\/ žë™‹–cÅO¹½ úÐþäz‚cæfAZKΊéò_Âi1ôÀX†8L®GxÐ5èPPÊîÃ9@)k?κsÜ<Ϲ=3Æ^µÃ^í™ÁO’ëYðÄJÈÃۖÀ-žRv,¹Žqà=£íEb®úXÜÍðaµ¯{&;iÇ…›Îê t"(ÅâdPÊßSÉõ´d:¦g*ƒ2ü4àaüˆµÒw=F¤ÎäA¥8’ëEÊYÓm«§4}‰!þSÀåø™·æÆºëõ¸s€ÄÎÖWº=]Å‹ÌetÆy@‹§Hg¹A(n+f°ìö°,¬¹T{±O0`—rÁR¦]ÎK§ö3ƒ¹Ý¿L#Pƒ¾ î2fp`ö(W„÷u㭾ĬˆQáôBa¾ ¦"† …ϪH]Ë{€.húÀ˜]¬q-‡•™ë¹`)go© –±¬0ÝšxaaE·r·´ïBˆ¾Û УºmÇ“A@=2Æ‘€Œ.IMy`à¤; /~|An«`eÉ,o‚Õ"´XxØj©ÄT" q Z¶ÿÛ€_ŒÕ" w€½¸Dn~Fnr|FåÜ» ŸNe”@Ü:;k–ä—ÀûBîßB ì›Î€áyÔ±©Á°VR5“Á+óÌE/c#ípè;‹™ß7 K·Õ5ÝK1z/Ïô‘gæÁ$E†ŠÜl›&0Pôf(7»9±lÛ\ÂôƒBà¾ü"pnßËãkÀ/Ó«¦·b9zàR~=J®ÇÁ¾¹b®M‰{ TOlOÉÝ'Àâ‰ì(ý$÷[Àr?T çÚîir%Žk_ ÌwÉõÛUô=ÐQ1PzûX„¬ÊýLMÖÈç`Äh’Û?1cŒ%a"}èfí*ù)¹žÀPÛK ¸%6—Ü~ 4MÄ= S:Ü+ üúz &´ïY+X[¯™j¤¾S¸_€ú pm¿;Ö÷ÜÀ !Ào@¦3VŸþ.ÌjÒ?2€®‡¤®¸=kÑbÑsƒÍ¶O]O7(þš†gYÌHâ/Ûo¿c?Ü]H®&×=`qâ¹Ó›Ô¸7ÿÒ×ôZ »²1 k¹ZtK<œþªc«q—¾ïfLU³k.YÌ8{˜ƒîèö† >“PA¥r Aû„)d„kƒ 2^< å ñÜêÚzCÑüF½5§Í)){äJÃFÌÒ»¶I鈱¤)aÕ]!]{€Uàé ÇÃâ“3"B-â´[^«˜Èìg1™O9Ó­w]×6uu7˺‡üelGåhÑvõa›³„zî*æ…¢u 'Ûƒ9y_œÍP%4S’¢,¾IÝTÁÖë­éøß¶Öß|¶µ0Ö‰ÿÀ_ÏÃ_ ¥®5¥‘¡(Ø+¡€Xµ×fäFˆÃ'. ¦R7°’ññLöÜ µP~~Ú…>R޲Yd”X‘壢êä+ä ƒ¤{dÈúâøhÀú&]fq…%ô/›iTVQµo¡$™‹|J¾e1ŽLì@?bQ$ý¤Þ`HÃÁ&ˆ'ñâÈÇw—4ë Ž ˜‘oÍ êduŠ.œhŒ|òïæÙZ&Œi¦¡t¹µBú«ei"÷¦áÔ&þ‡;1?ãÁ›æ»¾‡^ÙIxGÛ§,mÔ7lzË%g‚ÄXÉÏ MAÚšPxsʼnÁé<· ÃttkJ¨£½¢5wöTÍËI»GUdŸåÁ«<Õ@-_Þ4¬Ö¶¤ýË(’íÂ^I4ÂVüÒÒºØ1½E¬ÜÖ SØ€c§n\ÏR„©Õ Sa(ϒ̃"öQDžnqæ¤é``˜Bgœäž0ªï<_¾Ö%]\ë‡]¿ p¾ =ÌÉè±t¤:Žýí(‘â+t¸k9ÃÑòGüX¸*6¡Új¸È˜ð ŽÔ$Ò=ƒ³Ùiΰ­ˆ~8Oõv7þÂB–rû¸ùÊâç\%‹Ÿ€¿EôñYj© )µ,=YÛw=wýCÌFŠPx*Kaä×”b{ÆU¸:PzvÜ—ÙYïŽi~5ÊÖ qdoV:´ÆdžÈxX¤s­ðs fŠ›q`§úxR—3¨pì!~ߘæ´‚¸ŸŠîõyÁ bUÖ‡äÛ-Ñ>÷jâÏ@1:@1ƒ¶Dk6Ôõqèü„zÓ pN°š»|íyJï',ùç‹pø Å~eñ‡\z]˳à OÁþOfH‚6zhuœÅ2IW”öyÒçÍüµOFø‰™#[2‚LWêI'åaMˆiåŒS ñ^F¹H”$õnœ5¦Ž¡“øx$IÜŒóéäË•§«c‰(2Ù»å³L ¤¶BY§‘ŒÌÏÀ û<Ý“‚"´ª†1‘Z+£$w„‘#C²wwؼä´ü˜ÄÞ$Ù}#ë3Kœõ'ÏÏ£öm]ó'´¶Ö™íl“÷)ï¥<…1Kª#Rž¦{ÃPLG@{)aÌ(»ÚÓ.iš¬¼>gìV[Ùšé ø¡b•!Tb3Cœªä°ì‘(¥ïXiÉ‹áÏŠÈR ݶË)×÷SÝ »ïñ–Û,!…@u²\V·²(ÙR¨Ë7Eö•Ëâ’ÄkbS ©H²©S^#Ý„ˆ uåP1=—‡)ÝNí^\–-…^'ÆŸáf.>“­`%Ð(bhôJØÿK8ĺ%¥*Í 'o%5¥PÅÃðúÿ´€!@Fì•\x!гäE€¢Àƒ/ }/IŸŠ¤”¤œlg§fgêbâoÅ1+7Ân8Ÿÿ„Ãíl~pÕ ŸfDNú&½Ç}œü± „7å×ôÀDaå¦Îì¡84BX.uá ÁöÈßpŒeÏu¬¿#,¦Ábéݰ^ÆP°ì™zÏ×M„ßÂø#,Úúª 5ׯĬf9¬Ö\«‡J&d…BÆp¶½&‚ÓLI€øj¦4fŒêšÿ^Å×K’yªRÔ®’?näk¤d„¼”‚Ö̦“4V8qX8ÂT–oè}SࡉI -HQRn~(¤œ˜µ¸¬œøb–C¸ 03@¸¹:ŽAòöñCæÙøC6|wÕ3²U;òÈfÕk%0‘`ú‹¤ýWI{îDfÕ(C*=J‡ÌF E‚{ðÈJñ€ÛNŒMÔƒn!rÛ*nªÕª²ŸxZ×1×i:`Oö5“*ä&Êw˜öVÆ$/¥Qº³L,rgÀœgJf 8‡ûª,4Ž(­—tÎÔ±ÀiM²@eE>jÕùú8•œz\›Âl‹_ˆORÄ’KÁÊDÜŠzÝxÓ˜W;ÚÒæê­Ñ9E‘°6Ä!ÌÅï_eðûHÂõqIûç’vYq‡V•WLaCTå,pÆB\˜’ÖÏHk<Æ$32ßf?£Q+')DÓr°²ØÜfÏz+ ¿üNhbØZCŠcÂÚ0N©Ce:\rîËÊÐï’ö–¤ý¤ýGIûŒ¤}NÒÞ´ÿQ‚gGJŽyKÒþLÒþFÒ>!i*i.iŸ-É›)Iû·’ö/%í¯Kð¸lÁ™Œw$íwKÊ·Œ¦NU°3‰ËOjR|€7@lö¤ÖГD;Òj¶Å\éÒRFY‰ W€D:>-áãtÞœ76Bñ®R7#cÜQnT2âää0Ç8V«*,äÐ_‰´°k hkúõë§Ð럟Fg7ºõöCõNø5¥Þ_èŒ+liñžsTn¶>Ž¿ç‡I”äOƒâan©¾RO¦rÍUáì"‘œ«@V¦»þ&ZÔmßDΪm38Ÿ8Ûº³´*HÀ2nU°lùgmMOÐQÊ:"ÇUê­wÊ!ÜÛT»ûUG9„Ù» ´§n-tø»ƒO/4P½ýÌî(-fœ1ˆ0öZ¢œwèÈ,avwqÒÑÛÈ÷éù tÉt{"ù®ò—<¦Áĵ2T¿û-¥º=ý®g-YÁt'¤žþ’sAÄ…eóÞ3 kE·óY1YŒ°¿íòCüPµ§Ô{Ñì«÷:ãRʯ ¢Ü5‚A4+Åh¦=m—ÚÿñÔ¶o©÷;Qª§‡ ÖzJ+$÷Е+Z3ˆ¤=1wÚ8Þkq7B¥³çÉâ£^È ü0Âÿ‰Á3À‚€6ÃÏ(KžÏÇsylñmà”e9–UæK9B÷T%”â=Íâg4´,S(;ãáÍxÒñ5AÿØ}„ŸT@x¡]P‚}¸FCÜ[ù냖)§œdd”]gÌãPO>˪kŽ×jbï³r>ŠäeßÄ }ê“„™M¤ÕÑÎñŽÙOÔªb°ƒûЧá\:.fL S ž×àÒ—L©Ýš¥_ DÒ}é7TþÈÀ‘s…XÔO{¹C]­²Û˜dLÅÃâ úÁpáaùö‡<ï¶ä.ŠV>ƒÒ) J€ø2bI–šõþܦ}D8TüjZ%@+KÊhȡǒö¯·»Úfv–nLZÿW»f¸4­5°ÆZ´´ÏÔ¶­ojƒtÚ§eÆ8,ÒÿÓÓy»gL,t‰^¢“Oö9’'×Zh}™L=žÊ4âÇ^ñ²5LwQÉÛLÑ/úì7­zEóóó-E¦²Ò»Và/[‹ì‰,îúÜC³shÏ#Üïàý œ×ÀæÕò9=ÄMX]S5iã=µ©Èz³Ë_ …müìö(íwŠ´Ò&Ñõ)ž,c»DʸˆŽ¢7†ÿQN¶í.YFV¦]ýioÐB]áiY·üL¨MßaÒTê‘)Å©ôô•Ô­/”“pÇÿÛ,ä*l¸²cºxÙ B‘ é"ŸçP9IhTódo ¨pC©8*¥÷íÙ3ƒU»ž©¿E†Žs9a–ƒS;¤Nªç¢õeË6‘¿nán‘µˆLœôXaˆ–²nÑõ >]ŒUeÌ‘1ur‘ ÷¹úy8ØŽ—ï9ĸÀ±±ÌŒ¯'|d ôN¥Øáíêi­Þlh Tc®ÎŽf¾Ï¢Â+P¦ä(¯Lºm¿IÚ_JÚŸHÚe›<·%íwKpX|b4Ôò³ƒ_KTI½W ør뎹õ0øÔ{æ@FYÆq§ vdsþbå…q•[R⺥Ká¼Y©òü€h˜!œeËŸ”Ü—´úŸë–Ý3t¯·;§K£ÏÃöoJH!ç#ý—R7œE¬â2ìÊØÒêÆ!¿OmdwT\wG8<ÄšÖzã8ÆjëêßåŸÊÀWCg`ȸ¶ÖQÆß;ËàKÓÃåQÙ&ú”™¯D~k;_£i yóöÄnSrN'R5&çÅ.mosnÏó¡‹Ek®€÷4š\“z†$F^Á«îÐ;¯p¼ù~ؤkÝ÷Lwµü/}[VrjŒÊêyèAd—Éx=Z+aL¹Ã¾S|¢,Åæ´l™Ë-½,|h°’ѵføÏ@ï)ò‹{Ùì•àíƒÅ‘a¹Weæ{§N_-3ãœb?á±3¡i b¯D÷ ^pKö ãŽ¥R±w;Vå%¡¬ËQë70Áø+—æ/õÝ1e¤éK~îPUï¾È‹ŠGd&,—”½‹•ÙûýðUUQN×ÜÐ\ÄŸÉüîBÝëX5Áá³NEí}œ™-a†ªëä-¸/Þ­Œ^†mTns¼Ìvx¼äÿ•QjÀü¯u,e‰§ëÂåqsèãܨ,·tW8>‡ZT”d˜$RíÿQõ JavaDoctext.html.javadoc xÚÍZisÛ6|åvlÇvÝ;>â’RE¹IÝ$šfèÎdúÚo S ,B*äì¶L{y"ÀS1i‰3˜ââñ½]Ú´'¸>Ûc€ ÜCXC¶†¥BöÎî°WQ‡h‡FØ>b:èáèJ¶M„³¶Sl" µ£i=Çè5ÚÈ1zIîfóŽ€îeÛD8÷³m~¤6²mΩÍÃl›Ÿ¸g)6¯8Ñ)6¯©Íf¶Íjó„sfÏNŸnq^ìõl,Bosƒ1FŸîpV‰H ŸroAx 4¤ÒÇ»ÜȉÜ Û}n(Im!’Š,Ø'h ¥¾¡Bé/0ªÑ§¦ŸE°ÖxbJ¸J˜5âÓŠÎå#ý¤Ñàf½ÿ>lÍ î“ ÈÀ’ £à߈Ä*}ßJà›t"Я䋤’Ë…‰9Û¾¡ëéR3úcɵšx·`Ø/þî­8ºÄ(ÍN!áÓ|”OÕfüÐc¦®ÒTì¦ ¿U®ÄÔ÷ÆV‹-AP.DX@`+m©Åþ}eXªd´8×ùPŒšò¾ ¸1÷§©¹Ç¨ÙN¨± ™X¸XN³„œ«^=÷ ô‘e\ÙÕè °êÕó€Ñ³›Ð¯ûÐô‹%µKHŠàêUõ° J`BF†UM”¬zõT½jžÌZhÕÌœ«^=kŒžý =¿"¨©Å¢:¥Eù€õ*[g”íe({(&•æáÕ«k£@— M7mªÕèšáÕ«ënÁ:¡üÞ»’‰ÕŸØÄ¨(±[w= Û ¸`ßÉæÆ´Í—¼&Òˆèš÷`%î Zwyé±Ýôýq!:±»Î,gN͸w8}ϳI0äVòl–áÉ,$ $+–!_–—krÂ/ëI>W¦B[Þ9ÅV^ËË“­¨ÈSÈç™(“–×¥lù³@ž§ù<¹ªfDŠ–R¸üëS‰,€&Åw)ù>{)¶ÞµÍÓMËಯ´o+Ïx-ƒßnÆçO¹Ïéý‹80¢F„˜¶ìØò€˜Žûg;¤AÇÖ/00<°áº-Ê:ÀÎÐ0ݬÑ!×:»ŽãîkÄèŠïÛÝ Ðþç—ögí7=é¿ç­ŽüöôøCK>|/ÉÝbƒój¸s<Á*´¼Ízwÿ¹M̘& ¦¥³ ü+ú9°·‹>ËêW9OóY}á¶ò%¢Ì} êÆÜÚ õ`5cå¹Y}À^Û¼kÂmùÛòÎù\ÞáÎ êq;%÷x¹=3 " ÊG±à0$4Ö¯µ%r%Çíf®ä…}ÊÌl*ð.GØU‚È;£Ïxý0Ýë3ë[rü빟¤·L¾?K®x, rW±[‚»u ‹¢ÞIþ·­‹IÆé¦‡Ecc‰ÖÛ8±jãðuÞí´Îuú6lmb¹§Ð!w¿AD‹¾6*ùyZÌMÍ=Ëž#ðϲïCÝRô_Í}†]µCà(o0ï]ŠqðŒS M èÚ|È¿J¹ß+ ÷z­á~9W¸fÕ†šîøO»AuéF(`’ޛʼnKu™|…V ò¡_ìˆRóDÁ2¿!þEBš‡nF¥#Û­µ†m`»²£ŠÍ° KšzB*tŒKé$kd ïD?ÒˆŒ¬d.* ÿòθJava Properties propertiessource.java-props#xÚ­’ÁNÃ0 †›n‚ BâGÔÚNÍ8#¡=H»UY ¬uª4âí©†S²Ð „ðåKdÇöog|Ú2b ¡l˜€òþ68¶3dyð[/AžÞN3¥­;DN‘îӉ糩n•lšnjYíè+Û³¬U²í'ž¸Ú„Eºbˆ§ÂÞdk Ò†i!nù“q8ÚÚ_UÃ`ÄÜJñåù•¯4ªâž.üdÄ™š¿„ß×"~ƒ—È8îVILçÉrVÀÒ&мÔ8Ól¸Ê:ñ njâ5ñç‘O¾mvQ¤ÿ¿ÙSS=¶kä:Î׫yç=úI¥Élh!©ØIÿ- ÒZ¯ÍJcÝk³zV÷Ëq·ÏÏ—”‹5û^MRªÒ5 ytpñ5ânqýáÚºp¡ÁûV¸HxÈÜ$U\,ÐhÏÚ¬Iþ‘µ ‘-}¦,®XAÃժקF±ê²$ 1X¹ÆàüK£L/>/Ç–@^â>XJ ÀfAš)FòÀ’·‰ã…{¦Q:Þ ±öË1ΠДKAØãÝX2 ;&¤Í±BðoœZô˜*šJeîi ”ËÙß^âÍ4OW'BÄC£ˆ-hDØU lYèæ`î |k“)5FüH—$”Av÷X³£×5·‡$½ñ¤Ñ®•¨ª‡ÏÃü©>Ù!ÏsDÕzÆï×fümɸZM{%½ûx3¬ Ùœ ^ æŠ'>[p#²]£í6´&¯‡uò:Å›I«¼ŒÍ\²k7/­v•ÈU•x«•øz“W~kå¸cU^sbuþÞËJ!ÿdÜ€p3?bê²#¹gñp£{+`å»=3DØ~‡Ç£›áôwïv¤M»–?ÇÛæ,¦¼Ûæ¾³kdêø‹%ʾڢû¨ÆÖŒz"3¬‚Ùílºêä¹ÛfÜ­­ú3;ÝÍ}~‹2me[+Œ‰7öÆÃéÏ“â´÷ l­<ªáë­|}I';Z¥O>ôÄßùÑjú¬,N7‰hrn«á#ˆnÔd~ý€™÷‡ÓS¨jv3§QÂnDE#ÏGÛï5éâ{ŠDT,2º`5çæGµŸ^ˆõñËVFûÇ3ÓfBê|F2º/ÝX§[{Õ¶ÿómËòÿòi8½:uð:p ñ G ‡]¥°u:K²¾ã¸SÈ‚Iœ·«ÈYr‘%`)îß­žfÎ;¦d>{³š%„@k#$Ÿ?{å¾™¡5Ü;Áô>èˆ*_öÂ1¾6—Q$ÿBþuëHÜsB¾à郑ÁG€ šMÌ—!·GëÀR°u\@žZ gìÏF‚YœaõÈMmh3çhâ~Á%½d ,Eª3Ñ7l´UȾ„,ÅRå¾µ±îßÙÕ§`ËçÚâßãô¨¥Åçê}¾×ÙVÑ_ï“p¯C¥j¿­«ªÅåyë¶Ô‰8H rçÓà2oÞ…¾×,¡– ýèÊÚ÷¼‰?*•v¹°æNzÁC³Iµ>ëË4«¡—nNÜ7Ôÿáþ5{ÿÛmQ!è9Sλ2‹sdÿEhÅi.¤ø!µ¥§ÿKconstant_identifier$[[:upper:]][_$[:digit:][:upper:]]*\bdollar_identifier(\$)[_$[:alnum:]]+dollar_only_identifier\$(?![_$[:alnum:]])func_lookahead\s*\b(async\s+)?function\b identifier[_$[:alpha:]][_$[:alnum:]]*line_continuation_lookahead?(?x) (?! \+\+ | -- ) (?= != | [ -+*/% ><= &|^ \[( ;,.:? ] ) method_nameu(?x)(?: {{identifier}} | '(?:[^\\']|\\.)*' | "(?:[^\\"]|\\.)*" | \[ {{identifier}} (?:\.{{identifier}})* \] )&#xÚí=Y{Gr $¯mÚŽ½ëµe[² –fDò±—eS EAc‰Ô’ÔÊ^‚¢˜8Ö`ž„ÝÚdsnv“ì:ÇÞ÷ùžç<ä%ïùùùR=3Ý3Ý螀¼²cèè©®®®®®®ª¾þP‰>OÄφã:Û†çÚmÈ3ìíTøÏãpËvÛ·k~Ûí£t&~>¶mÃ÷ @/Q ƒñó1Èíõ¤ʆcøîˆ{™Â}FZÙ¶ë˜V`¹Nš/÷炲ÒˆŸŸWƒ2´æÃ2¼³ù°¬få’Ë@Î}åˆÐˆjÐ/PÐ?Éý"}4ôKG„Uƒ~™‚~6ô+ôs¹ ¯@s h¿ïzA íÈ1‘™H mªªî!ßÔ5?0D¤²9“|´«áòuN›TƒÎcu’-Éòdá,L  Y…,a§O x*~•C· Û®õ Ïè¥:ìÓRÕÃåI€Ÿ‰Ÿ59°‰@kxFø½cA«Ô,ªcu,ä%Hèót>’Xú/Eðѱ²3Ž>;VvÖŸ+;ëžÏÇÏz~vßrº6’r°*$«‹xø0lËHqí˜T3Åc‹ÐÊÇóa;OäÃ2Þ̇eŒz!–)²Sù°_….–©2Mè"[RH­4Ã]—*hÿ×Äë\.(Ãúb.(®—²@èˆ /ç‚2^‘2Ám½‹ÚÁ¨eö…"Ð ÷‹@³ú}IPÁ4èäø5©ñ÷eéÈævo½ÌZ2Î%ù¾"@AzûÈ †5£ÝFióñÕBà¬Öç ³j¿Vœ©×Û&÷P*šéÀ±?çJ"1]&Ê{ñóé,iõµ?ŸÏÊ0Êäa‘&qìiî÷…a•å†Q+²^$]àACY`|˜({˜l°0†ÄÁn ¹#èI@‚~#4# úç#JG¦¿tW –™¾)I+â¿”ƒ¤›ö¯„1?îsí¯ã'5/m£•¼üAMÙ†Ó]$ë+0?n 0'h[ ã z­DD¾%Ø #± ø÷ t‘ßN¡¾-Œ†ŠÿŽ0Sð]óŒ–Íàþ!~ÒÉ€´ÏôB ¥œy òOB Å áÿ® —F!«u¬}šï{r"ÒÚöC¼_N¡þ9~‘B1u–¶æþEๅˆ*1(ø¿ Ý'§V2û7g£ ù}Á¨P(ü‘ë»~¬ué~(HGÄòQ¸ 5Rü?ŽŸ&`¼ˆÿ$~Rß<òòéÛŸ ¥Do‰-Ö·Q"Ò?‹ŸO00"ûíXšƒvZÜ~.0Ù·2YÿEü¤æo[ ¿ä+îrà©)ìWñ“FüAŸ(4úú×ËA„8w›ÂýFYD8© þVÐp´—Ë:âïâ'eí!°ën;îžÔ,ø}üüCüœªAú@ÝGï ÓFõw©ép3bã³ÙKîGskFÀûd,„4æ°Uëd𻟔p€Òq(Õ›‘@ß#iú®U†8:Œh ówtžd±à_fš9”råŠïhWh½fR¤‰û³4nf 7[Z4¤ûz³Õôç –›Û'›ý®ÞÙ¢_àÏÊ­3¬ò33B=guêƒl˜Zï¹f(Aõ¸ˆ¸ö2긚3%§"eFq"ªÁ°N‚„Ï<Ê¢\/Zôó|Ñ.‰+Ô-þZD I¨`íYŸÆ’t{FÚÔõX^QÈÞ˜N§¶âøU,¦Ûƒ?ÒDêÒ9¹Ê7Ïœ£éÇ$d™0(8aЫN Jw¿´à ùHŠ>*m[ ˆÚó¡%v²È ?NŽvî´¦´Ûž´wÊôâÏ$꣩éYÁéÖýAEªîÈÒe…ôÂI‹Šä*“êÛC*†‰ 7üÌ&ª‹Ý@oÑ‚©Ÿûu2*{®-´ÚI¾.I{‡kŠG’RA ”.x&£àܱä¡4So˜ÃÒÚ+ÂûGÓhCОj~ô3òû ñ÷…÷œ½aºµ½ËFeDlÊàNPd‚Ò•Éa…Ø®ÛWŒZúº)ìgÑ÷'r¢Ku ÅV¨Äu{¹ x§T›”·Ã8v¡,­t™BJ¬ç«øw*Y]» ýSè&\­‹ô‘¢ˆæÌʔð>Î)Œd’íÞD¥"ÿäZ¤Ä¥ډ͖ÎIŒLj–¹BKã Ç"hœŠ¢:×=)ûzU[8VmÎ5窸Z«UÉïùÙjõØ|Ãc³Z›;sî…ê…×ç«§ð­jsS«¾v¶~~¡º5›OùŽŠrÑ >Êu§˜7õ”÷[Æ|{.Åhÿ þá|8JúÂXl?orHµf+FzF_ÐT~njÚæ-Mß‚/áó (#ò²Í_ȧࢊ}ƒOÙ7 ûÞ·ßdÙ¹SД.Iö€vØ3ÇðªÜ~ÚÈü@/Ç}6È;(-¿ÀxÙ©LZ{¹¡¡—2®&î‹Hg¦ÒèFó$¨U^žuÊÍi^Ðl=Š6×£uu× mú'$ÕŒ!ÞõÙÄz*’Â:?gœÒaTkžÔy¢æ‘ETn‘JqˬGBg^ ‡{8‹Ø2Œa†?è¤y¢W wêиn=™Õ‡"žÏd‹y5WÌ!F—)8ž$2ÊÃU Yîȳ™2jÖÉ? ÿŒŠ3>LO&Ïø¢!;Ên¯³™`E‹ÒŒgé—¹LMWÝ|¹öW2òùLÅX:ð2êUs{Dbþ¿¶Ås"âg8µÂ¨qû…œ®Ï?˜ 8›guPþ•Œ!{Ì1uŠä>À‘;Uj‹hÁûʡϊ¢ÅòÿXƒçS™äÜõa“­L$´ hÿ]1ïÄ¿Áˆ? ÈŒ@)]ûZŠ1EGë#ò2É °Gf^JššÚ«ËÄ4GÒ8£šqš­8<œþª‚j¡?nõÍxj´;äÅÛ é༾pyǘá‘Þ'¦€"¢À™^ßc¢ ‘¾àÚH×Îkͺ®ížƒ-§ãbÛíbäy®‡«‡Â? ÇÄ0Ú€ý‰ÛîÀ °iy8´Ì¢¿K¤·ö}dF? 8Ø«ìÑ'I ˆà€¬ ±®F¯¯ë Í«ÀA…Š ƒX¼\¡N–mPK8®IÊ-8‹)vD(„uͤ•~Šk‡6CõIyŒÍFË%LÜ! lï™ÀH°;PŒö­oúÝ-ß6»ƒ-ËÄ>˜1qZÈY“ Çøëm˶qõ\oxÇYmìÀlö†Õ¾=Ç¿ý°w<ò˜œÏqUî"Ÿ“T|>ÍñùXjɘ÷–$m_’ö/’´•¤}XQh“ï¦)¡§¶¨*[“ÐwÎná“øÜ9|®yF×ËÄ"%^ÐfÙ=…¥ðÅŠ´ß.Ìǧyž(È·os¹¨á:¥'›{”#çuqõº¬ãC5=¯´Z¨©žÉ!LåÑmÖæ¶¢^ôbíÕ-üâfkßÁ6õ|ÃíK*¡{S–ó|ö3Öbk (KJMMs#Rø™Ô¾-ÐVcØ ßÞ—^C#Ÿ*w ÍöýrB’êܳœhÚŸnēljâH{€m`Ð?©¥ù2³ Ú“ÆZU±D4)—î•FÒ…ò¢ ½×ûC‘ÎËE ¾“¤œu¶8GSöxZA“ü¨Ék\ FÚµ|¼¯«”ï¿ ¬ÿ4˜5V0«ÌÈ’9a‘2SêødÎ$ôÈ‹Ôö9ÅRÚÀe©¶{b·Fžª†·É}èÒK¿Td2±PƒNžY¥M]•|VƦEZU™rI’&óA–$i Iš[†d©¬Í_™?MéLy…gÞå.|(MFzû _…Ü®¨2¯ó™eÎÈ’´RVíX[š ®É“²u¨è˜eØ=› ›Öš-+\NÔFn'±ê¨á72M•áÉzÍr°Ûѧ‰œjõS§pþ‰òbÛíZí$:“_Õkód^vþ–>¥eŒ|)ÿ› à̾0_%ñ–ÕS5üxVw'¨nÍF’Ô¿öT)èæ™ù2Ðse k¥(9WŽî[¥èÆe _½ ô… å  xAh*'ZÑ2]òDfq!{*-d¯¿³¿e{–jþŽBè!t…¦ªQ º îSUÚpÌERèæ-zßõ2 qø.Ž¥Ð¹Ê#FRœãÿQIsœ ¼‡l#Z쫦eöB)è׫¥pWc®ÎÕw ’13?÷(ôÞ¢ñÁ°ZÍ þX)èyÊÆ‚¸cÆÎe 9J xßuŠ3æÒŒ9G[Õ´v-2Ç›Iü ºçš{àW3¡›g(ôÀ¬¾ £b– ‡ž£ÊÚŒ6ófâ®Qùò-²<’e‹ÀÂ`Œ#«]œ#{ŠíœËÇ>¶S§ò§peL[ócqbÉLe ÖêŒÌcºÅ€>窰ÃTÎñâÒ“¤îþ»ãòmÜ¡8ÛIFêPÀ4UæDŽÓËŸ3¤’!.Ί…’¦W·“…µ×¹sÓ+á3•qŽºO·´Çôú™“MgAœaçcòwPË€‰ïŒ¹¯ÂÕ)|°×¬Lš­èTžiœÞs?GÛÊØ2ÝâǾ¨p?Ìᾟáî¸ÞäȭȵWÉ#kTèãÐ? ‡13{úHöÏrØ?ǰkä¨vˆ6[l¥ýùçåHΑ÷9EeÂÒ¦UÈãŠÖ¼aRÆEį$+àÁЬû‚8Eg>M§Y…X…§S·D%OÜ'o¹À¤ZŽ»Gì[£g×[®k#&"½â ’¤jƒƒã¹È <¶„2g`Û£Šiãq$ç“ œPk"sT8G1`["€+ÆJ‚ç)5A†Ãc(3˜$¥9h/)í¨ &Ìö(5¡d!Ô¯IÒ¾ZFvòÃæ‡$Eܤ­IÒ6$iëeÈSƦ ÌöÄZŒcÿ~V£¥Hÿ™"ýÛŠôï(Ò—髊ô·éÿ¬Hÿ"}Q‘þ-EúÔ6ØÐnÀÂò¡q×6ÖÎ*î£ÛP󘔌iÎêˆ8~œÓ)¤«¼ø¥½© k&t¼¥óót&dŠå”aXa‰|G}ªÌ"›·e~<™=0>yk а`F5­±¯þ}΋-Ýï^:vrŸ¢#q«'^2=Í}ÿEÃ~£"%™á¦;3ò"ÜE0N¢–*pü.q§,¨þó•B¬²ûþ\’v+ƒUé´­J 6Mã [6¹Ò§~Eiy›îŽI¢ïÊ6ežþáNOd³€Šd$/¢¦UU[’f”‘ÜÇ¥’«‹gÄÍ/`èÃZ¼*ª–ÞNXÔóø{Eú´<’ëŠô)ÒËz0ï*ÒÿXžÍß)Òÿ!GöKKèC‰„n¾vGonmaM<  J%-?T¤_V¤ÿF‘®r'lEº5žÍ9_´]¢Œƒ%ùùf“nù±×¼M¢ÜÌI•Û$…ïLZ¸t˜;ɥȸûDEÑdíq+>öR̓cUõß>kÙKþ›uòÐç>6žä8ñqÜÚpX”Ò.—baÁ˜®Õ”×™šŠzyîN¸‰½¬¢c_þ2ù2õ|’ÕS£ú-¼Â ôè5†FµOÿ©Ìito>iÒðB9lùk€<Ë¿­Úž?¶WÔÏ;Òà®Ȩ±èŸžáÉØrùÖ㑱ek¼#ïd¶Ýž$mW¥ºÊì.ã–î$“¿ìºÍ¤ß³ƒâƒYœ…Á*÷ÃŽ=WÅÊ —ªÝõ¹*iqý\OFÞ~¥¥r‚ƒãîæyfSŸbb÷ús¥h̺@+ëÜúÈÖÈ=·þheÜ Ý­›’ ÍWXùú²:v³¯4R•WòJ#§ ÙÙßd÷™}:Et—§ˆ¤k^ˆ;ÅY cÓ ”s§’Õ]ÏíAêÁT¤›Ÿ>¾•ß7¾=u¶§6¬ŸÆÇKîŸ^¦ä/3¤%öÍJ ’ïæ,Ù®ôOgÉÊÏ’}3O*¥³dQ¿ø¨7´$ËÆ£òÇè¿…äÿ•$M6ü9AQ c$k«mIZ“+ü(+\‹Ðáx݆ _ŸH¿å4 7xSôÙÑóù'öÉ.·²%Q€¼Å'…«Â)¨G®^7¼·Û—¬_gªƒ­ºeмöHím—¥CzF‰+„äñ¤nZv,_ráñ(¨Äâ#»S ,µž˜ã'3GÁsŒ×ai캗ϋ…¦B%SX¸¦5ŽsUøI“¶ oÃê!w@zSÛ5ѵåäÛ’ ýÅFÆÈ¡/Ù·ÔK¿môF0yŽ-ÿ2Ù5ƒàËŠ±‚A<}tÙv úº à> h™aÃãa€æ‰V‹§!ŒÜ#QÙ\eOäöTÖH3IYêI®T:«Ã?¶ôB¥Äà ê£Ñ"çb6/’÷08=/î“÷ŒZˆ¨kÍ‹žÀ77rÐÃÈY¡ <«]ßAû|b­À•aU”QÍ)Ãm†° áx²›ßÒgYYúÂltîg³õ")å%˜`ªŠ²Þ1¼aæØ—å`a¹TÂ',BÈÁž³äWób|„áÁ†êÝzµþꫯF1´8Ä’yH$ÀgÃ/U׫F9u …§%Æ,\”æ^zù•³ÕF ³#ý‹v”»_Ÿ–µž¶ì„Ûã†úh´ot‹†—Ò«Ü€öóBCn4ת±èbÜ»ç?ª™I‘ôbÇ8ÖÉ”w´¨bzÞÊR(«R4¼¿÷ŸãµF*1S3ÎÔ3É3‡îÁ¦8T® UË©HÕ¾z@$·¥Úld– Ô ÷ªmÂqÉ ܳ¡ÁÚwM ´ˆ4˜ËÐ[ðbp­A€´ðëôÛжºŽw _[Ú±l“¤ûø22‚‡tì°¬mÍÖÈet.8רAa~jýO[Ò¢3ð¥ÅÅõ(¾‰ðJWohW öˆ’_v] ï’Û —=#<È _.‹ƒJ,Ç[ÎކÆJÖPyà‹" —@ëIE€†Àh-;&ÚÇ–æK µ5w_D×Cx Ù6&l0ÔÓ1Ìo9àòÚ¨&`KHI su€P‡‘SÍvôlh¦‰û€ÆŒÁNc@&l£ÒopÏÝE©&ˆ^44E¥›ªUUó/ÃT¼atÉSLJ˦.iÊ–=ðFDî°JäL·—%n/râ–ïYGfÞ¤žõKe57hý7¥ÝA8q¾ L%1Ú˜ïmµ«À¥èN‡èˆ{ð¶r Dµ©¸Ãa’EbJÒ¾W¦ äÓgJ­eJ)ÞÔR«¸ÝBy>ÆÇl¤+ªF®o ?©³X–ó¸ö2“ÜzõÒvÑpá»îÊ}Ìå§{ -㘶]ý²ÐÑçø”Ky¥"³´æ¦®©ªŒŽ‰r˹¹•Z4¨r¢òê0ìµ`‚ƒÖAåZ)šH,ôd¡ÂR7 M%òt&L¿PFueoþ-q;H¦Æ¸»—m”aüi€dßövè@oo™º AùNžL)¥Î ›Å%- ;`F²Æð¹lÚ¸¥Æá§ÈbÂéÆ<0MÝfŒ‹eK&ð\R?zµ.¥†«Ú}‡Ø ík;d.hƒyoÙalVbcc˜µAÍã\sÌÖ{`Q[ïƒïÓøÞ÷QÛêXÜ-ìÜ`‹G6<ñG©…?ˆQëµÁ9Ñü~x˸ôï ¬]ܳ/»ž™ÉIšØ0Áû"xG#â@²9š«­!Ÿ”„¼Ñ|YÏë;ޝ0ø±e Rƒ¿Fú³ŽozF_'ÎʺÕ"5Àa&¨™Æœ£ÕN£öm žLrà)0\âȸÚm êoA€ÿ¢áGøÊÖû†ƒ é=¨°¼(µMʺNÎ%\³5˜«#w´G4Sÿ$Ð¥]Ó2¬À†zÄ®¸%1™b!ò`,Í¿fôqÈW÷´~äR‘{ÖE>¸-®âL3ê•á°Ù¡  ÝÌÄmk¤ƒá¦A]±ža9¤)H´áŽs|d¢^[GQ[‚Çq+â0”i"“‚˜øM"ûàÅ‚s½L˜ hCWуF oïõ «v-wàÇÍ¢“BŒrÀïÒ#²È¯Xj@6ÂúBáZÜW-ç6^´­.~cí*my~yf®×Ó|âçAVr*½v,W˜Ú¡Ú³Ì`Úr‡ ÐäÝK0›‰÷Ö‰˜ÅM Óú¤¦šÓÞq=¼BßèàÆ’M5lìËùàY‚oêC!Éó´ö޵ µ0 Jû–ÑÞjyä•»GE*ê/x` ¤íbð—=hpmÍUÐ\@JO‹NºE$$°ã’»ê =Ë·7ìH7I¡˜«ÈéÂp)¡L輄À‘Ûd«câî’kƒë£Gì„gc7sôįB‘_ª<Í>_®(FÚ+ãZc¨2q¾R‘"Ÿ`sûØ5ªÕJž]œ¸eìZ乿ܨHÊØ;´o”9ä<)ŠútÇÀ†˜×Ëܲpðžc[ÎZ'ÿD›oß'+y÷1:psüÚLr_‚冼¯(°‡É àvð®k™oÛo[ðô¯–|UÞ½ ïÃPá=_Éø¨¼‹«Â{6íyÐê¢ý~ÖõÐlyÔ9ð™»Vo8Hí¸+Û>&¶q¼v5øQqn¾RBóKœ>7åÀÄOËP”³c¿Ðbjݱ‰`gqó]+æø÷™ G4jNf[Üµí …Fù=Æã_6)vÁ)þél,¿PQôû¿Q¤sd%»ƒÏݛΙ»?çþt¢Ú[Ð<·1Ae9„»àêëÅON´ûáåÐB¶†—ÏÇ{y læU•Ô±Ãã%ÆÚË[Œ©Ó§=à ÀÛ…:§bÚò™.¶÷éòK¨2¾~`öIšå¤¨²Xßoƒ 4ôÜh9iêîòT{72m³iµÎbíòVò d©RÈúÈåªjZÊXÜ|Áì•MÔt»(JSm)öý&}ÅH LE5®6®5V6¶WV/5ðâÆÆÚòÅèçFã­øÅ™¸Ý^o,m,¯®DIiyãííµÆåÆZce©Á¥†ß¯¯­.5Ö×—WÞØ^^YßX»‘ʽ´z-)ȸ´ºt#I`¿6Þ¾Þ’.¯-¾‘@®¬n,&X—W.5ÞÚ^_þzc»±¶y®A±¤|–te¹±¶¸¶t…þÕõ0¸¹¶ p¬’º¼òµÅ«Ë—¶—®,®-.m4ÖÂÔ•Õí‹W¯®Þl\¢i×V/-_^^ŠˆáßÍ«7V’_ë7®__]Ûˆß/¯ÜXol'œ‡´Ù±çÿJiŸÌsãÖ ~>n“˜ ã;·íÑ-˜"‚oØ\lv!œMõjˆÙ@@…JpÇÇ;AÐÿø0³!,Cé€aeHÖã÷ÈFö ™ñ7IGƒ/}&TáwGï¶£µä5zuÁ ÿƒ!x6–w{ø}Ûj¥ªÿ¤PýðòèÌ€†¯ýO“ÚÇ5%S¶áò5Ãkï@Ô¨»KêܱºäáD¡'äìBt µÉ[òå:©Ú·‚%R/†ka‰¸o™dî>è@üªf#¸ó¨GÀ.øKV±aÜm7Ž*ÅOˆ¤-4[¬›«¦užj†«ãk\«ÉWÊ•+$ÙË¶Úø8jÊ_š "Ñ82„m¢¨&YæObn¡Â7à‚^€ ÏfP ÀÔ× f–‘¬Õ#3϶Û2lüÆÕÕ‹‹W!íx{Û´¼°ÞÛÛ”ú¨É#+kT’sÆùÙBnÐúk0£‚p²k}3ûќɵe}¡áy®—¡Ò£Ââ‹z>)ʤ{–cº{Ø1v­.‘ÉŽ2Y/,?Lp_ŒFÉí=+ ƒã:ò@sãëTbÝ%a¼Ö¸~5N^ƒ!n=Øn—0þ?–YtŠ/¡èÿ^3öhùúÆ×­>~ã†ó><¢¿ Kîëâ¸Äi‹ÿÚ² Regular Expressions (Javascript)source.regexp.jsöxÚÍVënÓ0nÚîÖ]`¿@cHcC"Þˆ5 „ª!Ä ð‰º›¼Ô½°áÇÙ†–½ гØizw)ôÇ,ÕG=>×Ïçg£’®]M÷(ø‰ß§‚ú’ Ï?§aèuXwÀr Ž·+ãëјfOÑÐS:LŒ‹;š>./2_ÕtQÓ““ŸtÀÍiMÓ¥ì4”THs\Ê”ûý@˜Ó |Jý3ÁºÛ@馌m ½U,–KÊh,Ã+#¶¢éÃ1±Is lŸUà22Aå‚5`ãWD¹t,“X×tÜ2é\AÎ%dŸ ²Ç!“X°»VrjùÂ1q»¤2!¸3ÔÓtq_F4Á ™pŸº® ‰+xo·ë‰¡y…ncgÇ%¤uù-üÚùÜŽ FqÊr[Rð‹îa;ö[GÞ÷v|Õ"êu¼/íë×7q”ûûæ&Æ5ñælÐ@qPîå=¦pê «Œ­wål±Ð§C†“F £¯ÍÖ€µ}h-³c³°0×xÿ;žZ^ý‰i,&)¾íBœ5kAqW‹‹Ý]Ü{Ó‹;u=¥¤W½ÍÉÀïc¸p9À×4 É0ˆ„oÊÿó2öåäÒ‡OËÔðÆ†¨êðÓOª»còÜ<ÕôŒý¾ D«”"8ÇéKd®£VÊÏúÈÏ+ï}»u¨¶}xÆQÚ0I]{êMc‚ñ »»ªÅÝhpͧAs¼Í¼˜YHHéiøï ^ò•¬ZÈ%Ǩ™IVçþ@åŒìÀËÔÏ6æ¬GÁØ)ªÝJéÚÝÌt‘ë’æG«ýY®ûësêþòØš£Ûá6>‚3öíh½ºåÃè¥È^0o€ dgæa@þ€JÒ øBhpUxª3d$ØyV‹ò›6s“óeËü^°ð-üu ÍÂ_±ðþ’…¿\ön :$6ì-[óÎ:ï_deÓŒÉ>iªý@í(&×.é¼T¿8¡É†ÈÑݵù}ÜÅñ3³OÓBibTeXbib text.bibtexBxÚíX[SÓ@NZ®" Ž·ÑAE ¼?1Ôñ'ø&Î6]ë馿‚V†ÿî6Ù“n6Ù$vèø ûrÚæËžï|ç² Z²nsûQvˆÐÎᦖ]˜×€ÑÕ˜7€i¨1oÓTcÞfNy˜y5æ`Ô˜€Yäö~Cqâ^§ë#¡–¸}¡Oh¿ãx4Ä4œ —ë SoI¤;1Qxº"Ñí°}nJÂcÂ6ïc¯JŠ;¯I˜LèZ—ÀÙ u‡Û ©fžpëxƒƒ[.¡ØBa+ }juI7Ä¿4á]¬I ¼mÓãôdž¸û  ‡ÈJˆµ1¦s•„Qà¤!:/öU Ñ¥Þ€ï·Ãˆ:a„BâQ+ÀNb%ç˜ö¸ç”ð8Y.Øz·,!ò™tßq@êGcþËh‰Ñ0êþèú“±]B?q)‘Ž×]nÔúý©õõtß´ƒ=Ã>šèÕ}œ©+¢?"u‹uŽG’xc§"Ë& =ü^ë¹DÑ…Ê—'bŽH¬îxŒ»)n¯¼¾MQ<bÆñÑÉÁÕ©™ï*UZÅßW%B›ùtϦdÿ›œ/Ì*çæuåüž4×»®çœW ôù •¶™+€\ʧ »9èáo„’øcß÷¢aÕH[Wœc¼xô¼¨ë⪠—O+5s£œ9wþ—Ô· ©{¬;}õXnN©ýTdvhǧÜÊZ†ô,⺸\ùöÐ,Ó ¨¬tE‰¯)B‚ûsô­zuöŠVƒY¼ vo~˜6?—i4À>q2RÔ ¯‹#FœíÏI;W¦ùUyšÓ©P:å²ë9TÑ6¿Äe’ŒéËØÀìÞ› í9ÅІS‚ÉŸž•ž»ŽïЏ`Ëäå¦ôòaÉñ”sûJXþ¹@>AãùÂ{µTL½–˜Æ˜uÄÌI[‚˜Ò‚ç™ÔQóY¡šñÕ¥ކxBî”Éïæ%òAì I‘EÑ[1Ó„ôä"¤’²YWJãFÊ )ç3RÂ?9kÛô´òàYÔê<éiYy ˜åj&7-Q»¥2vS^¦öÊÉñ«HvËÚ”ú\ø‘öõÃóf LaTeX Logtext.log.latex"This is (pdf|pdfe)?TeXk?, Version )xÚ­TAoÓ0NZÆ @qšR–)fp#BÜ@âÄ Ôt•›8©5ÇŽÓ-Ò~'~ß÷ìÏ~oÏiÇc…‡2ºÈ!¦‹“·Îöˆù¤c\…÷.6ëzu¢p¿[-äB/OÞShRõ¿=+Ñ+‹„e€@.Àª.VˆBu ÆÄ<‡Þ…Í¢ùû£.εRhMUŒ 6 És,VäJlôn"*°¨ÁæèFoF£1u†ki6ÏÍ~z¶OJM±í³ë\7\CÛ®Ž&jV™áÿäT^D¨ž+Ät Nä•ÅR$q¦;×3; ç~%~ü[ ÿ;çŒ_žôO-LÊ 1Øû;’ï¨ÖÄW\ì;&¥f¿`‹º@2–å?Í4ÿÍfMé§8«8¼b².ì&eËô¥ch<è4~Ò”õ¾V³<—B`IX|WÍ'Uùÿæ(´ý´úeŠ/rdÐu˜÷kxZrù›&íìåX%l®A}½¾A7jPK”a:\²æ6º$ÿ>ÐbLaTeXtexltxtext.tex.latexàxÚí]‡ŸÅõ×ݹ€l° ¸œq;‘B1ÍŽ–J„Ó+iïNÜjW¬V¶¯Iï!½WÒ{H%„’ „ôüÒ“å7³»óvf4e¥ÓžW¾Õçc¯nö«Ù÷Þ÷Í›>û¿BøÙ]w¶cßm¸®±Xj¹¦Ñ¬ZæÝì(°%úB‚I‚¾ˆ G“ /&è±$è½* ú‚^})A¯I‚¾Œ ×&A_NÐ'E×õ ºŠ`¦³rrt=‡CÍ5ì’i×K5§Ù4ìz;þźèºý…åÔJMÛ‘§èÀö©:$0}wΓq½Ï|Ž;]:#ºžÇ€æLÛt «ä´¼†c£/†;×iš¶G Jô=‹ý¥åT¾ê5Z«œLØ5Zó…;SˆkØ5«S§ó;‹Ë—ଆmrLnÒBÁ¬›µP0î¡q­F›6ÑÙ <ôw®\n匂šFÍuºÙ&,a–BmW¡@ƒB³a{u=vœ+4´a{1f§¤ÇÅÖcâè± ïGõX øcZ3ôãZ(8Ã'´Pð…Oj¡à ŸÒBÁ>­…‚#<$®uºfy>£Æ«ŸUã€ÑÏ©qÀæç…u˜kΚ®i3ç_Ð!AÆ/ê å—tHóË:$8ÒW„š·ÍžN ôùjtÝÌà<óˆWª›5Ç5<Ç¥à_K|= ñDp°Æ7ÁÁ$'‚CùúV"8”±oGWv8åéVcë}GH Æ^£ã¾]ÉßÝh(¿a“»ß‹®kánÛ3\Üþ~t%3xdâˆÜ$º®çî‡3õƒ.=OHP?ä çÉÝqÞÚ=/H?Ž®dv0ž»#ˆŸDW2CL¢‘›r*G-O¸ÿÓèJ¦g]$¦×ð¬8‹ŸqÔù7^ÒÇ¢ë]8±@=óñèzìžÐ#¿x"º’QDf"€žäT%xäþϹûdâŽÜÿg jj@~É™:˜ã"7Ź9=·E0¿æ¼"œ­"w]WÁÝØµŸâ¤£f°äé.Yߣ\üþøÞoyá‚ιû,çˆq× ~Ç9µœÏßsT´ŒÚ‚1kòþ~Ô #÷ÿÈÉw©âOœ¹¨º—@þ]ÉL}ËBæ.¡(Fá¥àŠø_ù \Çs¼Åþ3®âoÜ#H-Dîÿ{DÛs;5¯ãÂ#þ]ɤ;„ 쟜ktìÆ}³d”ºÿŠ®dGǵȭs^ƒã2¹÷N³ÉýÿF×ÿÄŸ‘Âo/XvÂüQ9FÖ®é¾VÇFÆ0°ÅÊus¶a7‚¯s®Ói•ƒ²QF!µhf3)ÁGi’3™ÞE1Ð(Ïâìq†-ÃEA%«Ó´£ìÒTŸQ²Wø¼ª9ë¸fô<̦¥èªå2Ùã”–túc’ô_sVÙ#TÙ˜õLwEiŒÃg®ñ°k\à4/J4o›®WrÍ–iàJ³ætl/G¤õ3ù£RßOB˜–UÙFÕ«Û¨•æ(•{øk™Rƒ´êeúYk KŽûGÉ·ý ´xB¹ÊÉu ÚàmN*èc;ï}H­²¬ ãÈ\‚Í–Vªðg+ýPÔBl¸Ž[gå {¡/öL «Ù&&*•"z`q¢r´8䄾+BF«9Ã~F»Ój9®[¤'KÉÌÅÃŽ[/cs¸ŽUžµœÃ1j”˯ÚNUÔ¨m[F{>üõ÷ëþµm£_ij¤gT5‹DAÌׂéõ¨!éï¡òU™) œ®»“èjJcå­Þȹ¢øQiONT„—„qU¡ pD’8ûfa­…:a=ºvšMƧ's=Æé)[è§Ä–OÁV ižé¹`à‡ ¸oð$-Yf?}méN£t¥uô¦ú±ÒÌäÄÔU(øT®*‰Çå…5ÊmÂMbš.'»„¾Æ’AÛúÙú‰Ñƒz|À  ¤¯ÑÃáçþÚ, íqm±lmÚm4~?š KI¬ÑýããèØ¼¾I4@¥Ú´—Ð@+'¥»d*âÁõrÃ3›ûõE+oŸ [ûŒá{”~`ãQ(³ÜNxOWzBø_î'¸ìS:šc¯¹V,Wî '°/ôß#šé-qÃÖ6GKbN UÅóYxòµcƒµ1%§e‹ N ­‡ WýŒ$u…`²£.ØÑ«°Yb$f0žX(˜‹©ó0ø»?Q¹£XìO¨®¾´P9Úo¨@¨\=ÖHTä‚­ó;J•:þhœFÖ‘݉#4°D“½!»Õòk•ý•ý9éCBúåT™À~HDúõ4égӤ׳³9ßCÂ÷ ©´Ó¸ªˆáûEÒB>çøsŽeØs9éCBú‹©4²Rûé/¡IßA“>o´LËòçÛ9ëCÂúK©4²ßj£ˆõ]ÒÐ~¯qÈÈù¾wSi¤~£ˆï=4ßçñ|‡ã1þ½yAâ÷RidTìAñûä½íØ9ßCÂ÷•FF0Oñ],ÈÚp(w?xFNú>)H{JDú~i!Gî­œï!áû|*dvŠˆï2Í÷†ïNÞxºŸK¥‘&ÙÝÐtï¥évª÷NLÄ›™•’_ÌG^‡…ü ©42¸jŠÈ¿ˆ&RI~> ;Dp1•FÔzX䤕;šh³r¾‡„ïK¨4Røoñ}©´roÍçm¹a¡û2*ˆtTD÷4ÝL‡­µèÍ;¶ßZÌIÒRi¤Þþ¾ˆôçѤ3sçnNö}%•v ®²¯’Vàn§šîaáûj*|¿GÄ÷Í÷.šïö¼ßžÇSjU£=?ž3?$Ì_C¥‘Sî…è×ÒÌ3õö}–ß\Äÿ×ëè_3o· ù×Qi„_áÈû Ò0¿hä| ßϧÒÈÚˆý"¾_PP}˜…Ÿc}‘½S†6›U³^G°Z$'쵎‹¬S™Þ¶8r2¸å1ì‡âåò£ËâXZVF%ædÕ «˜&¦®MŠƒ4ýn­éñ´yˆ=“µ~p#'`‰œ§' Ú¼3;7þ2x›Ô¼÷ã9K$`–€ð0«à²îõX†Ôœ„ôKž\–‚àFN@HÜ¥'±Õã9;y5¾ eMbÖ„e(¸‘°Dö&"`ÿþ½©›t+'!õR€gr…¥ ¸‘z-€¦V…µN?AÌŸ–é zp¦ËCDzÄïp–X¿£[9 K$A?ç âÜÜôéWxUXu7r–H€~("˜Ñ Ág± „wr R¯‚Ѽ¢° Æé¹ù‡"Œá9Ba nä$¦N>Ò@H@p#'`‰è'tæá„JοDãïÓ?ÚëÏÎ(D {CNÃÒNFŸ-ô°Âƒy EøÓü=Çÿº'h²N…ã©€ž±eñÑeYRC{m‹©4å1O¯¢¶‘1sÌÓJ2^JS—dÓÆ[OŽKZIvkSiÊc‡<©Ó±Ç­$ãu¨4åñ=‡hãI;¾g%Yï0•¦<ç&i‘…cpV’Ýn¦Ò”ÇÉÜBÛm3o7ö8™•dÀ—SiÊcY^!wÑŽLê6ðù}jÉù Þ`muš¶·Ø2»—Ã/Û»ÈÙ»ÌzžQíX†Ûc Ñ’o;„æmQj·Ì(ô7Ü<\4&y?ïo£=é›PhÕ[ªe†$Ã2íÊJ[2íµ/ß&ËÊØýQÁðzÌ·umO%-5§\™-´$±j9µ…bØuš8lNÊ]‘CE¹Tª€•xô„ÚD0ÄÈ’Õ8X+wEü ÅG4Œàª5*jècÎT¯ ý8•¦<Èâ¢ÒB‹ ÇY¤-ò'©4åñŸ¢EÞÒ-2µŸ?m™?M¥)÷Ï?$*Ï”ÌÁ.ú´¥}-•¦Üµþ:SÄ[ˆÓùõ‚4á–Ý7h lÜM[Ú7Riʲo¢¥=C m'}ox3•¦ÜžúiƒmiKûV*M¹ ïmÓâÍxi û*M¹ùíš‚oK[ä©4å–³wÔu››º¨ï¦Ò”½Þ£qÜ`»WÚÒ¾—JSn¯z-íÖni¹MViËý~*M¹©é´Ü;rwmmJ[ôQiÊ­DÖ8H°¡(mi?B¥)7ð|´ ûˆá?ƃR^È5t}è>—`g=ëR¬¾tOqãØÐ ÷µ;cZ¦¼4+##7Œ·¶\Óhâ…ºSë`]kh,£­/<Ù˜òýlAù•R•Úê)]•QâHCrúÚÒFéþJëèMõc¥¢“h¸Š¶ûX·´´¶ Ñi›-4”ÅÔíÙ&ÿó=ŸLç1?HÒ‚ÏébWšLìK¸•V0^'ØðŒx1ûıâ“h< ÚICdQ„ˆº tE¥|ð¹“;ﺻ4³¿»]m·=U-Ž7Fq9 Ò Û„6qÍYÓ5íÚДÿ/÷à‰T^N?Ø.öž„tál¡U,£jZièLÚ?¨ºmx‹eÍ`0KWÙ ´²m“š4áÍAËÇ—1òËV¿’œ·É3›­yV+À…ý#h¬FÁeH©s„JáÝþ n}ê9BµXäP(VUòUu¬:‡ µ<Ž¯Í¬Z¸›Î†B«¶•Ô cdã?™²¶¸nîØu4 k¥xœ5xŒêÂgHC鈬•ˆG¬F¸µÇÕh÷¾Ö™©%'‰®ïÕœ¸1°Kd¿à7T p/ñášÅAX+sÕG’8AϨb Á‘óÌØ#{h„ü#jö¯°ä –V䌚wT<«Î‘R˜;%»hŠL¤Ï#Œ>ëˆ W‡áð¨þÕZûe’5ì¶éz¥ª9ë¸&#àè@"—L£Q±FW&ÖhR£‘1‹¢á2*4Vz¸ÏWŸàohÊÔð·Œ÷`AKÔ.ª±në\3¾©§ÙN»Õµ#)ó¬ó½3±F»’h´š¬f4‰Ï!žL¬Ê^ëºfË4à]s£œK1› d?Eöè ˜ƒUM¡‡¨ÏÔãÌ^ëàIárÞYÜtI¶’w«Ìr”àã\AËÛuŠCVE ŸÜ ÃLß)f8(‡Qù˜œJÚ|ω^¢×1ìî Écz]½Q—¯¶mcIË $"WvWvÂrÏÅ{.¦nÓð"[ÕÂE¿JÒî>…‘º9•Jeº¸ìœÊó,fêHq @¡Výºñq4H7gûÁÿ†^Í:¹¢”z£Ý²ŒE,.Bûæ}¶áºÆ"úŠêÏZasÖ+º˜u Æ?ò›ËÃ<ÿÈÔò”eÃÈz©£š¼a¶ýzà~=|B½Ýi·o¬Ãe±˜ÇÑ ÅÑÓ =T˜LCxs§ç5ggP?±«!);Ù]jQ&ÙáLf¶õŒ­¶Ò¦@…1h"=P±YÀ×bQp†Êr„޶´*Ϥ="Hû=£òzZåpˆ +J®zB%õŠŸN+î¶™!ÕEüžÑ—šL$èׄm‡Š)2AyA3œ–öªÊ“òã«Àlñ$ÇWñq¶Ëð|Y¬$ˆ¡éÙ{VãÐhF\ „K¹®é^Òeü`µ³A¦e öû£@«Óó+Ç „á{µøP5Všš˜¥ÍLÆ |)§ {™Ûæ`-LmÕï5\½Ûæáx°Œ÷ºË“2·`z‘ç0ùñ~ص&Çî4ƒuæÌ¯x¿#óXì3ó“ÕiΘÓû 00Š9M’/è]>u#}CaÉÂ¥5‰°±oÑ6Ó¹a׬NÝœsÖ|£ÖNRÍ)™¼Ò¬òÎ\z•§±3Z„BF¤œ]ÛZ,u_žø‘ÏAYSyWI'‡ùu–[Ëgõbç1aAYþñ€MŒ¤gÒ„›v»ãšø¡ÅD}i $Î(û$nfìALG’‘#­æûbM$ä–^<éÎî¡ f‡WžÙlÜoæc»8›axŸœ@3hò ¬r 3Fá9 …çÉ)Äû¿rö2ÆÞ¹ {E9{u³]s-ü„œÄŒ‘¸µÐC•¹¼½˜m½ˆÆoßçZnÁg‘øh0“‚æ-°¯â êõOtÍâTðŠ€àmì©ë*˜\ Æ¥ÐT p#TxâcœN.î‡Ðeú®ÊÌ ÌB#“똶âÉŸ—¶cÁØsÛžãâ½~M§Þ˜m„t˜%Ï'²l’i ‰KÒƒ^¼Vƒ(k¸<ÔR­åÐýŽ'œÔ¯Eq> ûÉáEVò¶3Åí°¤ÔÜ`Ö,Ã5oD ü›£%a¨Ð °ÌL%+3çËx«‡–p¤«Ö˜£¡»Šâ7ÃW’ö J’BÁ¼P¥Y¨vtWcáG¼˜\TÉ­á*9ø—$ý’ô¿HÒ,IL’þd!«m‡ñB¢­—¨÷Iú?%éKhV"Ü’ôÍ’|ž–¤?*ÉçlIúVIúIú¹’ç>N–Þ ;÷CëÌŠ.ü®'4öìÃáyÓôp4ß´æÇ]»¢Î&¨¾Sõ@úœìUKz¬Ìíwöâö²·$ýN’þÛ~K;³+ŠZ>¾Ä+_?K3w\;ƒ/„û€ÂTc™yñÓ@Æô/è‚2må ÑÇÉqK¥?ÀÍè„ýÌ“$QºßGð޼ák÷Šºz¬bi´wûmÁ®í×LL ö¤[˜ÓÎ ×1žÎ…vú=t”§VýšïAçŽlBo]›ÿôƒ¶ø Á¹Gý¾`rE±“ü-ôÂù…Tláè†ÍA-Ìý†©)9æ}~mª…<ן>tûŒˆp|܉ó19Å)לíÁã2spçnÚ„¥c˜/„- )€ÏT¯3ÔÖšÔy„„x2ïu†á~–— ~¥ÐC™g ŸÖ”ytmwªÅ£œѱèpÄxüß™Ât°v9J¯Í-T]û-\˜z_£[è/|§¢¼|4ÈÙ@W2vƒ†y&‹ô$)ê£ñ›é™É© _<Î~v;ÁºÃ¿ Ç¡uü¤èAœ¤z—30‡?f±q¤=±2Nð`=õ«}{êµtÙö¢ŠMÕb_k ;úЉˆ¾-¼·¶qÄo¹ÁCÝL¶áð,I?@¿Ðª¾–0{ ñQžÉVWKk»ø4Ð,µ¯„í7lƒðÜÏdVØ&³}xh–íðuµª³°9m4Ëvø†ÚÞ üÁø¦ÚmkvhA£çá‚4Fb–#ƒ%'™·Á·l¤m'¤®C|»ÐC»âJ:“¿JÒÿ!Iÿ…$ýï’ô^WÇüW’.[}óoIúÏ%é¿êÁfL[l/íh¨-†;þó¨?ˆýÞ|¸¿5ÝͰÛÕÅ/g@.ºPîWÐKw KO €Ÿf±Å»ùó‹­³²A³ˆïElݱ„H2œÎÊ!ýÙÆ’àð^‚c¢‹iu-„‡`¢SÑx—…Z ù&ŽŒ å—Ððÿ…ÃL¿TeXstyclstext.tex¦xÚÝëSÛ6< ´]é ”Ò2ƵtÃâm_{cÙîv·/»»mw»Å!Sl%ÑaK>ÛI¡ˆý×û>Y¶[¶Èʸé¤H¿÷K?%»•diz v¿Ú«äÇ£<$9…ᨚÎó@°³Pµt^ÏA!ì" ®K鼑õ€¦Jv¹”9‡Í@Ý)es-¼«Ì]†°8½§ÌÝn ÇŸ¤óJ:Ol* î+q[î)h‚w"›8} ð¶AdŠã‡Š 6ñ<ˆ#‰þ¨pŽ£€¸ò\Xp5ø͘ÀŽ„{’Îk8Ìl‘a¸ªh3 <‘§kŠV™HØSâSh–€=Å£w³0òtC‰’¬+72Ñ @ž)¦“ 'p¢æ–bd‹` Áž—ÑRm»]Иáˆ9RÀ¼(#„G - ½TœÊˆÏ‘‰L;JPú‰HtæË˜ú4w•Tÿ\…0!£€à8ØÌ˜É£Þtˆë‚ÀŒàiEbWU²,äÜdí[û5ÅMa <0I4„A†Q~#a;l:°0âËb‡‹Q*Ä|TsV~\µ~L7¦ÄÒt.MÄëBÐm\.ê #ßäáw¹¼›Š¼Yy³Tn§¸o/œ¤,:Rƒÿ,puÄòÍ8b5#nvÿ‰f]Qo§4/2’ü?Ô¼åéô¢R>ÊDªjTÞ,à&C4Œy$Ô­V¦jÆ¿‚ýÊbVºÞΔÈ=8@“-¹²°È"bêuË2ÚÃq‡Ý†6êÖ¹!–J|Ñ„#ß'AT¸pj üþåêöXkº ä¦Qy~1{ æìUf®êÂæ’¹q~U¹J«-,ØNÖiomüUo½c[æaÝr °]Z S¤X>­ÃEcvÏÞ“À1Ó.<‹{>ªŠæÜLŘà,‹TÈëœ}DR¿1ûn© ¥Ï “_à¬Ñ´Ù0HêæÒ¬ÉygR‡niÑ~Œ Eýº ØSƒ:È£ôiÄ C–9tè1[R„ÙË„z|Íô¦ÄqèsÓA‡ŽcÀ1?äÐS£eVOŠWÓxp]ãÁkòÜäe”èÝz‡°?ŠbÑÙ­Òèã`<öt’ok$—˜×#ÿòÄbO/ðXª‡ mYŠ4þV]YB#ôEµX ý“ËàúC@{,5è°×5u ËÖБK0ƒ@,?Ä0ñk(Øv’,‘¸'À÷u×sõF¬ŠÐSD}³ÿÁÄ«x ÑÀã4’EFt”òñ‡ <›löÇv)ñàÐ9¸|¿qÖ?%œþ@ôÑ_9¥ßS*G õˆ¡þ£¬.Z=Ú5¦–«%é“ö‰#›¨›Ïû9Ÿk×Õå• {Ú–å…;˜ÔÆ7žùboµ­óN£¥v¥Ë A¡ägºº›îI0öR|Õ³»õs[¬¦PŸ¥ª‹wk"PtfbàA…êÒbVÕû:;ã;E&C}^•yö~'KtC³ÿX³ÿP³ÿ@³¿¢Ù×ÉóT³?íõ}ÛÒîîôïyv²ÖRåÑ‘5_mB¤_>õ¶vïºeƒÆ£cþè/<q“]wcZ×\¹¶µ{ÓÒîšû(«´ÉËRD†¼ø¯Ë«×¿Þtïb‹ÿ²:É­ëìÕh®ö­—)>¾Z혿zÚbQgY¥`êOtþ›íÅ;÷ûnnÛ0…|ÛÚj×z3U¦;¹[Ù~t`Yšˆ?Lg¿È #­w¡sm8Îíäz4‡ÕíXµîè¦pôãTõ~tÜLÞáºhiyU‚>öìÜ$þŠ(ç?¯Ÿ&qÚûR´î=•¬{Oyï‰Xô¾|zºYY"Ysv­ÖeÙpWEŽ`ïïmóh yµ'5–­ÃùJåôËjçxે÷l]v2ðTôø*9CÿÉú§gè?;Cÿùú¹ñüø ýóGL¦ÂPø}äta ðá 9`w8áß0dêÁ_bIqÆ7—t"6Uؼ ›w—¯/מ » Ñs“ƒðbå!ÄOþ=í~ SH›>­£ï?>cëCB¸éþŠØ±ìpÙÖ¼ÊÆ÷v3ÞÃñdt˜!·ƒ›,DL%æ½âB§[Áíýd tØ*:¯šÊ¡ûn2wJoý4*èŽdÁå%Ï\h½©¯1ï í°/*T?Oý<åcajo;"XsÌ;>䄺Ž>¢sU|v0㡚È]õBg‡åMÒéÇÞµ,”X{ÕÔ5D¼e mƒOZvZ8Iqck4Ük^õ3:µwÌ眔`k†è'cø;Ò™ÔmH6#N¾Àa¡`rÇ ©w¢ŠÉ®f˜{ÒF$0¼¹ß¦¦yµöŽ´èĬµ‰Ú°­e›_Ë3ѨhgkhD {°,¤©­Ö@ž>T§q»$+šÑ:]12ˆSsîÚ b¤ØÕFø KîIb‹€0 lÞ=§•ßIn‡=¢K‰Añ¸³ étë+HDåœÈ[ÊG«Ba¡X6àDa~X^mÐÑöûÙÀ—€Ò[š}Ú‹…Ôú½ƒ/ŠjÒ:•i1©@’ŠÇ MÚ޲#ô57øf®‰{Á<ÐbXYNðçÚ>àlùîþ<Þ·¾ ’õš+G(":*"ºŠòàŽò#ŒwtdÂx3Ø]ç㑃[Ù#ÏL{¿ƒ™JJ† XÔJ8µ“4g&gè=etSÜkþÍ×Ð<â_%@ó/"¡š{ÖŠ!=FxpûÃTP0ÀЬ„>'ì±Ê´E9M@ Å­Ý•m®?/>müm— ÁT¡7±­” [ÞkÎÒ…Í\‰Ì¬¯,iùÁ&U…Æ8ÑnFÑÀòh¤C7¾§,$ÛFR[;í—ªs=OŒäw„!‡…Μ Ò1TAì—À¹Ûúò‘‘£Gž$#æº(´w`á‘ú"Œ ¶4xw‡C‚O9 ªc¢˜¸®iÂÑ/‹ƹâdŽÇ°×óNöäúRF»ËžÓHJRŽ×Áí&¬2Jm@ÞÖƒ иÐ&/"“N>ÎÆ{Jv”¨RõÆr’ˆ=döµÆ7SÍŸTl¬TÉgš½«Ûy$?Ç !~ñ`í(Â!² !!Tñ¥FkêV‹WÒ¨ŸãI1ˆG’<ªL"0ÆIãêï ìhW,š*‚v–V')𻨏I½R’œË‘æ6ô­©ÉLü-Væ;ì®!!80+ð¾&Æ`¹äŒä(Üh[*¶#¦BºI͉J= Aø¤Gdëäô ‘à*¡ž)«Bå´¢<‡Á{²Þ{줚§Š53Ö”´Õ¨ÊxyÓÆKúT¨ÊLKF”6,20Jšî,ìpC|  ö2nQÀO Ü cBcÙ¥˜ãi«º'#ô`b-æ#†Ø¾$( lñÀ¢Ãa°Êê¨a¦²®á¡°nU4ppAIY$+‹„ñ!JØ‘…VöõñƃmÌBù>#a…ë¥8¶Üª²§X*L–çÞÒ`Ý@vˆÆ>,ZâPaåŒXù…b,é\}Í#X(24AD…GP¬˜zæ)|}؉á M¤NŽ\ÿ¡`:ÔÍ@™j_R.Ý© W’rTá²âR‡3Z¨®4»ºµ¡ÓÚ6݉zêV*¨‹¢”N0¢Ü`:Êp$î¦(B"“0¤‰Ž'Í>ts)„Õ Ù×XQÆ`JtÔ1H'½nç Í2Öac¾.£ýË’MBE%õÀqÞí@!7’…%Ä\ £#„ ’ó{)bЀ nÐ1“Qév3‹¸z[r'è`27¡`Ø/¾Ê(8RaÉãþ&L!„±îÒħf¼†(±mà …ºz©Ð³ÚANÉ3°ãPXÈì:€8é…÷%´ÒÁ‰4ör*ݸ¼¤ðá²…¡o™­˵ƒP’œPLÎ #01zGÃêObe™¢¼^t-,—íè´%]°%F!¸­¾˜ÂY{K“½šP²ÈlŠV„U ÚpM÷¼œÃ»€Sµ©Þæ˜À‹£ô=“$xÄY€G$M´õ·KP‚b¢Å{Á)|°ØËÐgYFÈýPÿNó·”sRFcYûØUt¿YMxà Ô`<þö`f¤}¸üÕŒåýüP0Nh£{N!†Y‰¶¶ÛCÔ0L‘|e¡‘)¯9¥¤¯Ø‘ §BŽi\ćÊxAcÃ$‘n+Y¥fÚúˆ›, äR$h¸·õ²Á±3‡ë^½DámìvÞ“ÎÓÛà(ExbSã2œùæ)j#Õœ ˆ«ÑÆòŇØÝda0G‚E(‚ò“ËZ¬®KgR&w4{6^á}‘cË#Æ%P#±Ñpà ÉEfgá@^À §‹•¬ ,ÖÁCЖ­?ésDÖmÓ*ç'„?‚oýÁÕÑïÞcÉIrîÉEBÁGâ ½Éb™§qoJ]².fœü;Lä±Zšº T®ÌòZ:[¨6ƒlb“øCÅ#M ƒ¤¦ Nb½È &°I²‡‹… 7\½pÏ ébÍ>A•Þì-O¤–¢tÑ—(y蔈8w¸Z™pž¤Ô0 x.]ˆ{É*rÜD8ÔÝ)Œžk']3Þ¸=néÁ­Í0RJLו°&ê*†ã!c$ò-#ºG «ÖUXr‰2HB$Dd¿ÃàÝa„Ø—§€¬à)&Å'IÉ@g,;Œç5£ ªÒ“ifƘ©ÇÕÒu\níÂN3»€]›‚†mUu bµQtƒ`Ó¼¿f ˆ˜ûÌ8Á'üc;?ïùx-õ5NÂduJ@mýȹéá‘“ÄB¿C lÑ®+;"/)ì¹mk·%Ýô[\ÃÕs’ÐÀÒL¡¹Œ–o#´9¶¶µ]–|~‹ÃL%Ä‚àV Ug\žò&³8©Æ“×q¼ñj­A0zŽ5{j…,’ÄšŠ*C&,Bìã*œÅ„B÷d7<°«+ä2B‚–èú SJ:zèµ{uÃ"íĘ%Ap“ Òb%]ã@Ö¦6•±”ó¥êhÅA…’Êz*Ä Óáý³Œ§-c .]D@šîj =.ôq¡ Š g …_]{åLdƒ‚!£ gæ«a¾Dï’”’ïæ½ äÄHÔlÌË-#y„éŽ,Nœ,)jé¤+ 9“PnG2/"¯ˆ‹ HtºMW¤IÅUi•H»(½rjD(?’Æ©}Û’eCïPº ‹`E7îu‰ÃŠ y— f1b8j lî¬Ò6¡&k˜Í€ˆ,£ªDé,OC B&4‡óA#·CMß5êÔí ý±Ø¬[ÄDö>$Ð@Ön~}˜»k¤Þ,Bfëk±U“Ò/ C¸ÄáŒS¿ÒŒÓ/‰Æ‹™„¦{•D‘›Ayœe_QÌòSz¨#PÖ@ŠW¤§:Ë#Y<Š]ZU×µ¨±ÚBÔ‹•¡X×2C!S7’hª™áLS¡Æ$i$ÕLhš 1q:¶D"“‡F˜`úVZ5MÌø«˜ פ‘T3¡i*4Â(t+†1CÉèànŒ¢¬Ð${¶È®ƒš[O÷ñâ2n=Üç@/wXäâ†öxË bÉ¥:»8%Ø÷7œ‹¡·¢<˜y¯ï`oÜà;ePG$t1Ki("Ð)-ñgÒóQ醊Ò@gíþäUW|Ï•n(p{—½òR^/]‰ '¸ÊíÂTP\ý­^‡kp7À °¾„å7ç‹0†ÀW$†\ ¯O ¤"îÙÊc(ˆ¢³ âJ®ÃÛÇ1¢¸¥«{Á¢Åcšïf½”±F’Æ*€xZÓ&™Ô†5,¥”зôS4{½2Î=©åÛ™òMÔ#ïÊû]Â'xµÿÁmÿÿ,½Û¹øòâ.üßåæðú2\\üáËê?ÿøfsõŽ"m®„vyyqaÃÿ\^lÞ„êòß]Òß6ÌøÛ¼%¨½|wºéÕnň}œþ;Žö‹Í×aó %_QBÀ ¯Hÿ‘>„}ÓáϾ‡åOb·—,Û _®Þ¬ÅߪÐCpxûn<Ý«øž“§·Y¯Ãæ‹Ø­\“!xP“-[ïžÒÑÂïëŽþöYþ¢ŠE­}Î_ÿz®U )­›|S4))Ža¡edw’u’Al=¥+H¯[7~èçÅS¸ôû•‹'þ|F~¿ò„_0”?¿8ýÌã?FØÂ‚¸¶þá±#tò»–‹Çg£¿kyÂt^<{êëÂ?½ˆ¯ _ó9ä—@1` ¯~Zh¤@¢ˆB•ܰÇë€qyž¡-/íØH[|¾7ÍÆÎµÞ¿î ]OK(Cc!rÓÊ7»y r¸£“øòTæh,K$Éç}D9j¢•ƒ¦XprÈ(n8 ¡n]3E ]WŽF€ M0É‚hxI/.ù·CŠÔn¨Óõ+ÛAnPÔEŠçã·¥[Ìa=Åq_8ƒ[2hI¿“Ë[£{!ã’hEd`_"Œ1f!Ñ—²}q#² J&7*1X c´ Ñ{‰£Š¸ ¥ðxÒXöƒØ´ªà(%ÞJy»’iìKbØõ«ñøV±|5þüÅ™WÞ¯?n©µåÀ­[ºxb Q0,ráógÙ¹Ûüïëb>ÿ¼ž§@äÕ¾õ[•ÍÅ9}ôטӟÁM3tLualua source.luaƒxÚíWÛnÛFµâ\€¢è5½ H/qX´+ÖIŠq…H‹¾ô E¹Œ±$—ar—Y.-«žô;ú™ý„ž¥Hš",Gš-•‘[`œ 7-ùFGÿr7vbÐËWóûv-óR†¦ä&QÒDœÈ¤Öž…Œ¬¿KíöíZ26ôxKmŽÛÚñ‰éñ6mãI,bÑNãêÓZ†J"3Ò¸á”k¡]Q„<_i³õq£õáüá{û£oø(~8ú¾;|QÛ¶¶KvÚ±wúå×ÏØ³°z1d‘*ƒ5!Ûz Ù+†ìæ¹)3Åž¬LM’&²Ý8ƒ¦™Ïî0ÿ%Øì|·=]– .HUxô†¶uqhߥÂê™ô*¼Or}—o4éW¥Û<6ž÷tµÏÁk8±+ouU¿k2 c{zœ×aÅšeô×ÃÑŸ‡î}ÏÃ÷S>›íBgwȆÎÐ{âø»Î9N­Lî66+ßW{á5òýZ‰ùLéù–F«´›ïFõ³ZŽÄÌ]É3qæ£Õ¢Ò7WÜ(çî‚þåžþÞÅõ£·p:¡ 7“¤2q¥gâóZspË‚í¦%Ïý”8k{®åŒ)¼ZÇnz,r}‡û!-(4çú6ÿÅ÷؈íùà¼=ô@™[ýzâ‘?jVì\w¦‰òzŸnd™ „=îZÿ>ÞY‹Úd¯j„‹»û¥»_6ÿvÑÈaÞðm㽪`–™ªa‚Ñhí8Ö'ÅU!l.Ù}¯É’1ßdóww›É¶¬nôx¾º/£ˆÓŠD+HdýpÏÂz|F~üˆ"E"-ÅJSWc-L©%áj”炚M“TP >I HMO®&žR Ö ·NŠ~í¶ï×g.Ýw,+s„£KA‡?ÐáãG¿ýþãÏ?QÆÍ”¹Ã<¡i9´©Úm[ß=½÷ÌfÙmyùƒ~Ó¦\NJ>é¿q|´"B¤qçTŸô ®5g{6ÿ]a“…ІB•¦"4® ±Í®Ð0L„‰…<¶ÒÞ(Æú¢$ç‰.lUªv°h ÊTTbFŠC ­ˆ¤”cÕæ3ñ´BÀ¢…˜L´ „Ž8 >‹®O£ÀrÐÔ®Ì<·5óðˆN*/öLãoøÅéÖó|§O˜E™çJ›¥+ “¦.Ÿ¦PiUtÐQ¨F âœKº”Ò†DMYÐLóœæ‰H#‡AbG0‡¾}!¤¨ÌrBKD¶ÀQ=4Á#œÒ¤(J…­Þ¸˜D¥ã{Œ»yÁ:BÚ¡*6%CXHd…`ÆOlodêÊ8¡Ó' â¡ÂÿÀR)ïŽ)(gLNlj ‰D•*€=еH£ê©&ö{gßz  & S®f€.ÂWF*«E!DDð«ÅSÄ_Ó±C‰²Ñ¦Ê¶uZS„œ—†,¹„IÈ­É«HoD&Ë«ºªžéćT±°°#‹@”ıI€8ai¬LŒ-S[9u*´°ï¶Ž*^€A»Öí´C¶rPðÖnŽtUeŒ3X‘&Us¹ö7l[`HXPZT+IÞ¤ðëb] §JÙ «zjAI‹ñY9CGãA•Ìëµ2?æ)(Æà? 4gU9ßXYÎI ¹ž÷Êú3šPœ¥2*¹Þ#Hà ¹Qºgæ^cfFt›nÛ%ö±'tp0¦¿èÄ·øÚöñïö8ðùžþ3dúS Make Outputsource.build_outputÎxÚ…QË Â0lTÔ‹'ý¡Z‹Á«¹ôCú"­±ÚTò@?ÞG“ƒ¹ÌÂîÌN²c¯ÇTsQ´˜2ß{Çlè ‰¹4m y¢Ù–Ž4½Ï–hWë9{–šE§xE`©hs,:%ÏJÚcßaöÿ ýØ܇³<€0ÉQʲmˆ‚d¿;dQˆbSÅ(^û•fÂ$•WÈpKà‰6äYXæ&EZÌeõpÞñ N óýD\øê[s.M`”fà\µêÚö‘¢Wܲö9òMakefilemake GNUmakefilemakefileMakefile OCamlMakefilemakmksource.makefile^#!\s*/usr/bin/make\bclose\))?first_assign_then_colonW(?x) {{just_eat}} {{varassign}} {{just_eat}} {{ruleassign}} {{just_eat}} function_call_token_begin\$\$?\(include [s-]?includejust_eatÆ(?x) # ignore whitespace in this regex {{nps}} # level 0 {{open}} # start level 1 __ {{nps}} # level 1 _______ /*_>-< {{open}} # start level 2 ___/ _____ \__/ / {{nps}} # level 2 <____/ \____/ {{open}} # start level 3 is like snek... (by Valerie Haecky) {{nps}} # level 3 {{open}} # start level 4 {{nps}} # level 4 {{close}} # end level 4 {{nps}} # level 3 {{close}} # end level 3 {{nps}} # level 2 {{open}} # start level 3 {{nps}} # level 3 {{open}} # start level 4 {{nps}} # level 4 {{close}} # end level 4 {{nps}} # level 3 {{close}} # end level 3 {{nps}} # level 2 {{close}} # end level 2 {{nps}} # level 1 {{open}} # start level 2 {{nps}} # level 2 {{open}} # start level 3 {{nps}} # level 3 {{open}} # start level 4 {{nps}} # level 4 {{close}} # end level 4 {{nps}} # level 3 {{close}} # end level 3 {{nps}} # level 2 {{open}} # start level 3 {{nps}} # level 3 {{open}} # start level 4 {{nps}} # level 4 {{close}} # end level 4 {{nps}} # level 3 {{close}} # end level 3 {{nps}} # level 2 {{open}} # start level 3 {{nps}} # level 3 {{open}} # start level 4 {{nps}} # level 4 {{close}} # end level 4 {{nps}} # level 3 {{close}} # end level 3 {{nps}} # level 2 {{close}} # end level 2 {{nps}} # level 1 {{close}} # end level 1 {{nps}} # level 0 nps[^()]*open(?:\(rule_lookahead&{{just_eat}}{{ruleassign}}{{just_eat}} ruleassign:(?!=) shellassign!=startdirective ifn?(def|eq) var_lookahead,(?!{{rule_lookahead}}){{var_lookahead_base}}var_lookahead_base7{{just_eat}}({{varassign}}|{{shellassign}}){{just_eat}} varassign (\?|\+|::?)?=ç xÚíisÛ¶’RŽ6nî«i“Æt¬$’ѱçpâ(mÓ4yßÞÌûbÙJ‚dÖ4©’”‰ó Þ—÷“x €€dÙm2ÀŒ‡¹‹=°Øý‡‘–«ÙuÖö|o«íïî/ ·žV ºà\©n Á•³ëM΋ß­w]?§}F‹éŸ•ÃbÎÉa—ìy9ì3ûMv½AÁ‚ƒ>hGõ`à‚\´o¥ X² RP,Ø”Ëõ‹uQ º‚@/IAŸ#ÐËÙõÚxíÈñ½ºãíùm;¾%ŒñŠ:VßUu¬Çkê8X¡×Õq°fo¨ã`ßTÇÁº¾•]ïR8Ž:Pç÷½ÛÊ(XÓß+£`EßÉ®y(ÐuÚPSv6ŒÓÃú^a¤Êö·Ó¶ƒþœ‰S_Ž@_0M!ñ¢í%#m††…nÛ®‹`_1ÑyÈÓ"ÀÕìŠÆ„¤Å½fJ`"o/Gù]´Æeþ6¶Òœ™·| Ç‹I" ã5Ô<7Â~Ç A2ì}'ÚÎ0äÏÌ ˆ„$kü%»¢‘râÞÑË_—·çÀvë};€&· B'¬·l×öÚ @8ïKâøuúc<_†`? U›{#¦~g6|Ç… ?f×? ~)ù”')h^Óœ-1Þ¼7bj V.‚•ù2k×Þ]@Uy–ˆT%ƒ¹™¡½¡’å v[ Hzo^%‡ÙSû›Ó¨œ§½3œç\­†\Í“xg E&2{¦}ÚxiÇŽ"Ø(uŠ_<ÿ(xn¡Ü§’ºFiÀò뢺b~uµž£:vÀá¾t,Æ7;òËc£TëHŒ14öaÄVYP•iªPÌZ3œÃ€%ƦÆÑHß±l¡F4³ë.ˆl E_ËzƒdÀ…+V1ðóլލÊ’Q‰ªµÙšÔ\Ò=©A1Þ;ƒÛD5Ø@¯åd/ª­ráâ’1I~,ý)ýxn¦9òÃÁó®ã%F.•»!2í»<ÓN–¸R”@c‚¼v]Øã¹a\5$¶ÏªEi±M=Aïst8NSSé+CÀÝC1wÃ.£(V¬ž¿:i¯ÏŸOŠðYnËÔJŒ¿ÅÎŽ›«åúí NCò¶)WRårHJñÞ˜ˆ]œQ±X’òÄ…’B"¿g¨•H^oTB5ÐyÂÓ×j´ªáj+ü…^¢Ì_c³Â{è™xÎú,Äct3WX2*Ãúgå[È­ÖÅbuüAk±üSÄâå™bûÄívi éþ ¯ÀîÇÉõlžT@ASåjuæ¨Ù8jÎÅcÕÆZ<\­àÁÀ‰Xä1—QfoIACßMÈ|êtkR î0d‰/L¤üep&là‹„Ûû÷QL¿Âq~Ú'}É>I4z!xþŽñ-ÈFBSÊV’ D^F8¥H xf§š0 ñ”|Ôy¤râáä&e³¬Éœzš-)h@³•æ\›-UB1OÒ~i˜%N8LÆ-Ià9X::œDæ,)h^\%#ÙØù¥2G¿qž-Ç7)WÎͬÉçœ)º·)|6 K+«*:Vé\3kIêŽû«Æè^Eæ=ØçïU;Zibt~z¦7jê’ÍA`‡‘pL˜©Á 4´+sòÇòöûIðöy²¼uç5–4–,Ú’²” YáuÜ'EÀe‡‰G‚D–UT7]Ž=EtÊ*2¨ŽŠ‚åyƒ0’aù^ߎ¶kù2”p`~Ÿ1%H“ ¸íI2GÏË.sPòcy–#[ë Çk»ƒ€üÎKž0ììöý ’r|Žâå9›-§ë5ª°±À_µ|˜Qƒ×Nb¶Âã…XIÀ ¡Ô-©Ð£òÁcƒ2ÚZ Ïpº§ÅÇ7ÂÞQ"Q‹lÄÊ“¡6iĘM O€²+d;ŒlØ¥ÛÛзcoœn„a2ˆ”ЫNMΠp¢C˃þ}ˆdó܈®@iáéVîÍ9º×7×6æ×gV*ã¦o ‹Mê’ãO —µ@´+¦Ú¬4+fµV³Ó¤Ë:é".Šk $ÊÆnÉ€Ù=ÇJD°î›Šk{½ÝEPdìW( î É d²ŸãVÍï'>š÷…ƒ~â^±=·aÇ“*àšÁ5N¬´ëë“ü:%ÃôäŽ×õöíÀƒ9–#þWØú7(þ[Bîä f𿬠ç ~Ì|ŸâVÏ”iVáŸi¦Ý#½…ù¨~z e4=…~Çݧî(d7½‹EÎï\'$ž‡9£εÉ_'HoÂéXŽë‚®CqìC+Ù +YIŸ@&”r)ñÌ£±Æ¤™’¥:ù8ó®´ùŽŸ»$€ÊΖ‘wRœ+n³À³|;) 79•ËØ7kÕusc®Vizx”pÒù´grC}º,!s°÷ AS ’YE{E›G?õÿ/<¶ötèCÎ(Èt<3ÚvB8Hè¨×7«µ9%-.Ø®ù4*5V›Õüur(%{½hrËÖV2 j¦ë]$“ß.Ìm½­¿Ip ¢4É%Œµ¢šÍøva*}NФ)¦xo¶ĸ4“Û “£‰-'/¡²\g˜¡v,Ë2«­Có?¶ ˜mÐÞ9¬M!i0}šú2È(ÑtžMåúÈj ñs€f­ÖH^Âþ<ôRB=Á5ìe©æ$:úúeÏpYì%©•KLYk^Ë®eŸtø,ö¢<Ú­Vp9YRHu·ÖT[–]Ò±©|ÃIJ,Y":¯™”qö g©’Jð¼\-“9|L¸l\>½äOÆé¥ ï š²JK" MÞvC²X`µüÎ!÷¬‘h+o!/8ÜWlô¿Š€¥;'I%å:Ù7Ƚ'ê]ä8{0¦)ñ†˜ ‚i¹ùêzýÝÆ§Å'KŸk Kþ?SuÝ êjF£Õô Wí›üŽ;¦Í1LÆâÖH.‡ÔÏ®ï %–á 2¥Ó†u óÐŒøˆÖ¦V>Òñbžàg¼I-ýRK|æ!ù †p¹J.7ü–åBÞæ3‰B'ßbWp‰ [«tB­¥b1¢öZ©½"»u¢õ ÑXÐòøMÅ‹IAyðØmÍÊ}•ä€ ÚQ™²dqVäLCêÈ•·[ÏT"ØL?R];R9Z% †Kd…£}Mà!¨sœ@p»aÜüþ§£´Qv\C$ ½s÷A==2 Ú"ð’¢}; x0{/íŸ$ñ‡ñ™eÜü°×êÔ—N}鉸N}i«Ó²ëÔ×X©/½†¤©îÖ:j«Ó²ë@zœ5$Cu Õ=ZÇPmuZvCÇŠ¡Uê?Gzbªƒªîâ:¨j«Ó²ë :nP=Šchót(Õ¡TwlJµÕiÙu(#”¦–œ£ê¸ªãªîå:®j«Ó²ë¸z¬¸šîDÒUTݽu@ÕV§e×uì€*?ÑþÈP=ê„°WUÏdÿ–›÷µMTÍšâÙ8Þ¿Óàžî[‘öâI*úœÝ3ÞIÁìë©£UØ s÷LaLçÓÉÌܳk1™õwß46çæ6ØcÕÃß7µ‘¿ Û§ÍkÖ³D­ã~^>)èk Õf¥¶Þìú×ç ÜbeNÆEῊˆ>¦H«5ýÇhuÌg×H,ý?k¿ÇMarkdownmdmdownmarkdownmarkdntext.html.markdown atx_heading(?:[#]{1,6}\s*) backticks-(?x: (`{4})(?![\s`])(?:[^`]+(?=`)|(?!`{4})`+(?!`))+(`{4})(?!`) # 4 backticks, followed by at least one non whitespace, non backtick character, followed by (less than 4 backticks, or at least one non backtick character) at least once, followed by exactly 4 backticks | (`{3})(?![\s`])(?:[^`]+(?=`)|(?!`{3})`+(?!`))+(`{3})(?!`) # 3 backticks, followed by at least one non whitespace, non backtick character, followed by (less than 3 backticks, or at least one non backtick character) at least once, followed by exactly 3 backticks | (`{2})(?![\s`])(?:[^`]+(?=`)|(?!`{2})`+(?!`))+(`{2})(?!`) # 2 backticks, followed by at least one non whitespace, non backtick character, followed by (less than 2 backticks, or at least one non backtick character) at least once, followed by exactly 2 backticks | (`{1})(?![\s`])(?:[^`]+(?=`)|(?!`{1})`+(?!`))+(`{1})(?!`) # 1 backtick, followed by at least one non whitespace, non backtick character, followed by ( at least one non backtick character) at least once, followed by exactly 1 backtick )balance_square_brackets0(?x: (?: {{escape}}+ # escape characters | [^\[\]`\\]+(?=[\[\]`\\]|$) # anything that isn't a square bracket or a backtick or the start of an escape character | {{backticks}} # inline code | \[(?: # nested square brackets (one level deep) [^\[\]`]+(?=[\[\]`]) # anything that isn't a square bracket or a backtick {{backticks}}? # balanced backticks )*\] # closing square bracket )+ # at least one character )$balance_square_brackets_and_emphasisf(?x: (?: {{escape}}+ # escape characters | [^\[\]`\\_*]+(?=[\[\]`\\_*]|$) # anything that isn't a square bracket, a backtick, the start of an escape character, or an emphasis character | {{backticks}} # inline code | \[(?: # nested square brackets (one level deep) [^\[\]`]+(?=[\[\]`]) # anything that isn't a square bracket or a backtick {{backticks}}? # balanced backticks )*\] # closing square bracket )+ # at least one character )*balance_square_brackets_pipes_and_emphasish(?x: (?: {{escape}}+ # escape characters | [^\[\]`\\_*|]+(?=[\[\]`\\_*|]|$) # anything that isn't a square bracket, a backtick, the start of an escape character, or an emphasis character | {{backticks}} # inline code | \[(?: # nested square brackets (one level deep) [^\[\]`]+(?=[\[\]`]) # anything that isn't a square bracket or a backtick {{backticks}}? # balanced backticks )*\] # closing square bracket )+ # at least one character )balanced_emphasisÿ(?x: \* (?!\*){{balance_square_brackets_and_emphasis}}+\* (?!\*) | \*\* {{balance_square_brackets_and_emphasis}}+\*\* | _ (?!_) {{balance_square_brackets_and_emphasis}}+_ (?!_) | __ {{balance_square_brackets_and_emphasis}}+__ )balanced_table_cell–(?x: (?: {{balance_square_brackets_pipes_and_emphasis}} | {{balanced_emphasis}} )+ # at least one character ) block_quote(?:[ ]{,3}>(?:.|$))escape\\[-`*_#+.!(){}\[\]\\>|]fenced_code_block_start(?x: [ ]{0,3} # up to 3 spaces ( `{3,} # 3 or more backticks (?![^`]*`) # not followed by any more backticks on the same line | # or ~{3,} # 3 or more tildas (?![^~]*~) # not followed by any more tildas on the same line ) ) html_entity&([a-zA-Z0-9]+|#\d+|#x\h+); html_tag_block_end_at_blank_lineŠ(?x: /? (?i:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul) (?:\s|$|/?>) )html_tag_block_end_at_close_tag(?xi: (script|style|pre)\b )html_tag_close_commonmark¨(?xi: )html_tag_open_commonmark(?xi: < [a-z] # A tag name consists of an ASCII letter [a-z0-9-]* # followed by zero or more ASCII letters, digits, or hyphens (-) (?: # An attribute consists of whitespace, an attribute name, and an optional attribute value specification \s+ [a-z_:] # An attribute name consists of an ASCII letter, _, or : [a-z0-9_.:-]* # followed by zero or more ASCII letters, digits, _, ., :, or - (?: # An attribute value specification consists of optional whitespace, a = character, optional whitespace, and an attribute value \s* = \s* (?: [^ @'=<>`]+ # An unquoted attribute value is a nonempty string of characters not including spaces, ", ', =, <, >, or ` | '[^']*' # A single-quoted attribute value consists of ', zero or more characters not including ', and a final ' | "[^"]*" # A double-quoted attribute value consists of ", zero or more characters not including ", and a final " ) )? )* \s* /? > )indented_code_block (?:[ ]{4}|\t) link_titleþ(?x:[ \t]* # Optional whitespace (?: ((\().+?(\))) # Match title in parens… | ((")[^"]+(")) # or in double quotes… | ((')[^']+(')) # or in single quotes. )? # Title is optional ) list_item'(?:[ ]{,3}(?=\d+\.|[*+-])\d*([*+.-])\s)skip_html_tags (?:<[^>]+>)table_first_row(?x: (?:{{balanced_table_cell}}?\|){2} # at least 2 non-escaped pipe chars on the line | (?!\s+\|){{balanced_table_cell}}\|(?!\s+$) # something other than whitespace followed by a pipe char, followed by something other than whitespace and the end of the line )thematic_break«(?x: [ ]{,3} # between 0 to 3 spaces (?: # followed by one of the following: [-](?:[ ]{,2}[-]){2,} # - a dash, followed by the following at least twice: between 0 to 2 spaces followed by a dash | [*](?:[ ]{,2}[*]){2,} # - a star, followed by the following at least twice: between 0 to 2 spaces followed by a star | [_](?:[ ]{,2}[_]){2,} # - an underscore, followed by the following at least twice: between 0 to 2 spaces followed by an underscore ) [ \t]*$ # followed by any number of tabs or spaces, followed by the end of the line ) url_and_title<(?x: ([ ])? # Space not allowed, but we check for it anyway to mark it as invalid (\() # Opening paren for url (?) # The url {{link_title}} # Optional title \s* # Optional whitespace (\)) )ˆ!xÚí][Û6–—´MÝô²½·Ó c»±(‰Jl§éÔãØÍ´séL/3“Ì­¢,S"mñŠÔTO˜ì~‰ý ûºŸfŸömó¼Oû²O»HD”-;I{ô³-™:þ8·cÖâ×kÉûŠáznÏïkCË0m÷°wý£ÿ’“®SÒ…RÒ Jº˜¼¿Á“NBϱÝ{šíZaÆÂ… Ä)s™è;Þàžö·‰ZY¾Ï”’¦¹>[JšVí¹RÒMJz©”ô%}¾”ôcJº”¼_æI=Ç̪þ‚œ&­óe9MZÙå4i-_’Ó¤Õ{YN“Öë9ÍMJóOršO(Í«mL3ðLK Ɔ› ‰ÊúŽðÀr–©z"ÿ,ÁëBãvh8ö £z£ˆ*•þ›¹\…­ûLïxK¨Kh‡£ïo—Q¦…¿SF™*À»BÕ)e" ¹¡å2œþ¤œ6åà=A íØðCß³œß¯BæýAê´†V¡N•]©Bªý•*ÔiXÎUî‘a3:»"§Ië¿*§Iký‘œ&­ëU9MZÃ5pbß8ÊX® X“„FŸÕ]µ€(­X£€(­Y³€(­Z«€(­›–ÛzáС=Ðú¾e0àІ’‘ýöš0zôzAhø!ýúº€ÆAhùZÖ!)ݺ0\£±å†kR‚ ¡=˜Ñ™’l ÕbHôø#Û5BϧÔ74K‡e$Û¡T òäoJtSàÝ(É'É;å1²Óï~*À þN‹aU }Ä SÇOq÷}cp/ãdKc:8P‚Ÿ íaÚÖ mdø÷Lï(¥Û`A¤ÓÆÞX‹s`¡AÓݺOAºa8r4Ó„ÇãTL;Ò$T(»Îä§ Ñ¨g –CâLËûL@xYÊñpL“Ü®˜„áïçÂØ$1§ÒX^ªxŸ ½Î F&§/„Avjl§„¿HÞ©24|“H îå”ì—"Ú#ãÐB:ÎÊêW¸ÍÒÐ6A<%ÿµPrLžÚ”ìKAcc2ß: ¿zGJSæo…>ѲT_%ïÔL²] á¹âûZh^"ß$ï¯rßjLÿ¥”ß 0MI…k“߉es9þ^Àœ”Xöþ à!C’#»;Éû9ÔS­v7y¿Ä3öGAÄôûœrÿ$1%*ôÏv1”(S#í:z¨H—ÃÄ_“÷weI¦˜ùNÐÛ)‚Nž<1f8Žw¤ݤÄzò¾Ä³dW衬õIiöõçí1JÕ†"v4ßOÞ©çŠìú•‘¼Sç“Øô˾P2oKPªÅ¿äúÝ卵ø÷&ãv2f·×Û„îƒêl‡Çm×YíÀ„¶çr´‹L¸šâ˜/>ÿ¶C¡·ò:ovÄ×£H×wouv¯´[[Þ£n££Û]5%ZL?]ËȯÖ;†ö÷ÛÚw×µO»ÍhE7ÑŸûú°©þ¬JNô“^Ÿb°&Tæ"GñfÆ‚®V)‰öçÎ%F”Wë*bZ¿CËû€o¯ a|Œ¤mܱӦˆ»ÙŒi˜š-žBô©À„/„j&Üc6— Nœÿ¹H™¸¯î-!VE«K‘‚^èáÖþÐQºZ›ékEé[á‘e¹Êu%ô”M™°+XŠsÙR _+ʇÖ2•þ±â¹–â(’ǨßÄ\ÐWGë¢< OÑ?êƒÖÃ8#M1Ó†-JËæÌe©¡âXF*á‘=°¶ø l$àÒÇY§¬`u,+ ‘ìY+8kž•ËJO`ÅUˆzÏ·Zóe…Íšp¤&:£‡ÝÆjÕf7ÜcÅŒú–OZßèŠç'åM3l¹&UÜã–Tª°[‰ªî íhUU—òúÒ‡µLëc¥/N)C¦g9ŠË$¹Þxé!ÃâJ÷ÁzëæCÔÑTèhÐўꎆ‡a³©·£N£‰4D7uô©?UºÐsµÒW^²¥"âżÔ{ÓÃ&›á'ù='±²¾–<ß”<äÚ1‰ Õ:’#úÓF¿A*·…‹B5èûûüp=‡vܬ–™û‹B¢Õ¢Dý‰ãXašö‚€š³¤¥ì'î œÄœ5­ÛµÉGœ-CX£4ÁÅ“ÔN¦—j¹fV*çXS9)_HùÃ>&®TÎôýjq²ÓJëÂɸ”ÉëùÚ úKOè'‹³´u{FVh´S7&fÝžIGÚ“^Qó.^Š=´¡V£iþNþë|Eð´Ó”ïø&OÏ6qTœy²¼ÀX'Ù¸¡7ܠ×M€Þ·ýŽÐ(ƒþE£Î¦b‡âz¡bŒÇ¨ <€G©¾¥`ÆððNÆ’mSoÔw¯è g{4DÚKnxYWì@1œÀ³®÷'¡,ц2ð&¨LZ6Ógâ¡i/+9ü¬Ñxh¨¬á®…8åÀñ”‚ñ¸F–?ØAnªù²á¦Ž2F¿èoÚæ"Æ.VjžFqŸO¨Ñè+ÅòzqDeòÒg ®ÇIs«-HÀärnÇÌ š½âÒ¢^¬Iúç7’çŸæô×j=é™j=ióLz’Þh&ª|Þ=IopfäÞÉÔùzwIÞ¨ÛuÕS¨'zŽ%ä wøOg²X•©f-€OVÑZ8o5)3Ù¦–mÑë°„éìg—D+FOƒ¡· zXâíd¦ |{LêGö™–o0K [«(·¤ÔJNÙ:'Ù²QmÉvÏJ@úlä² rÉ•‹úÔÊ¥¨cÖXÁ­N÷?–Û_ttnÿ$9ýXqOŒZ\òï„’^$ST‹Y`éë9ç÷Éœó“µ@IvÜ€û «e9i©lñÖFº/5^ _Þ}²w†Ô$½ï '¨7øz#]ÅÛŽÄšËöÄœÛÎ#švnRX椚ASÜŽ_´1„±LžÍ:¿~§|«ÛžL‹ç¹me-}ö4óÛ¾3##S'9pÞñ¹LÇúÞr =2ÍkÞø¼_« N3âÅÔ€Egö%«´)k¦.;Ÿ¢i‘ ÛŽÄ"ñ­TvÆQçÍmN™Žt…¼ßÊ׿Rìi½¯ì–{cÅ›$n ö]ð¡­ûØ)²ÜÜ]Ó˜Â$`Ä®›n-!©Å»©ñà#)‰z=Ø#g]•:ræ<×9&…6Ê0sÅb 5Fº9g×:ÍÚPHçQÈ9äxâ¼Òm¼é^æ85ùÐç41Þjìù&Ök‹‚ñµ,—õN;Ë$Îe:#;ÒýÇËëËÒ<õ•\‰¡úý>2È £ÛrÌÀÂi>èãÄ·¢ÏÃÙxþ(:ð‘ÿÅÄÃõh¸ 7£áhøq4¼aE"PŠ!ú GNdÇ©ç<›È±# _>u,wBþ`]Ž0þD®ñ}äzqª‚7ã*x1Wã«Ï(JŽõE7ñVLF¯Ž#r*3 ‰@B3 1÷Q8D?˜3âãD¡~ŒÁ½hâ¨DÞ[z­F×vwÔ%2Çs3m590/ãµÿoá-2GŸ5P§P^<Ф S°jÓÆd»Ø¶£ Ù-æð¨ÍÈãÆ¹ñ( ÈóðG§–ðHHT©+37ª_ȳNô¨È¾,¬µ¡çǹjËqrŽAJÏœR';÷µ¼1žMÙ¨I^l®Þ{¥y6k‘­ÊD¦euf…wñL„DZ´E?Ü(Ö´,7 ÍŽºˆrýÊ¥Ö,ærÀä*¨MΊ~¥¦lÉÄþÚ´Ø¥Ëê—˜ƒt{òóyìI¤øˆš|^…svpÎîsÎŽœÅ.< > ÚlÒw+í"xcg¼ø—aûFÊÐÌ©&b@@ÚŒg×"ÿÓt,ÃluYØñ’ W®”˜÷t^*K4úŒuÑ ¯“É7v6÷lKb“—Ä&#‰ÍóÄæIbsZÅ’Øà%±ÁHbã<$±qF’ؘ–Äz±$ÖyI¬3’Xgºëœ%!æyI"c~IÍ…ºx{‚÷DÑ;ŶŠâZZÐP-@Ó@(2縉–5VÓ1M2»j–[%Ì$º‘Õ„™Ðôôôô+G¿]ÇÐwhþz€S¤âJf¤z·ÉŽ YÁÆloI-?õ«qŸ2G—P£$$$$V‚Dui?=ÑC#ñÑ›RLkì[r;ÊĽRSK…Xrt뛂óW$‡²ew$ý¾Vôân¯¹Êž bÎ*p±(Ëï­¡·t4ìèW<µ'+¤äÜÓbÙ15Qû’óP4z*93ˆæÞ^!å 5×*Ÿ££÷ïÔÛ •­ß‚ì äG‚ºÑ‹y¬ûck€CñZžS~ô‘ãA¡<ì^)ˆ%©^¥‰VXm‰o:"¼hièñ¼V”h3yÑ‹…ë+,VT=hðWHÅ¡+=Jާ—^K¿^M™z¼\ñ*˜F«Zy°Ùºùð±r¶XYÍ©,ñ=7õ•†JÞ±¾—ßïÓ¬ÆqÑÕÝ «°ÙÐÒv­#îÐj'…i¤õú¶ZGãŽyz[ênGk¶õ£n󳎆úé@u½ýƒŒã6î]èS}Gº™3½žÃÂ9¶P;dŽDËî*¹ŒdÈ7¦(œjÁSŸ`õ å²M’uwz²½£µ›—~¤QÕ±YÑîiÝŽþ箊£jSÅÆD†–´Gv=F)>SÄêÅ\Ü&á*Hø*‚ØñÖøR,c_¾œ¯BÕ.önçŸPW^à$A; ®7Se½¡?zò Jõç%®|zU¸ÞÇ$p< ÊDï‡%ö—%Õîõ²wzzÐ= ™¿Z¥#^r"»‰’^ Vr%fV/Ξ zon÷Cþ²*HÑvÙÆãÿ¯íê«W²F¸Â*¬5LŽUиâÒÈ)ûM•»³¼äö>|OwÅÆ~­ @6vшLå…˜ßÎnD*iíª¹¿Âæ^'—4Eš¦Î+ûw™ì¯íâ ™Øk©TöJûÓTp¥æ‰óL/bÜÝ9qŽ lŽ t(¨o_CcÞ:6¦ÒïDkeQ0’ Jãñ¸–»ˆ{þQ±“D1ñâlySÃÅrC;àªU\I\ã¢ñóùËüøyò©@˜·Übp‹a"&ñññ`"ð©Ÿ<Õ4`…IÀ¬ NQAù»’+^Xs˜xoq·èV¬Lw‰‹‰'|ÚWÉ¢–žÁüàosž}Uy~ðõl?š ë¨õX€h .ÛæY©FÒ%ó9é®âm2Wó·Éd|ž&hUä¡ÔãU‹D1g§·’ØÏÊïMÚ³¡ÑÚÜîæwø 2² —ì,ßõö‚D"_HžoHžoIž’ç¿’<ÿƒäùMÉó%Ï#yþÉó?tSÙ™Ùo$Ïg=K[¤™ßJžÿ²¿äE'­¸sjÅî(=:»÷íZnÁ}æèÀÙü&W0î4zÝ,ndµgÿà'™ð4SG¥»ÇD÷¦ŽÀ‘G )˜:‚©#@<@<@<˜::‡©#f–dÊ"…ME°©¨lSQ²»®|þìvÚ#¹©‚[êŸ}klêìNγ»µªSg°µzÁ¬½`¡ª’ÿwÖU»cöÔÁžºឺdÈ0ëê‚Îæ>½ºPŠ@³ö·Š ÿÁŸ®Mf:asøûà3œ0à ˆˆˆ3œ°9®d2é)Ü÷Þ”×1½¥i~ó{ÊyöçÊó{U¶ÆU©Ïcg\½@sv]«ýŒ¼×•y¯KüŠx°`Ï=öx°àÁâââûÔy°§ð_«{¯Õ|×ùxŸ«ŽƒƒÔÍ7œ3ðBÿšóì»Ê^èeÑ e¼ÏYê#½Ìx>^èÜüÈëê4gr1Îϯ¼$avÖ3PFnå:µ<á²éÞªI2,;H$;4KÔÙᦎä¹ìàÖo ÊàbØÐÝ 8ÜØZy¬±“l* ú회‘åóe䎑çFôúùrò.ÇÉ…Œ“\dS®çµôÔ¤Žyèã!êAÈa§J’z/ŽB7îç߸_ ø'¹{<.‰wÀ¦¡ ›žÚ›9ÔŒ·÷j ÁEÁ¢)p¤= ÁÛvš =@%©Yðø,ly¹ïs?ó¦µÛAÛh>¯BŽÔr•—æÊ{2åý£x>E£&˜Rš^Éx!q®±#àÊž’ŽGÆ1Íö¾º·DöKåèñÐNQ‘W™ç+Ý뭛॓i$¯"C»o…G–å*×¥"Y+J±×Â6v\Ðä3n®ø1;¶–XúŽÖ¥õÛxˆþQq¸Š8# ÍÞà-JËæÌe™yJá‘=°¶ø l$à•Šd²‚EÔi°¬4DVðTú±‚³æY鱬ôV\…ì¥ ¨S´æË ›5½(—è Þ$¾ZµÙùH-¡Ñ'áYâò¦Fv4UÒE…E’Ö[N¼üRi ¦×ˆ¸Uüÿ 1-fÒ±UºÏá ç£ñÐì–g`²&+a²rË3³/ÑÌw™F¥@?@?@¿s_ª9ùrÍé–lŠ—mxƒNoÇ—DÙ>[kV0fÁ–444[lY@?@?@?°eg¶e›™ùJšMoè çÀš<<<<kÐÐЬÙ'ÙšÕ¤ÁzÛ®ôT°cÉÉÉÉÁŽôôôô{òíØÔ|Ùžs`Ìœœœœƒ1 èèèÆìlÌöÈžÙÓ䱫G*Rä|Ú ,J-¶0Mel'vfzÀ”F‹b‹Zš(+8†# Œ,0²ÀÈv5    Cƒ9b@s@s@s°eÁ–ôôô[ö¼æˆáà9à9à9à9X³€~€~€~€~p ìX@r@r@r°cÁŽôôô;ö<íX8†ppppÆ,    ßùšÅGÈbs4ðFVŒ­²3ýXë²fbÃ¥çÒxY–eb¸¦$¸Zy ÃŽâí4¢%9©Öã$ eQVyšÆ]Ä1'ã8TëÄãÃYÓa¢éûÕâdý‰ãXYÌWµ8l-NÝC•Ƭ]å*ÿnNåu³Y×ÛªXý ’꿟Siå§B~ç%ª.<7Q|”/ * Tÿíz}×Þû–ªê}^±òB¤žóìç\ªVn!»÷mâ7ÆáÀ£ l»gbK" YºÜRÖZÊ­–²ÝRvˆÜö“â#e­³·Öm¬¥êŽMÇÒ$,°bCYrÍ%ec-‘”‚@Ip--{¹³·Üm,§e›Þ¤_­ìåªe/óe/Sc,Ž»‹-#Ü(qÓ\Ãÿï,aû5A…kO$,ÄÜ"FUôi5ÚN\VÂ>Ñ Óô‘C¡@{€Æ4ÇgZQßâ?žF}ÇÜ#’Žúžy¡B¬áÑÀrQéÑÀsðï¡ïMÆ‘iF¦¶D¦m8Þ!zóÑï÷‘éDfØ–cþpHóA'¾xÎîÀóGÑäÿÅÄÃõh¸ 7£áhøq4¼ -Ã$PŠ!ú GNdÇ©ëÙ‚‘c£÷^42l7Yî„üÁæú‘k|¹^\D„ª€ºm\…¸ÿFãhŒeÖ€üx`EÁd„¬‰ã(4þE!HhF!æ> ‡èsÚ!þÖG?È4&NÑz­F×vwÔ“ŽæŸq©þ/ ÍM¹ ¹Ñþâ +z†K1$¢Q³Þnî"{Yº[*—æÖ²Ä—B4˜ ‘,)ãÛið[âa¬¾¬ê½nS­ï¨|â»ÈvŸøÎRÜåëú¦š_ KÈØù —$–i»ØPÄý24ܰݷmWjªRo©½·±@Ú>•O+›ÔRmUd)nšÇE!zN…•4ôüö=ëX#à—¦FHß(³–ÿ¼žrø€·ÕImìkñu®ßb¹l½/¨T™i•ë0o¥^ fç$niÝ›-?~µÜa\«I^ LŽ¡…¬¤¤{Rs2QâÉX:_'ú¼¹I=}ô=…|~–³ŽfQh–“á¡L LΧ¢—½x$"réV^›ý‘ŒƒÐvLƒ)þQ·ñ¨¤ø8I^ÙS˜'ï:û%ûÅÏ Úa} ¦Ú­Ã¤5LZä5LZÃ’    ÜpÛÏÍÍÍÁ–[ÐÐÐlÙsÝ~7Üžžžžƒ5 èèèè7Ü€ HHHv,ر€~€~€~`Çž§ 7Üœœœœƒ1 èèèèÖ!Ð:ØÕ0²ÀÈ# ØÕ`Wúúúýxíj8†hhhh¶,    Ckððð¬Y°fýýýÀš} Ö,C$$$$;ÐÐÐÐŽ¡1 pppÆ,³€~€~€~`ÌžŸ1ûà ´^ÆM­U ×öï‹4¢e­ ÇÍ£aó$bê[á‘e¹Êu!¤^^\ä©Ä¬°˜“ÊÅ‘<²¼„­‹;æiã!úG}°GË[Q4$\Ó†-JËæÌe™µkxd¬-¾I„vÃY§¬àþÞi°¬4DV°»qF¬à¬yVz,+=©ØDÞÕÀó…|jVج“x ±Îà ¥«U›Ç+Œ£Î“Ö7úÆiYdø=€F ­ý? ñ MultiMarkdown text.html.markdown.multimarkdown(?i)^format:\s*complete\s*$header((?=[A-Za-z0-9])[\w -]+)(:),xÚ’oOƒ0Æ súÆ/ Æ¸dº€K›ùRcüî6£2hg¹Š?¼S¯¤¦ÆKȯpwÜÃsôÉWì#‡\*™”<—ÉdD¾GGÍ…­ »Èä3o³!r¯ÉVÀ5Øt¹ƒt[í³¾7èÀÖ à,<𕦀¼äz•ªZ§!t?cˆ\œ¾-¢›ëhsMo駯z9§³z@çã8ºŠã¦'lØØ*9FV sùÀŒ|4 Dê©é¹â]ñK%AHØ®>pÎvœáý=鎮ßNâÙ9@‚x–AY0«¤­+ ¿EàLµ,üçèÖ"Oì"Xá¬:oæ…Þ`Ë#äJ¼ÔJ§LAæÿL~+E®\‚á+É*±æšƒÒló"úÄ #¶{ç:ó‡èjkÖðY_|EMATLABmatlab source.matlabid [A-Za-z_]\w*~axÚÕ½[³$Ç‘&€œûìÌìÎ}vvH/è&Ù‡èjÈq!1‹°h-Ù–÷Ê®¼¼T:“™éM¦WÉô$½éE@¦wI¦Ÿ°@f2“^ô¨7}ßç™YuNu÷Ápµ³ œt¨ÈÌȸxx¸{¸ÿÝ öï_:øÅ ª«ÇAQ<.ƒ¾ÂÇQ]–IÕw_yù…ÃppKØÑ&Y–{ÑÁ?>( m±¿^ø¥šUÔç@¦rŸyz¹û¾ÜgŸ^nåËýšƒÿâ œûöºnæ7ÿú³JNïþg•œÞþ›þÞAÉ&h“jÑ6¿uc©®oó*›KýöÓJMuû£¯yŒzå•ÿõw¾à1îÚÞÿüÏüCo&/Õ↢›d¿«Ûx*úûG/EÑ:MÊ—zз•;þ÷~ÔÚQ]¡Ò±õ6iÛ*á?ã`(¾|Ta_(©âǹï_èŽ uQÐ$ñã‹¡î§×ýñQÅýàó¿ÿÉÑP]vÄŸ:øgÓo®•íÛA• A6½ëÏŽî;lêÇAû.ŸêÿçGU8*Ž×ôm]øÒñôÒqÒmúºyùˆ’üÅÍ¥‘\'¸äÑT›¿|zåë&iƒ¾n}ñuÔ ÇÅñü©ì_MŽyúŸ»ùã:¼í{ÜŸ¿¹ª¾tYÇyšÏ¯ÿÂÑ :*ÞÿúÄ“‡¦©ÛþqrÙ'-zÑÿâÓ‹µ/=½xÖÍzÑ#_>úÜ£â}]a}ù8HÚºk‚húˆ¯Ýâ¾0¯ó*­ÛÃaðòóÝLJ3Tyðû¦›ïÕàäÍêÎÇݾë“rºûîQ3º{h·Éã4ï{ÐTïWªâÞ8èƒÇAt1ä]¾ì™¯çÜÝÔÒ_þÛÒ$‰ým÷ŽæÐ©Û’.Ϧ*žæ7%—QR<.òjãoüÆÑNܘæ·{éãu\ ›ây½ò|ƒ1Í« ŠòyŠÜ?jªg݇ ´ùÃj›Lcu4ÝN>ã2á2±9õЃ£‰ýÔ[Lˆi™}õ9ï®®ö‹:Ë#ç7(ê‰;³ ÖþžoÍS÷$U‚Ù Ö0«Û¼_Ï“çoަà‰ä%IÞ 3àÛÏ7ìþ¦­£¤ëóï;ÏWÿ+g;G9¦éß=Z+N<  šfñÚï=ßØÆŠ€IÁ™‹e5(r°ËoÿþÑLyêSš6‰óˆãóø^{>ÒY%C‹qŽŽÄJ9ÍÒܼ`ß\7Ó0{ýùfEÝôy™_|ð¿>â@NÜÚ¦þ†7žïÓÚ:ºk]ûÃ皤;AqÃØzóùÈe×€êMÿ­ç#—`äú¼[.€o?ß*Ôí˰.0ÉJù{ßy>bgëÞc0ÅUN%:è›=ߺÍÛ~@sµ Æs¿÷wÿøù¦Ñ.Ø&E2Ѻwoft·A›a‘\cdþÖA¿Y(“2LÚ© ÿƒ~SPÕ`.XÛ¼Ú¢ºÓBøžƒ~T |Žÿõ¡ƒ~çåYÐé=ïÝ~¸=øÀA¿áèšD L´°Ûèõýðè9¶]ó¿þÛ£jômPuM=s9øÇǰ `6Öꑃ~¿5T7n[>vÐo[|Wøßâàýþ8è8Ha}ÑOüƒã¢GñSÿÎÁ˜·¹< ‹:Úœ¡/"¤°œÙhyaq›¿õཿ8ï¾zçË翼 ø¥óêõé†^øâ±i8úM’³8§ …ëÌ×Ç^ÿÒòÎiS’ôÁ™ß[ÞPÏ—–õô‰óŸ¿x´.+Ð%š óS±5õO^~úg÷?Z¾sùüpøïÅãEà þÚ)»w±ägn¬ý/Ÿÿ!/¼ô´JçÿÑ 7ÿ»VOÎÃóÝ×ÎÃX?þÎ01T.iÏê¡o†þÌ“_½Ï\ÿºŸ½x´ê=µo=~S¿|öà;<¸óGèÔÝà»Ó—~æÄHõ<¢ÛýžyJu6ÏÆå0]Üé÷é\ úýY…9n†ã—>mT­9 “,¯#å¦ÿµþ#ö§Æ×=ò—7~ŸÈf<=~þiÆÃK7‘7M“©ÆÓ·ÜD6ž§uîœn¼úÿ©qî>’ ™;MJ£$ø¹Iéÿ˜³§Ór0}˜2}žŽÝ“3÷7Fì_N]`³6¼óúw9u¿?M仯?sÿÙ 3Qß{bæÞ}úå`9Ä„Qrbñð…’˜ùÛ’øÞµwûûþdÙ#‹†»Þ'Ÿ½±O¦Qñõçî“ãÁñ+¦ÑÜko„`¹À“o@ê¼KâGC¨ÏOºñÍZ[ƨÿ z¯âñÇAÉ›uÙà˜Wãó|ôøn•¢áêöMwß#ðÅI¬ðÚLÀ_:Ñù~z¶ÞÜûŸ;Eñm_Ðõù¼ªâkÓ è’•Üé…~^¸|æ…Ë×îˆVÿÓîåÿbÙËØ‚‘ÿ¥ù_<‘ÿ•ù/ŸÈ¿s"ÿî‰ü¯žÈÿÚ‰ü¯ŸÈ¿w"ÿìDþ7Nä¿r"u"ÿþ‰üSãöÕùß<‘ÿ­ùs"ÿÛ'ò¿s"ÿ»'ò¿w"ÿµùß?‘ÿƒù¯ŸÈÿ×'òß8‘ÿÃùožÈëDþÛ'òß9‘ÿ£ù?>‘ïeì7Ѹß;qÏ'òÿðDþÈÿç'ò?:‘ÿoùüç—Y[MR}|ÏïŸxÖ©oûɉüŸžÈx"ÿýecz þùÿ{ÚV}Þ²P[•W.ûY›­6åºTòæ7I¡žKÂq’ºV O˜î€ýžö:Ø÷ŒùødÌ«”ûâªõñýàý1iºL˼ö³_¼öóãö PÄ7ÜbÔ'Ÿ²=þþ2èS ðÒs7À,ÃÇÍ{¦çÜÝòÛ^~ù:ßèöd“béÌT:·{ÁšÄ ±œn8ÅfýÑñwJôtð37U‡ÿnäÏ_| ù“ùÿâ–¤èoI•¤ëßœxÖmIÚ³HÔ?–¾w"ÿ“ç)á4SD#HLA*‘ë¯/ƒK¼)-’*ë×Ì$!%©ñšŽT<3[…%Ê Õiò_‰Xë âÿÝKsÅÃn ÚRL¤ ÊÒž ëë¨. £¹ÌíQœÂ‚UØê²ÒµÂµm£:Ià‡¦¸l‚¼£I};FC‰Ds5ƉnŽ“bÅ‹½ˆ{÷„¥m].Þ'=ä$ñçh¯4íù·â¥â¥[ç–µÍöÊÕ˜ZBD–— QZÙã»üJ9螤m@S×uÌ4Uë!Ç ;LZá2ÿ BÆ åcŸvÊê‚´'E´¯™s–éåa’ÖèìëYý.I*åà-mS7æ1‰ûÈœ ‘«%r5E>µE~ÑŽRe‚aV&qN€¡Uq¾Å3FZàŒeëRmRÖ[|.×ÝÜpÝQ3uס둽¯¢u[WlÙù÷Ѻ½ïÙwìˆ3ûؾã‰r-*FH cþO²·û½Ýÿ‡y®†höÍ’A­GDz$cÂÉËKžreÑhÏQKÀ.ÇoM0tl©¹#Új”9¹]º»]Î÷í~Üy?îÖy±@þÉÑ79ŸÛ}ÒŸ™gqC€¿MAŠ>‡¼ˆã:êšÅÅáÅc´N¢ ~„NqŒŠ(kÞ„uТPY7”&@5°ÎiÖ»÷É]^Åøn¤ rÃà‹ 4Æ8äÔF¹r YFßcÚSkÎì7aú†CÎZ*Úì‡NHÒÔ4 €'ááZÖ˜óªƒ à£ø‡ZŽÓ÷ù00Y#½“K\X· ‡ø-¢Ó:†*ïÖ£ëb¦Uj;̸T ³,¤©æ¸NŠFq´À¸®1!Ö5&FL*_èEk<È!ÈMÆ¢®7;E7Z:ÐF©ëS²dÛ–~V iPoן†_8?·‰š·Â*â™#˜® ³ã-Ž»ÏƒB•Ÿ.+¼ƒ’!A0悚X`Ùp)‚}·F76m’òÕ„ SP­u”šë„]°uÒt4V³‹Gõ_›D{t/à:@>ˆFH‚×CÑ«mɧ¶¥|ˆ!Ö¼š&è[gB5šñÖè,©x£úÀ@›ÆéPå—#×èà{ÐP|¼EÞ‘ ì’Ó,èuéªdÇI‡¡»’vß&ÙH AÙvc*ŽwÈ~"º»§f¥;p»Yù…ßœge„%/hÛ`?F(/±®k^{]”Á©a¹á%Ö9GP"‰-.†r–còëŠ ðº¬tu]aPPa:†h«¤X;˜;øÄÁƒ{À>Ð%¯"Á„$2]Ðqá¬2ºKðÔc¸m^xÅÜ! ,’°³äeO"¡ÃW FŸ®Y“ê‚¥«6³äø%ÅY³.|9áÐ`…iÉÛÈÖ3¬lŒãRT(¨Šä’D<Ö%É3ƒo©žˆ=YE1!¼‰$®ã é?KöL¡#¢¶†ò‹½¡ÎP_ 1#bÂn(A 0 àDâdõ€W~?@§,~=Xè baÛ ÕjqÞ5º`Žq©¯ˆñnÖ aèð¬DmÊ¿H—“‡ð’W%À %vm >å²áÉ@©Ëý1Ù'`J#ÌQ@1H±¸aR¥xQœ—‚E+0àÐ/$À+„,èÈlÚ&š?cÊöÄÀ­WI[Y€•ã5 °PØ•ý(í¡!³²%«¤ºf-¤ò`ÂP¸ÛÆã:ˆƒ’4s|“ ¾è¬¢!(o{Å´Þ75y!ã^òbiM Нº!t<8eì£q.÷=¼pÈÊÁ’e& í‹?½/g?a¹7`lÆ"*Ç".Æ}^Å ÒÆÑƒôW]]€`QuÆ¿û¯èÚðºâ¥äÅéÈ+ÝEUWè0,þgãák0†ÀD­Ù6dÝØ€å¦iȹÙ¬õf¬b•©Ð™ÝX%—}SïVcU]aí¨ØCÈÅr§ 'FEÍW±«“±º"³ˆ•ïþýßÌ t«vu‰ÞðÕoòªu£¶¹PÛ,0PW¨¹L§õ+ýÞj¶\\ñŠ©6´@´–aÓÅ Ô§‰Ö9±Úl^9Ø%Ýè;¦awaRUøÎ~©Y‘ÔÙëcé ä»ÓÜ~äT!Ô –£®i”×’…5ó›./Êv¼àÿÜ´à½-gÞtÑ:b%ªÀK¡ëvÄwµ$ȼTºjÖÙàÒó ·hw~ºpà6b1 .»¸+iȰ`¬!!Ìcp­ìH<T ߉øÎ+¸|"ö±íÒUÔ¥£µ-—­$ZHDW9ÿÉ5Ž\U´¨hMÑî¨Ó Y ƒ•‹[p9CF0’V¶D×Ò±( O×p•É·1“r ‡®ÁcJBµÊA• ÛìG5/ÈÅjž°jݪÇW áJUB›R$ϤøÃ£÷%W J¨Hüˆ”ÅA‹iLZ£ÕR‹e_ƒŒæý7+M ’dšìÇDaÁH¼`½QGÀœhFÕ›l]ªXŒŠH-ªÉV!µÚåņ$¢5{¿8â:‡ oÇy|f±«Ç¬PaUÏõ‘QÙh±Î%™¥Çµ³<[h\";¹Oo´ Ó y©È¢rpÆ’°€ K0‰œp[ÉZ6ÚP&¢RÜ>ŽI]ÆàÍ’¶åø×Ë´ÞðéŠJck‰4Õ¹&ÿ SÅ7Rؼ"’i¯¦ÎÄ”³1î´3¯ëk …ÆxtjU¿Ã]6E€½QÛzXÆ_ÁB1ÆæHû>l5|;·9v?ü\üaK.ͪG©v,‡J° Ú,Z¡Š5‡«r«êv£ÜFbì ÈcÈÄšä0 ú öA[ÚǶ$þØÿ±¢«’Ûu¾%8‹*RpÌLf4X$éIK*e '¯j&4”1µO j ,%ºR¹*FGlPù=öÍ-×9M;-J}»Õ ±pW? xZ':¡MSlV}wu»  ÷}¢Å…[qÐi‰ºZ»ªºF: ªö´8a+ÛàI£ï`÷6o; =ü-W…§ª!NNÛƒ~oyyKãDɇ/¨çíî '”¿~ðÖ?ž_2Û>B%öµKÿS6‚ϪÄñ}ŸÞîù¦/ù̓/ùâM_2:Ùk¢%!pJ¤çnÃ磯~@_SZI‚^Fy>Cœ×Ü.bЇôEÓ©TD/4܃aG;ç1ØæâÃíçm®ßC°0X×+JѰõNšš»ÚØž¨B€ö”¨ÛZF·µŒ8¸PF\”Ú …vošÔÊ•JAî ];ÉÝÜâM[º‰æ©0v¿SFž¼SeˆØ)ìSG&Ü[Úd§½«´Ã!eçf´o´+Õç»ïȆê [‡Œ—5„ øû¦.z=•ˆÝ°v-²v-(ÁY^Z~^RhelµDî êD—)Ø+ƒFÑ~§Ö ÒË“ze¤”xÅ¥„è,î'y»OÙ“Õ ­Ño‰ä:,™Ø^`ÌÉåë iEOb¶K24@ÝЃþë¡DØh£-Ì\"‡Ü>¬ïµ¶‚.Yåíõ»`kßD‚ @•äh$æÊæ•j»ÛÜw÷lî[ÙÍ}+qYtö ýè~)íÅ€.£Ûƒ*Ý 6w¾&>ØüÿYh O[ATÙ!(M®cÅ–·xfW¬.Š®x¯!y%¸ÆÒ?=‡MŒ¡+VO[‰Å! üh•Îæ¯èük,óù B–k(ÝÄê_iÍ[™ÚU(Ù !¥-›zŸUÖžì¹²7ÜÀúVô>n׌ÿåÑê2ººy]û„€Ñç »kKìCr-[èþ·x} qÌ·^åõÛ£çÔÍ2Ù}F¬JV|°òß^|Þ}×ÞÛ}Úï/èqÔ_ºQ6.ð‚à" ñ)y7æü(é?*.ï’–Bkfv…𯖖=Y_<&|T KC}à™[6é;Ðþ´ƒ,ÁòXê!Ä`ø(Š)^‹Jö ØÔý QA/!cœ •ÊKp1ÕD%$ùµ7k©+4Ú0êüÊ÷6žO! ¾ëMŒý7$ÎFâÐÚ‡¸ªK¦>qFþÄê¥ìo‘«~kHÕ…Rb•&Œ¬Ò´‹ã˜ÙòC¸—óÊ-âözbäVÙRÓïm#GôÛºuº4÷<(— 1ÌÈà+ˆ*rBy¯@Ÿu£¿ÉÙÖЇÁ%Ýðä c?5ÅØCtÂõ\ªqŒ‘f~”PþÚñá°hP$ ŠÔa#’2T®ŽŽä‚åfG9ír‹n%9âÊ0RçÊ™#`ºNjÖìvrþóW •Å·Ößsž= O6áMôÃT8gÞÏí&ÙŸ¾t ½$ÃÝq(+åØxËj×1A]¾“CmòKèäjs½¡ >&3z“ ¹•(ÆÕØNz<>KÅ áavt0>›i´fc@º5¨ÿpûXvTTZSJɘ°¸¼Y£{p{H[úŠbôi;!Á‡µfzÐÍßÒK羅˶KC}_WD{L‘ðà7UÐR$QCN 0BÄÓ³†Ü•Ö=äО$¼¥:Sõ7¡ŽàxˆåHz(^(m ÊÖ1Ì=ÙtºÐÖYF£=MJ=r¹)Áqa’ÚQí»ð¬!Ü¡ñž2ØNŸó|Ú`ûáo,DcØb¸C¨Œ](¤¬ëÀ®è¯‘ê2®@ ` ÌèSh .1p0ç!ºÀàï.Ô±µ¸`X„mž­A:AÐË+)¼¶ ®*XBt¹0|~.Dª,*¦*›žr©!FF:W¸p½ª!p‹T+PAþ…èШH)/¡u¯\Ôsª‘X6:µßÍ„PiŽï~“ÉG Y!h¹{»>0]µbÜš@ Zx$òHꑮЪÆ*æ RÊh´8Fû"—¼ÄM3“¿@‚&ÛrªØ_STSXÁöò`Â*·¨É,ˆÖP%h-*>c0­žÛ;Š6bo/`°2U[WCu"zÃ6J®üÇMÔpWÔÃ8IЕ©ÜÖ…ní¬0A„íE¹ÜídØ¥9:őܸº<ýòG˜RH„1è; ¾J»ÂUuDdâE nQ˜ò \D¤&”¸I»È kKIÒHåPF‚1®3#¨@Œ–¬3mZÖ™fú:“‡¶P·ét @t_KéëºÛ®Ú бreob2Wz3²+ö#Ø3ÉÀ¢“JN7TÔ²duåôl·&%z^ÒÒ: šNcPµUÐe‹Je&½ÛhSIW3G*¡U ïá¢QLÏ]š»D${ÅÚÂå¥ 6 ¾U߉JÚš©>¶æõʶk·îÔU`}Üž,+ )“=ç.ÏðA<ÔH*Õ„n<7F3,Â¥åTU%F=ÌF¯Þ¾„¸:–HiœQRNØ^ú¬À´Y¢KZ{ìJ‹qvz„cñÜ´†\–ü§c’bqfXãËÅGÄC”Ø7¾…¾d”Z'mY“ŠýºÂ€ Ôgµ9ž]QEÅT/q ÀƒX»×‚3ÈÝÈY9ø‹]™£O.=²çòåT³Ci«â› |êÆXD£,] õ×ú5NÑÀ¶º D’Õ€À o)9LJ]Œ6ìVú´©¦„ʰ&*dÓÆ´û&7\í­Âû!¤ÆÉ¾е–ˆ/+kJ?v*ðZè*,('ÓÓ(¸æiŸ÷ÕP¹ýF­“© ôôÞ²Þ21¼”ýåhõ%@zë:÷»ó@\6Înv˜î½—\÷†ï‰_~%‹Íb]þü©uÙ»]¼Ýý?Í[®][@¼5¹éTß§.ÙáojEu‰bÛ:ý¢QâX 2MYZì³’K„F,¹¯OÐHbî]úýz2~Ä#÷⵩½íÝð%j„ˆL›O ‘¤¦ÁR¯Dm·QMè ˆÊ …È*ŽìΕM< T*Tà]'²*hÇP>Š,+ëuÕÚ¼9™„©(‚Uaßßìik·(,i¨Õ–è»éû ° ±kñÁ-„Oý~—uß~ëV¾$+¿ó-¢ñ š¼Ö-M‡N(3i[ɸõCèIÙA ^/m>³2£Žä™X·*9Æâë¸úùU:‰T_4„ U¨ðŸ½’h‰[HÔ -Zƒ #·&[¥˜M[º¦m’Õ~4E&qÃÄ×âBíô61 ŠÆ„°fBJÇÙl)Q¬ Ƶl±‚'ß Güc€QäQƒHsPMÞVµE ùMòÊ+.M»íØðË]b(¬B¢:™Ð#]mÍa(ÇÏüýÓb5kjâjnÙhpªY>1'g™³7¦ÞšoUñ%dúZîò­Ó!Ïxõ£›€zÚtÿÝëNl®Qgßw6yW½yøk"W`A)Câ'ПpÕïŒøŒÒ01¾Q˺©M\µ6—Ý–6蹬Zg¶¥dyº' —UUטԔTe]’O…ë!fò°¦–·ëmãåÿ.µ²¶T%¼En¡}¢nSáÜ[Ë„¨°ÙC“ o€I4&ã¤âg>!éFÂé½’ ,”µ YœLw˜9JF> ©¸îmaJ­* Ï `<%–/^9õžeu‘IÀÍÜ›|[ã« %#èí>€® å®ûƒ ¾Ÿð¹ÎÕ¦S$RŸ‘Ë©M¬“Àr€]çÎu»M(a…è©“µ yé3VÖ!ØÓ.2I!)@+†éRõÔx’L7PB&æ ì'¸"c¾\Úá©}°LÍ– ínJúRJpë¦yJ¢ñ-ád*nÛë=Ç’ ³]¬p Wó:|lÒ Ä@³<õ{‡îÖ8tÙ!°gø2*£cˆ½ie8è5eªÅïVnäS¢œq£S Ñ«¯Ž]8Â5§>@ŒÜ­ ãòÊKä…­Œ‡ÕЧrÎQõðŒÇ"mÍ)Fn"ª–šè©’4P9ô溚“ËÖ· ׯ$v‡?.?ØeðK…‚ÎÐqãRÅ@¥%0ì—¡‰©™d4ªÄf¸–0Dzh.[˜;dÉ ã€XîsÀn"3àðÛ0`h«ªP­†ÎkÒd–œp’ç ’ÆåV!-NxÄ  Á8ã+ùf{-ÑF'} lc¤©@@9gEÒDRP'©ê܆¿îêÔ£ÞëñÕZÒ`U–,~«õ  Ö»ítÀˆ ¥‹:êárø5ö‚hAæ• )°Óq6Ÿâ$Nñ 7¡*N[¶*m*<® Êì²#Lêθ¶¡©¡kg¢cM( \‚–#È&Zû5ÙEû¾žÔ¬²ó–Eð"ï"0 rhh¥º²Û…†y@1›Æ]©“3[ Ù¨ ©6O>¥A6Y¶ŽÂŽŠCJ;DkM©TuêIf5{yJVEanØâgw`%Ìk ü‘ ¤[´Vª²8–ìc|B€ùW»×fI¥F/‚4ÝOˆ[×.3€hSA(òˆ_¸÷+»æt[lœäýæßŽ-üÜ,ÖÝeÜ÷T¾n¡Œe;¡’íK÷UÜK7ÕíKšS'¯0v]È= Å2‚Õ 4‚ĺ ù"Œöó³¦r¨D:F»'Á0¦¨ãÄ£É1š'5ˆ+;¦Ç’qÐ.U:ä‹ ÔÖbk5CÓmpé–,gJ½"ý„~dltSãïqL‰pÿ úÂ=JˆËƒvšíÀ¡Ã¶†@¢KB¬ÉÃ¥«%°©Æ¥Ý_ú»ñg .zŸ¹šÏ©©Óîåsêð׃{›£{§ª/Ó%ʃßË£_1+geâÃWćoKŒ°óaMIOÉ®øÆˆaj( Ö•ï‚÷ކòÂŽ …‹¢ÞÇ’bÛæïB3d͹Òx—çbIæ×ä1ì±Tp $:dºÒ¬ǶÇé¹}ÂæçEÈq MÜc\jªíZ$Ñas.Ö”U·‡~-Ç©Fᵬ+²ÔñuYÚd[]@Mì,å‰,5KxÀ¤áÁŠ,•yF¢2§‰ì'Hã÷@À¹òj­œ¥l¯ @¿æ¥è^íèr–FÜ;vB”Æ×qîøeWE€õxê{:-íêR9'+e€™š“èü¬ˆ›ˆ´dJp %îZŠdSMy;‡z“mØ­Xnôƒl]È-uxP}IDss”´çg:=@¹Ì”ñÒònN%³`? Š4å¤8>æ×KÏ੨žÜ1N{J0±µ§‘ÁÚñ«Œ†‘§EŽˆp˜¸ž$§×9°­»O›Ó*rbœ)“º¶XGZ!oi’ó³EKN¹#6¡cØÑ4H6¸´â€6B§½ý´ïuZ®å©“Z‡ä= '®zC}fÀ…*”4OÖ~ÙÊʰwU.`P u’0õ’.?²Ä|š«¬ÍEæ>˜ÿà۬Ňahn·ÿï³÷ªÙˆ ¯¤zÒ±òÔÂxŸªÍûĶäD´yÖi`Ó'óÌ!»Î´äm§»n…Mÿ׉( Q›ŽíƒÉ]€ÈFÂ_{¶ÄÀª‚ÁR7fB›dVG‘(Lç`çÕ[<½ã5t¶´ ]œ»±ó9ccZÀæŠL-úPòÜH¶Ü‹£@€¡‚ Ój¬Ãn›ê:V{F ±M¬ÃÝÙ¬œÇ핫ű.T“@{ÿñ ÷èõú FG(‰ŒØ„›M ÄÓ:YD_ ¬ÃrÎWQƒ‹ ˆlp‰yÁ_Ư ¡MP”±®:ÁvÇ’åY˜ÇhÂ^»–!¶±ãt䔼pÚ~6œ&Bä~,Ïp;ËÅ’2×v"°³Á£‰šÍݘt£m‡8'Æ,ÆŠG5)•¯N®Å#ŒÜ”јMC¢;2®,”R‡sç‘b;Âý1®”2Çn,Æ´x³Ž–xja¸^´RQïù#áê Â댢GÕ*ÆŽŒW ²«ˆN2 R íJ/RØcùƒ¬ë ³“´ŽOÐqŒðÏ­ñˆ°ÝGYæq¯sÀ1<·1ð0/åà ýÃrkà µ#æÜ‚h|ãÙDC¶'÷\ø©ÛQßxq¢:÷mÚ<ÍEî<’8;d¡p1•©H)ҢÈT+ž³ÎÈÒŸ£Ñ–µ¦ AãLn:tèjBšë…€~‘€Û©Žä=¬€êh0?<ßç:^"—ºö8yé[{DéUWgáV02#âLE(¯Q*£T‘Ps•[4ú½g6:£vÝsQ»n×äÿÛÜä2Ë€#ã!*s\a¾, K°UÐH+$×qpá Ä( ™L–Öœ˜Ì”ˆ“éÑ´ŠÍG"a2Qu@N>Y•f=\r#“Ç—RÇ[c™~Ë41¹öç’Š%•Vмk͸ÒNse†Åym}y­¢U“7éÊœ4wväâ}ÀØhÀ~~íºYg³³kT^/´Uä@u€ˆ&ð:ÚMÄ,äf»øà‚§xÖ;wéB= (3GÀÉøÑœcØcµâ~²ÎÌË¿K˜ ˜J×Fü&¤ô•€.k1b^yÖˆáWÞ[Dªº¥Õl­g4Ź]ˆ¨i®&-ìl<8Š3ï ÐsNËÎû}rQ8Ód­Ã!éŸ ™O Å.Š©âÚp´D3j'¥CÜoš”sHÑ8díNJy¤™²¬Ôôi9Tpà~²Eõ ?ióÔ¤~Tй´×ḿ2¿1ÜðøÝ—†¼OPûÊafì8?«hÒcWë·Ç@§NHÕ.éÔ©ÿÎÔ'(Sîˆg4Àmi¡Exi®B‘+.B³U£ÉÉÞ<ã0KâÜN#µˆ®‰qXN)õÝœR¤‹‹9boòÉSzú°)C}>%¡ÓXš2èá âGNšÐɳϥü• Ô"#[>inŸcSSrGŸµÜô,Ÿ¯¹v˜9eÓ”Á‡kµ=È9¬DІاú=Ìõé‘2".¨i”ze!ÉÁ˜ ófÔò9SŠhÆÜþš1ôF@ýìt9ÎYƒKMÔۥѪà°•¦»ÄkyÁåQ^@µçqÖqÆáûãÊ(Ι)ÍpšÁqÙUOµH.ðÃ_fôþá=÷÷Ü?üţޖ^o<÷Ã͹sÒ}9¥ÐGY>ãà £u»Hƒ¡Þ­q2/ tÄ¥C æäK6H˜¡îørmšM7e£‚žb°è‡û•ûØ|3GO0»‚b‘¾6žÀUËÑíeÊ'ýv)#Æ‹D´H(/S‹D±|Âz™ ‘^¦–‰æà§é.O‰ƒ8hzkÞ3(]f`›‘ÆüŠ£¬è «Û‘Âd`m>È8ü99HÅËÔÑ“ _¼žStÅ2§ ¯Õ» s¤¨]¤žqôëúÚ'­ÒYppÿÑ÷òzyôÌãÅG¿‡H§‡mባ94íp˜>HÅOn_l¾òÌ­‚&Ч>&m÷QÅf˜¤ë†¦Q5>|ï']ÂÓ‹o™¿DËxÔØÎ6>|ï¥Jo‚Ŷë¡n}›n:d}8ðø¨!îäÃ÷>േï=Ì»˜‡ ßèèñìá{vÚÔ©8¤Ú)›‡ï½ Ã#9 Aâ- r¦roj¿õð½70ÙU+âƒZ‘E«~õY­ªØð÷hx»–ýÎܲÞ«—›Ý¡ÍµÏšÐ56!iŒ+ß¼¨áß<«†Æ½Ü³î¿‡ÜSúÛU÷¿ZØÞbk¶jö…)tVéÎ!Xk±o û½l߀h'=¢`ò˜Óžý=JÒœL‡"r!ã%øâñrUJ’´k7ñlg $âBèJÀl~W¶U„ar¢b{iìß!á™ünA_ŒF°ä“áAñâ¹½2L;,C‹"uý¶Ø§ôLoƒm&¤Ä5ˆ"žÔhWaM££¾f5 ’’Ë»;kšŒXŒ)!wI«Â%„çkaÆZòÏ t+‚>zÐ2{^WjJ1VxÏØ¯É:÷»Z¢D¦â]WI§Ç„…*)Èe·”ʵ²3ÇÅ G7æò‘5AóåŒVßÄòþ–rç,É< m“,¼ù˜y¢{nbíœ?Évã:Íç ?iÚë¬8¨VÒ6[9¸Ýš¯ïfK7•Mk㨑ýSÓj5mÄŽnÚpo7ÊRSw)sJlÛ¼Û3A½°¼”×9":8Hãh!v(Ô0ú»“m¼Žür,™Îþ€â<²/–+BŽŽ&2ÇQVPc(Þ¸‰K{(p¨8¨cÚËìy4¿ndúÝuE¤P6²ûD^™ªºléù+sŸWn«–ÝDȳ‚„%…ê€)=ö–6d&ÿÞnkÄu Dle#KÃT›"r.cÑ’XŽ`ó\ò¥<9Ë©8ö c¹ºTýŠ©¦ESNŽ.Íó% Pv“—L°eè†":+d<8»Lóžà¼Û¸hŽL™wº ;ѶÕ[îxÆ5OjN>AÙ6$(ž:¬üwˆ1[³6k"²õÄ69ûçJêr%eûêf#2ÕˆL5Ó­Æ&ý­ÚÅ;¯é;žÐá+"2E#4>iKgãÜR‰jÛ"Ëo }x2® ŸS›€ët Ÿö…R³Û1“/ú…äÒ¾Dî`w6ì½[³Úh+'V²ìЄÝ^ ›D¥Ž¨rXrXjÝ'"g¬D4ЀøÁèPw£’õ…‹ÎVÚV-’®Žˆµ¹|…AÙÖõE%XïcÂVN,ž å¹-¿­&:HkÏŽ+!Íru¸xß=øÖ7|¥éÒÐØã‰GuYKÑìHnáXÎ;š+9—ˆ8]qr÷ D§³‰¬ÌuÝÐʯ ¡–@çQØ/MÃ7j*z~¹"ÂŒÆ#•!f]L˜Gª)K¥¼íêvÅãP:µRhÛ.õµÇVr¯mØÐ¿è=|³¥€ÁP. Pdæ¦Ð´WiÌ;S5  …„Hƒ’o¦–ZnŸlÖv£¡`L"ž—§•Šú ‡a¤3sx`Fƒ€à]{B¾mïäÝ6ÉB;ý¤]×îØ#eëÈæ¶„毈 ‹/¼±"¹[ÆÃdokø÷gÿåÀœu­Øj"<2WÒ…À ï+D4¼yÜ¿çê ý7xNÉqDí úBDë6Ø c•ðóÊJÞæ¸ÆcPEùm}süû_›µòɶ‰3}ñ)™øqÇ,–%ü¯«B—y¬U¸_ï–‰'å"n–‰¸wŽöD u7Ï7N7¹¨Ü‘ ™0ʘ/­QKÌXUþÆ2á ôE*¹h©³)Œ0½|Bñz‡›éèkÓ[Ô·ñ&TSa­ ÔdZ%æ+1§X ün'Bz ºÁÏΓ\„6@!€Ns;Y_m©Óð˜0uå„g‰¹ä¡Ðµæ[JâFKæ¡R‡>ÕJ>:W>¾â–pZ| <Ñ ¯±† š›q‡./¿Lb‡U‘'J¢¢ªBL=O”‚ÖZ%R®öšBB 9Ì{Y CDaq<WŠõnK,:ðÚ©Å|ƒ¯wjÊõΚ<•}b'C§ÒOJ+þ¤tåuà; !d9õùY{RzãÊc±J½› ·»‚~º‹¨Ý¸§¦ôwλÆ» å]Ã]}æWþ¢™>¸>Ð>Fë´­Øàƒ·æðˆÜà/W?·èmõH å úG×£íѾ;mVÌ)Ί9ÅY¡ƒòQê¾’>QßGˆˆiocD$ò4$r$$ò„ÓÒ¨1Q1Ž ÷tCñ‡à †áá36~X„6Ûüdž}kèט¸ŸÊÆ6à §Ò±Íp@WÞ±µÌ”`ÃL ¶‹Æ·r(‹8ëÇ7Ÿ{ý¸§þµƒS·[K¾ôÒøÀ‰…Äãö8Llî©fUZ¿,Ò9Ç9<ÜÛ wÏà¬l#ïsÚPlÉ^¹o¨=‡ØâV g+O5!x§ƒ„•t‰™½ÿ¨Ã×6¦”‹„2–agU²ÚS²º)AdGÎÐx”¹¬%]Y· £‡s¨(×m=`÷‚$~^MÏab*):=Í쉋o2ØßäË™¾©ÈÃÚMD¡"'+#Êʈs‚j‡ä-®Ä‚ãs \丶BŒ1 ÝðÝФ)܈°ô7¾áK‡KÁÖן=.Q£{9OjÝÒ>ä¿ýõy8š» \äø‚µÝŠ5{ȘœfL^4&¹tÛ䉘è¾pá¡ðþ·ÌOüä¹cöäá={Kó>ZäF&ÜÓ›ˆÎA&ï!³3‘È»)oë@t˧5ÔoȧÊÂ}É5¯&“»s–"¿)æCŻޗ7~ºå·»ÌüÚ5êýV@&Õ“Oïå…‚ªÙù‹÷0Ø‘¬`]ô¹qîd¼w™9ôbg“ù†7æp,†Þ2¦ÞhÚ~ }tjò…3¹ÆÑá¨æ"A˜¿/ø¡žCï<&Å¢ptJ4¿cÅãœK;YªÒµ¼”ÝæÑ£N;…¯í,ö (ÀTtçî—¢Æù"îä ެøÝ2IrthY93šQ‚cš/é[¾èBs$nãÙvö.8µI™ä7³_ú\±ÆÌѽw}Oõìd7!ûp'Ç™üè/¿éhßï›[ÿ9 •Ík!ËPÎÜÜÞù¦waç ‹ßžýŠšQüA¢ÎxH0Ü33÷Ò#óq%I‘sà*§®&ë}ðš¤/;. 0L7iì×PÎi—§3E×Q°åîãÒ|òæý†MnļW±É˘9s®ÈÎÉ&e—Œ­aí0áh »Úù¤Î´."M.Ð.|pÛY›.¢³’e,#§Œ•†ÜãÔŒ'ÑAÌGïîM¢†,©úkâ¢kN䦰MÞלðäÐyŸttPg.Š 3L“ÖE®0×U>Œû¹- …¥H¼²£¸.Fk÷Ñ¥¢BdÌO´Üm¨bô‹Ð:[ì‹ZÔJ㈳ØKœGÁjo!: YöYÝíùV@I¦o·^ÍæßW%Ô+Ô˜C2§õ(U¤ÆÒœWé Vy†ø?Õ1óƒÒ…™…óN¨9óÎTØdãÝID®ÈZ¹ÉoËRANcjìI4ë¯ÍïSú‘õà¡q½¤JôŽ2Õ³Êt…Ë „Ì*3©­4fš/ýrv\9xÌ0@ ܦChò9épuµçÕ €8É/¶žÞÅ@•:‚â: BižÕŒî÷B4þð}ª§0v+?@ŸBkîôV}Ìúݾ]ÿöÜÇTºÿe,%UFMóñ£iuÕ4o|4!o½Å……yÆ( ƒAæÖ½uãEz%š!$…“2Í0Lbò ¨Ð†f¾<ÕBD_„™ôR¨li\ãÔÕ˜ˆÕXÆËª3-8 Á]ªrGa-ÚüËÏjs½ñv­ýßÌú\0çäP 4‘HG¥.MõƒBÉ` }åP6„Û>ס–+Ïnæ1F,’–™YT6?,›& HIs³¥ÓÞÕ3?ÜœCÜ Š¬æ,¸íIžGÇJ¸^ÔvŒÁ0‘†Äá:1“œ=ñt—çP¦&Ó)Wè†Ó$:82Ÿ¹áœH\8oþþ,1jœßJâ t§8„Ò¨‘ˆReThrŸ[Ïú˜#y)2’—³Ë^à<<Ñ ©“K;ª?ÒG&@ÄCTæý)Ò×¼tÎ.ÕDs—H¦8_ÚSÍ)n­J9Uа\JñPš}”¹0çMjI ®¾.ȬÉ<˜,¬s#EŸ+'o܆rËElrˆ„l©±D…v¨%/ú·±eAµ‡^ßÐråÒ|Ùl¡~±‹¿ÛéöóÒQ‡pƒ®Þ¤HΡô*^¸–^M…<Ñ)¡Îæ»V¤*Sì{l÷AfC®ÊãˆÉ(rÓºTº$ÔP"­éÞŸõšrUóD'”méP °+^Çε¦¡ñzBMF,ªm 1Ü{£#Ï=@Š¡Cv2òª¶Î´µù¡”_2sV­ëÚù$˳uè¼}©3*5§÷)¹$3_))ÉëÊÀýÑŽn ©£R \Çå`eç3VËÀ¾V¶j°mœ a +ƒ°²Z[íÛ.N‚qá+Ìã#U^ ÍqÄ ^âe ’zÄ æŽ  @;„ØÉZb·•p;^KLÞg„é$¼h~ ¨Ë\;1šÇ–]Õ:Œ~ +†hïа0׳æ{„£&j\,F¢O$Mù5fMѬ¬•l™æ3*ï‚Ä’ºV“¯}ç}_ÍHOîQéb6F¥ai¥¡Ž‘ÃÝP)Ð;¶¿õïäÝTýB'›áÎÕ+ÜÑ$­$´[äJP«xå@0s%DvÀ’ü@¸“¿ÉpçJáŽ2 ÑICçð2‘¨#ì$ Dïê+]z(ö\Ë„g!OYWÉßXœ­)e¡ÉhÉlóê6ç˜Ö)^™ߎÎfmÔ–^wý¹å¸™ö"½­œ}ÔäÍ"r äY…w5â<…LáU|Ä•"Õ®“ÎŽh䣥D‚q¡×<©`|ÍÃÅuÑYåy“³8!ŸÇæœ^ò)У›1@¹9b8!eàBG³Xdbñ¸(œ®ßæ¶ s:ºžwP€GñyÜf‰(äÏ<ú/Oð)þPÖä§Z9í¡Ü¹íÍÜ ú€pŽ»,wr^¸ñp.öœÅ¡³µŒñ=Ùַ̈́>»÷±aÕp‡üÝvmr¿aG¡‹ÖÕu:Ã/Ñ‘UÓ§l¬Çñmvßjš‹ï½OÔì¿ÿÝ-kivÙ˜—ã÷ å½Ác#ÃÉ|\˜;„–n†­¦¼ûß~…ê0Zm7†p4ºo>iÝè„2·(ø ^!ˆ1€_ 0í„·T\ˆä°Y»È-ö€–C§} ¾C_ÒÃ3žå0Bù)‡.ƒêª‡®^ݪø-6é Ó STæ‡bðEºƒˆ·o šý(h^­Ø D" ÈÒôá¥D¢æ§ˆÞÂx?‰ïuÌ ¬ Ü7€­îG$ämÂßJèϘfÛ]GåØ6}jd#Åúô$®Ú çO· ”9ä±Y«å^±~ ­æy9ìúÔŸ„Šm]¦têÀÎë ˜i A  µs¥.ý3b]Tª±ÁÓ5Æ!™ÍwQScXBÏÍœUUòºÑ5ÆbJ’XJ¬Z 1gÙŒ»!}¡Î­60sö´ªLÞ—ÀX÷Š|$ÅaAËÏ"d¦¨pÊWëÖý4 BèŒo‰ÄŽ vÑ%ÍØ£¼… 7w+kÈÊ#÷½þ±´óà­–Ä.@KƒB¶.–„’• d!¬¡¥b¯“ÑÛõe»–gkçœB­bÿíK ÷ƒêc^:µˆ«wS ”{vÚ–šî€·E›Zú˘sBbóÍ7ø\ÖP­ÀP.±êJÊÀÆ@\vÀ§›¢³ôŠO íÞ\´€|ÊyU[?Q`;"ÒRFC¨h&&·rÞ®ö—“WHv·óñf:NLþʉDƒýJ’IùHº5í4Dn¿¥ 0Å*xpQR™‹†ür¥b€.8€i\KS¹:tåt$ Á=­i¥"ÆvP²/È8!ÀoX+ºü£„j¬šœ4lttØ´*ÙÀ•þJã¾²qϨ0µi(ø°± d!EfÉ‹H M´‘Z%…”¦Åâ­x®‚øº‰P[’úZ£‘@d<\zIµ_©«¦8º8¢¹~NŠÃ®òxÀ3ó «¢m!­u9È8mcÁÆEƒØµ¹ei‰8˜ô¼·3UŒÅå*MiHríÔ·:æ`¢°r²P˜°È"噕Bi–X2¬zóT·ø2· ñ.¦ŠVqµ ùР}¨Ø×QQÖ÷T¢¬ya¿ÜBFç¬tö € k¢mtý±}ö= Xú(¥‹"X:“ìÁ¯ „3CvÌoF²(hxŽê`»n[‘àaz%²ZácÐ’÷4´c(@ši#NS··ùSi2—D4 ä62Xja_~ÖvˆöÖ{ûÿk6í“TÌ…Mú7 (¥ñêDzw?Ì{_ç¨þ3Zý;^-CèøSz;ëÆOÌ©ŸÀølø}ÀÛnü‰ö>¬ë;>$Éaöø9näëGj­?,Hqˆ½#âÑ,lÊ#Fìè ýº•~ûÚã#hãv]3kX$% "Áð9q:ue¹²þ)oY˜ÕGàS?H?”ÃÔê d± ?y÷`t,kU7Üš¥†Æ? é?Æ0óχÈã ãGÎUÛÛ”\|¤hŠfë?l‘5úvê&l~ß”D¼|¬aKÎè2> +‚&ß³ÌuɃ;\$œùH™îÃÄnþÐéQ(ö!}ORÛ«QàŸ~˜;rf£aØzS£v3ºèÅßþdzÆÛŸŒì k?(Cõq~—^¶“écsÇ÷eBøAÊßæ”û†)½¨‰Ïz—“I0€Ö§jiãb¬ó2,ø~jlK.Û2–‰+ÍCÎ<C}½•‚©û1ª/Cˆ¡¨\ϾW/R’Aü¡ÛußK¶t^+0þmÕ!q¼Ûql©zïv?ÄŽ2cµx·[ÌïѾ=j·»OXŽjËX me¨/Þ•»>Æã~øÃ7™óÈ»#[üôNnñ¯ÓÁ¥ÞgÄ»•9e¦~}KGóç8Úo…ýöNÜYb01z:ñŽg³Þ–Àëk5²FºA(Ü|Kâv߸úËš¿œU5Çåb€¾™}´¶ßy²Q3íGŒÚ¹Œ£ñæçÌ[¶?4‡Ãšò¨´‘^=îMvdYº sÉ# z”ë’~PXÊ•á‹/úÞÕÁçû}“Îus1+oÒº¯0FëM(+ì9’÷‰p½ LšöC~Ù›núÃúòÍúòÑ£·ÇB%Y©àýÔ\æQb\ÔcÚÇ•[4øEtn,¼ÇÓÔ¾˜wHvOZïQ|ߣ xh"ßÛ-°ÿï ßIÅäÂÛû0‹oì]à2¯–@§‰¼rKù ×`Ÿ]Qó±LÑëEà 8W>¦¤)¸aK¥ˆÂUñYRUë¡reÌ´n%}Ûoõ“äЀríjä|k_âêMuÈ|tˆi›¹i+“4EÅÍýíçkîÆ–ôô§êþûÏÎÊ ‹(Bç~8 ±&°.Êb€rCA`p ÷(˜Å—™rŒ²Æ#©GB‡ÝÓÃ4‹&Ì! —”÷íŽñí@ç×ûP0£ovZö­Á°µßÁ"@ขÈâRއ©çvCéRéxHžŒ+í¶)š+øÅGÒóŠsk¶#Tg0¸”²°¦Q™¦èZYh†g b6¨ h@wøT§]j"z "1#Ô/æ‹c“;A]»Ú¤V%HˆJìø@Ò¸ˆ¿²ñ±«>Ë[U³¬ø<Â6ht-¶y&p][>ôéÜ'âAæq¢)=Ø01 ±UU ðÂfï&ŒP/hUHŠQƒzc²Ã¾CI¨€cƒ¼êý ¤U±ý)µ‘„`CÈã)-vøÍ‰b¥VI¦ X2VyFQÊÀäl"ÍB„ç0 [I èü"h|‘À¦qÐ0ã¤gåQWSíÖÙ BšÊAug&Ü7dc wÖ±ƒ8™b0’è'ïuhÈ.¨v²p©d;.(qÇÒš1œ+vÏpÔBË{ˆC$£á'ˆ\Ýë,çPmªzÇcšP~Óš‘òØÎf "w'†²%=æóÌZÍåví¦“ò\¶ú‘æ¯:”‡vQj±U§ÀB`‰ž\Hž<’ñÈÿ¥^ ÍïmâR@Yî=7ŽnGDmṚ">Ó¸:]–ù?çZ½´:e Î&šÝSÁK—çto¿ÀmÍqJ^LUYTõ9b¶WòZÇëîÐÁ*Ô4l"ÍY@×BÍAg{,6ÅœéÌ‘¶*IuLÍ «,ÄùÅ®:PžFI ˆåúAë% µ5WG^'eíB% Þ>ôÐâÖ-®fE²4„åuÒU¡¦Å¬c)±šo¼®“uzØé‰éc!_M¬¡¥‰U_‘eÈÓÖàPÁ²›Ut1â¾ø¬‡o¿¥_å™7¢¬ýœYTNשÎR{²Ó.º‹Š“9Œô˜ÒîÐ*¾PÐÒlÌ M‘“˜+Z«èT·, Ú‚V1#ƒ1*¡3'š“<‘³@Z¢§Y-gŒ\¯ÍhÚk’‹ì6Ç0õ5ùÕ§`%ÿï£Y¹ Ü”äHW|Ž®Ì-çåµ3„ΑÅ:?3>–çûRæüÌÜ@ù”ÙøM©tFÝšäÓe~ Æ À”“7&Üާц/¥èð©]½ËÛ)Ù­F݉¦´&íµ ŸÂÙòi<ßÄë”4V#ó½£LŸVÍç%›<êésŠÈ9“í“äZÔNS–w{PÎg. z¯}æqÁkOô™sA0ˆXѲäO™cZŸ Ës!—ŽšÝ„ÖPS£xg¤.IÓgÊ'ZihiæbÔØîœÎuNg ‡Ba.î¢Mƒé{õŠ ™ÃÉ8)ÿhje­xƒzÍ=-¦Õ_?kZµéí&Óÿ1‡^ÚEò°‹t:x¹À.»(ãFigh Æ•4†ÊoðÁ€ˆÈ upá2æÔ:›"¢x§0tÎ ÌÐ+'lìöã#îKõ‚9Q“<#Æ dXƒ±Û€id¹\Ý´× \”¹6‹’T™³Í¤ÔT(¨R{?‹Uæ2H+R[èóƒ;±@~ÔÕ4èLê" /²Ü‰ÆÜ/â¹,ìqß•„YçŽÜv[‡ uÖ+ý¼òÉÛÐÌ’­xaS“Sé ;ƒDñ’±ŒBŸ©8O|DÇûp•0K÷utÒ evR¶Cy~Æ/%Aš2°éŸ5§Í1d­es.&1Éáœî~e«ÍÉ$Ç(v‡ìçÜÃ2á@{(—tˆ{)#Åò¬Tm_UÛgÕ5@~˜èNžçyÕ"ŠÎn7Y vlñì;ŒžBëØ»^‘¹hðd_C U[øÅ¶ZÑl1)“«ÉÁ§"Ûî$¦±·cñ`y­ìW´â +’ Æµpc Ë›dü‚•£ÚË%CšÍ)«³ë¡!Q,:w‹´Ú6lòF-}CôŽE§5ü&…mÔÈ`®’ŠQ =‚eŒHY† Û2ïNaÝ·(óüÔ>²€Èœ}›—osèm¾»§¦ã Ua‡¡]ø9‚Ö†¸2r‹¬à¹øÒý>ÌžbO”B5Oç"|"åU7øh &¥¨«<%9Ço¨ñÛ”uU«÷tršß/„.é‰è§Ôæù"Þƒ'PåØ  §¼71˜±=”µˆ2Mc¦¨ ÷$Xñr_vv2c®-ž·‹¡.„ƒEóÓê8E÷Ó†) Ãt’ÁŠê03\Ôä¢O½»šd°®B@¢\ ®Iwù¡ÛztÉ×Ó¬\äÇs¢ìŽ 08k'1mª‰ð|¡™é¬ÓÍ,üÊ£ X†Ý¯Йb§š#vµ‰íªÿi=°/ÿ)…@°™pS€ƒÑEÓµxÀ..F³#cbâïÆèЧE:—/.yŠd4ï›mkaj9t:dŽ[k'GFìº0…pþò$¤!»ï3î .ÈE2¯–ˆì™šñ xÀ²>ð)Z39Ϩעò%aðddEHPfŸ”K ?ØÄ·È’ò¤H 䬇ÔF>ÊzÒ>2h÷òЊÓɯ¢°fŽD$l[½a<ó`´±–ŸúTHµˆBÙж±§÷ŽÜ\)É÷Øôè#q½T´]Ó6X`ýÒÂÙ&ŽeˆZ.ØvŸÉk®ëjtþŽ»bË#4mÇG´]´ÅJ©Ç5º‚ÝÐP²#Àߪ, †\Ð¥¢Œ€å "C"X]RPTÑ82…TŒx›‚òV é\ÅéVO²¥RL¤M+…»òºÎpå[ÒjE;(Õ-êø¼æºò¼RØ0±}¸A:@Æ+Ö9Üð mL€µÐWÝ&|=ýv]ú“6s°:BsEÉx¹J/Á…vëR°Åb­tIíã” ÈѰ;žÛP"áG™ÎnéÈFëYy„Ð\„IŠÐñÀAªWá»ùÂܲùÂȲc_>våcW>vc”#¥Þ^.0j1“lÚÂRÞ»åª50?cVˆ>Ú¡2‡­©‰ÁÍocÏ×H3Óc§êvKlFœ½^:‘.Ë Bc„¨zXóÀ¬–ÄaÓ‰¯ð¸¹—§gjÊÖ)5Ž[§Æ8;¤¸S|]®t«%U"…s±®s9fÇ®€¨ºÐâ ï3ju†þ:¦ËÇQgÝìZ 7Éû[óåÍX“ í 7™\Fkgêïà ٮŠ_c˜¥—yʰ䂌1 M`hQå ³]Á.Ú¼q·f•%7’ýaCiÖüsËo6+êD"ìGBö !;†PUŒ”_m¨Y›}œÙ—P&çq µ Ä™óp†Ü‹ S²k x¶tzcñvÝ/:øÜÐÙ¾î :”Ìr+þZ{oÚŸºcCH+oû@ø!BtÄ€ˆÝE7büI´Ì^k·Hc¤{õ˜>õ1çfg¥=&ÕôŒ»Ãª~:Õ²‡òª¡¬jF~¬Üà°H}ª¬ZœKC[™jÖ AEE*çÌ‚ß %® ”ö¾ÃÂýÑuy aØ÷Šážã('‚µÐm‰èYÑåÊêDÕÔÛõR@½,ê]¹ÞŠõVÊt«QoeRW&µ2©•I­Œ(NÊ n/D¥èûÚý r¡« n´·R7Ûxž~àV ¡Uµa:ÁÞ+·ª,ß ¸™¡ÆRŠh Â•ÖÛuhŸF‹ßÕê~`d;7CÛ×x¼MgkˆA€˜Šå~?n@6AñNÁblnÔáž'õºÒ}êž'à7X¿’1÷ ,Å‚±LÅt\"¡¹=òÈ/ïBÐ#†:¼ gæ­¼Fiÿj®ô\ŒxšrPYé¨h:®÷Y¢#—6î6¡ Ö)ãº,·e†9Q3QâƒëŸIÀÔ‰Ë[›ðó æUÃa •nÉÚ™w^‰M³Ñv +”P€ÌV/[8Žή͸?ÇUþ¯Ö93%Ú‘‡š¥eŒ;jž´(‰,t‹ó°µw%[½ âP>(ÙÚ+(aØèŽd«·L ¤)hk÷€ÚPÛj},Ïèµî ŒJªl Š`/ DÌ£Wi·d$yéP\D¡®4ÁH’R XÌ ½(²ûÍ㣈•‚³óáâ7>Ø–ä@žõ,@> €w¨R€¼€Ï཮ͬɬÅ\ƒY{YsYkYHøÉ7"²44Æâ†>å^2bˆDaŠ¤Ç Ó.$©b'¥‹#Z 2ªÄ`܉b'=x_Ž£ª3T„EªxLOQæ‡ÞÅŽ§&Q'( ‹êËFžÔü6s†ÚfZ ˆX‰1XXn1“Ë-d 8ocXB_†Ì¾Mˆ´n2n½ÝîíX8 —ç(x~¼ ®Æ¾õê ?Ë…÷›¡TEÊ5òž÷}iR c·å(™·ée…÷l¬ÒÞÁ±×QæÆXã©`ån‹³á Øll8Kã«Íöû;0»â›U°¢ #É“c/"ÃU´¤£$Aà™ÊÄÝkäén°Ä“ŽCçŠË­ÇèŽðì°@c¾U\—Í\>wmÉAãÝ㢯9É¥:,÷OËÓzPìÅ:Wd“503’`›wô=„J:é/î¾|j1¶,Á¨àI9ÏZuvlŽ-àˆßÆïmô,ÿ·R¬.7÷´O,Ò€Ü×&Abî_\Hу,"£°˜ ÷ž9tþ5îÑñïí&Ä'ŸYš^‹ŠR㵃h…tXÒ:5~ßb°`$îA¶c=•ü}jÞ ÒQdÚCáeÆØP¥1UNÁdÏÝÅfŠ›CÇ•vÓ½»9éoßݘŽ^CÔ¶Ü…/äöÞ4é7û–®ÛFgçS-õEAa[çð &Q{É ÷ Í•N}ïœÌ±¡‘[¥éòÄ©dVº…;Óä~ì]s_FÜar.&#^ê£/WP1¶„4ЏÅ)Ö;\d»1ý€™òË«WYÕ2·ö¢I*&}ç‚¥qû†±îª@˜o/ñg-!z¾}ur-ÓOgQâ43Ô–ÇÖ#_GòW…s­«’ØÙ/¬oûßK3 ˜HîìbWŽªïÜdט³œç±©îcÞ/wTr©ËÎÌ\gÒ(þ²1_,ÎÑÐdñ"U:CvK‹bþ®!B’¹`‰¹rPÀÖ$>¢—Y[J®.Æ „Q.1âcaACOs‡ÑdhÒÙ…¥P®žPkÎ=M˜ÕÈ@ôIü 7t¿›ÓP^[è‰OÛØ}ŒÆw¡»¿M<ŒnO¯÷Ô~ØEŸÂòí ·­N€knp5Ñb+ÂSÖcZ¶Þ9âlhï=Gø„!މĶ•õîüj¾¢h<.ÛkÛyˆë“zß) ã¶ÕŽŸQÚlz~jaT·- #xôpx0b³=ö\úg5ܪzŽ}pT·k²ÿs>±ÛÊqð¨ð?ï Tölˆo'×ÛxÅb#W=C§–[ªü¡BRëÐ`¥Ø1]ÿ(T%î”`OÏác¬¿H¬ áá…Îû\v_íº!¨uŒ*v#>õ2,ZhÎhGþ.O•¡± Yg4NŒÈõ¡º–—v+Є‘~'8lÂnÇÁŒáb÷QãÑIžvJm+çxV'‡Ðÿ¿ Yî¶Ðè·9&Ïfƈ¸5}y^€œ/\‚zÒÊ2 AÖ¢2åàÖJ<«é½q®Ó­êðyïüì{ÿ.¸wõøç绯޽s~v÷0gz€¿û¥Åùïs6¬Æ`Ë1ݯ3¢ìY\û¦y¾Zý¦o™î«_x —ã0‹4¦)òø RÖ$ Š3—¾¦¡In½®y¾óø«çg¯ŸÇ_»ó³äíŸÿìk÷~ŽÄÝ×ïüì•{ßùÊW~ö‹ó³ŸÿüîWïäã“»¯Ïò§ú£ng.˜Êíêðpþæ;¯½6þþ0þàµñûã÷__¿2~å+ãwÇóÿóòµñÞxþÕñü —oàïœ)\~Aø‹»‹†ó½C>Pé3‹[ƒžqž€nWUß÷çwŽ'Ȳ÷;óp& Pwò|®Ïrä|vqÿo½pâßµ:œû{çüËw~vþµó{¯°³þþ•¯?ø%†/°ûÀî¾~÷v™c2¾=B:þhìÆ;w±G§Öã0^ŽwÿÆó/Ÿí‡_ NÛ±GâîÝ&ÉÔÁ”¬aÇŒYÇxGͳ5â/g¨ÑŽ¥7ËÖ“°Þ\Ë[ø©çkÀß~á¦7ýõ€7ýÎswÕŸÌtî˜Ê¼þòLYŽ)Êqë—<=#VÓãû¿pjÌOAq–4iù‰ü5f}²Ý¾Ã/xñĹçër/PÜ,ŠEnW•ÏÍãùñùnÄrñ³ÇÁ½8½wõƽ·Þ¹÷ï~~÷ !¾þŒEkª™öƒšüñkÊòOCamlmlmli source.ocaml capIdentifier[A-Z][a-zA-Z0-9'_]* identifier[a-z][a-zA-Z0-9'_]*`xÚíÛvÛÆ‘º$M“4‰ã\ìØ±­‹-€4`Yvì˜6Ŷ§——öô¡í)A) Éh!€AÛr7>íSOŸúÚžÓ>ô×ú%]`»‹],¨‹Ó›|dRÀ`ç²3³3³³è¶òŸ÷ŠÏ ?Nâ}?MýãÙþ¶Õ> ÆÉÑQgÜR=Ü] ·\|~G€‹Â?ØJñù®tä‡q ³ª‡aÈÞP"ËaØ@oÖ±‘¾U´CÞªºG¾]tŸ½]ôz§è%‰GôÐ’nª€¾´$=Q=¢@ïëg…‰éý@;lV.Ô±YùPÉû¢†‰û#= “öÇz&ìOô0LÖŸêa˜¨/éa˜¤/KtQ˜lütêgYÆœA}& \'“y8³ð0ö³y”ðWšÁ³‰¸Ú ž©ÀçÍàÙ$^“Ô+‡Ÿeirl^W:¡ìxL‚îF=ckMRÆ†þ( ¸× €lÄ  “Ц‰æ¦)ù- Óô- SwËÈtÞ62ÅoK>yŸ(=½Û‘œñ>h€Ÿfôöméá|)£wÉIÓ¥‰Þw%ÿë|&ò†f dœ¯k*…¥dÄŒŽþa*$íhØ/}e9]Zмߋæâ zæG6Úãã1î¡ÏÊ'0BäÇy~†ëm²ƒ¾ÑÁn(|‰üÓ:Ö^¼i.ýQ˸D56QV˜ï÷8 "^ôPõAp›L€A¾”»$ª)I;¤>m ë*#«‹Úž? p Š˜VÄ-œËšy5Ä.˜Œ…3kjˆùÓð×Ää‹îI# EêqäÏfYPMâ3ÝsLæ.Ué+jÿ^t yqŒÉ0µ…¢²èöµ™Â …òpÊÂ#,¥ðsFÏÃìiéΛ ¸µÇa„ŽŽæÞú •%09S…’ÉT­®9ŽTç5ÔsA(„Aª6¶Û“GñJ·€Ätží²u•]á§<Ź÷È‹gY)¶ë§ ŠvYôçXu‘Ö¹O…•&îïº ¹VðLåe#Þ©.Xð}ðÚ_ˆÇBùÀ(ÏôÁÃ5&\ÈŰUñ¦Å,KÝÄ”;ñfSñ‘‹ƒò µDCAŸŽâ”ã+’rÄ—^3ÿüÊ(ˆ$ZdRÜÚÉÕQ°R•œ$µ­Rlð¿q‰¾RÏ‚ŠëµZʹuNæªÎÉÈ&{C?ß±|Álj&^’ok&Vm#TÕ«Èßà‘?XÄPŠxï eM/¼ÿ+¡B°^Ù E' ·^…>šdÑÀÜVÎÚÜ®éÌíá¿›Ê&+›6j„ŒÅÂëæE{«~j ìbÝJˆcF#±;åœK6²uÙ:ÅÎÕâÕ>¯A±~»^éë·ÐÎÝc¼S®P~ ý‹¹ŽÆ«_iž¾C¤v©4¥Z7%},7T=Û4Ƽ A~>b3WÝr1â=ÁN‹nÕ»©[õdMÑWµªñf©ž­Úd¾@<’¡¢ó–|óƒŠûq‰ûáá–š:ž×àÏdy^Ó[^6ŸªîÕëéz½ÙqøŒ•AK®ÛÍ2žGaY¹®—‹®x¦1às(žÉø‚ÇLwQ‹ò—*†î™‹Á4ë“C_U!oI𠵍‹'¡hMÈ¥  "©µ~¡ÝÒÐÅU²Èˆn“29Ý¡²“}“©Yo“YgåŸ% •jE‘YWùûú•d;­¤‰þG™f‰YõÊœ·}“Íåú©¯åF°µw˜ÿöÚøµ=»Ac¸–ËÊg‚£iv,'¬«f£ÄÅy*»¤{ƒ=œ p¹vˆå:™¼Å_`Õ‡~¦ l0@DŽý4ÌñÛ®Dà,C`µöé,˜O‡¹Áú„`Db,кC(j’ìúgÈ8S'ÛMЕ“õAé³t ?šá]jÙåW…€›å?ÖçG#§? iQ^Û1»–paüp8è8þg÷áÒÝ´å’Ï‚4»¤¹°›”VIÞW%ÃNß²¶­è—6=OÞ†å×¼ipÛJÐÏ0ÀC|ë!½8B߇‹wáÚÝü’H¥WÏEHtqg¦.ë)ü¦Hý‰\åÒ’Jš ¿)2£Eȼ·S!sÿõ)ÇZ*eúh­uËrÑ¢E{KÞyU”5d„’§\Ö¬¼xÀ™…ªS:Œš\d¥ÑÊú^¹²BE–y‚vO]#ge,°+*út¾'„™Û¥ŽA5œôäÅñ¼DÑ^™GžÊV±¢h? ã ¸3mÓ? ÆT­¦NñðBÿù“¦Žs?¨L°ª·²Ò*\NÆÁ²Ü‹¿($ «JÞm®Kæ_TÊE)BÝ)ð(ŠÈÅÕ\€’ãͲ rÆ›ôšúRÞ€Èe°gƒ âbÊLùh÷Ôg¯Fwíǰ<·³rºÇW5¦<Bžxcá'tf/äï¬éGš'}æØd÷e­¢Ùj`XæÓk7Y*ýrZY þŠó\¹¶À£³=ái2ô…m¶ìå Œަ–n‹D¿œBÜFƒ(I˜Iéo"·íìÚĪș̟Û$räîs,Œü¶ÑWÜÒ8ugØÊ©žÖqþ±ÀùK*¾|[Á"{´ ¾¹Á»Xyî³…Ý£´ îçF³ömøÕØDé½!i'RžzQvræ]`ÊÆB­ÉØJ“!#9Z+UËH@RŽ¡ö=æžÌVëO*AÛD~ا×¢ç ;û5ÈÝè‚6käiåÕZQ.*E*"¨ò×UæÎMþ_ª ¤ú© Õ?Ô;ª´¯ÏOXU?A»Eÿ›üEYýþÝ™V¿u³~I˜u«\óÓ•ùÙü.¬ý¶µO&hØ!‡‰ì¾plq±ÃÆùØFAš gAt NdùTfªúèêiqëü¦ `J> CmÙÖ†­Ò|õ¡¾ü°ôØ"C-V•êr‰”¬3Åo ¦ø.G9k{ÖGvud¼ÝâÕnF>æ\qQÀPÎ?IFä*)b˜ó’²Ms%GÇî;‚Ô·J¶‚ã`š—tu/V0üˆ×nö A·`ï†N‰%\¥ ³3ÑXþƒ'¸ »Qƒa§?ØÛrM -`ÞÕé®_ñŽæº«¹®{¯ÃSöSpXD—^Un»ÈZ·Æ¬/×')-ëÈ$EJJQ6eéðð\¾ïðÐ:«k§“ ÆÄI¼0ˆÇGfG¼î bN8ŸÓ áäŒz¹cëãmAnN¼`­kC/SêÙÔËœ€Ì–^æ ÈlãCI&q.¬IñѸÕFº´ñeˆã$ò‚§ôCÉ”qn"¼ýHZzÌ(×K¯‹š’ë ç‚DåË;’-xWŠ5oÖŽ$#ÆÀ”ÐÖ¾ÃëûÅø@ѧ ”&Ä^yd‡™û>½ìp²]¡€ôO‰]ÃÃØ/ÆE8IJò\:õ/¿-–¤[.Û…éË` bú‰¤ö1öÄ+Z³!¸¸×œV“Ó«!åj«Û¦aB]Û Ó‰OL…ûâúùuæat9$Öô¹õë‘õlÄÝfÃ#ëd„]ìfÃI%½}ŒG&èü±ÎH‡!5!ìé–,è4²i켡 n :ŸP×¥nƒg€»s÷Ûàâ.bZ AXòæàøš·¿ ŠÅ®Þ“¯À48eÎø41³Õ-ŠRŸffzîIæ|¡2'gqÕ’ Þ’/~ƒÓ<¬ˆ®‰'Ìš3œ™¼!Fkƒøç·¥ÙDC#X³(LÍ~4kGZqO;N'PÞšWR#l¾è8\ð kA§Ëò·*WJ¶YŽOâXéŽrØ¡ÐÈDƒ=ÜköéI½O²¿e–\LDz2L$Œ*J#ÌèÚ¹ U¼îhHª¯¢Rœ¶”[Ð~s„z Y_P¦[IÆÃ]œŒúe˜j£S(ôfAQ‹†>_cßK©ÿ®,õ•ªÞTŠ{~}^.<Äfœ9¶žœÛýÃ{0µÐѽ\èôÿ¾vl°w#ß2¥AYx“±áÔ6åŒzÁKâ{®í1¬Ìˆ¯ ƒH1S†¦2î(dùçq˜FŽS£Ót\É’{ÎZëò ZÇá9îÐßͰÿ¾öEç5¡3/P:›Ùimæ/@Ìž‰˜©,±7¹É¦Ò^¬"˜lt5þ÷› £äý¦¤µÐÀ×S-Ì„ŸGî3T³o3ÛE»&±Ù¢¿Õ:üH9‡ÎÉ•XÙZOبl³K£A-Rº Öµä€0¹š­UÑíÜŒÇüúÑl9V–te?ÚŽ2"Cü&hÙPâø1"\/ÙpýÜúƒ±¡7feŽ=?+MÕåVxA¯þ #fUrÁø ës¹}<-F–s¥: sj'W¬œ—X’.<ך…®KæuA{5þn þþIÏ[æ¼o­º\xŒÎòo¶}ÆÔ\ö¶qÿ€µÜhðóksÑò3XÞ­“¸¥‰ÌCedta@Š0L—é_H“èjzŒ2½eú”«-èªÐÕ“zó¶ZÔïu“!ü Иœ­Žf£»¯y~WŽ3¸ÙÕy_Í'Ðï” @hŒ¹¿-H€…èÍ«ÿ²7¯þeŸÿÙçµ)7õr3uÂYà]Sתîú¦@Ø“×ç ônEDs¾hWDn ÆÁŸ7ÕÊsM̎蔲s«œµ_Çf»,\$ÆX盺¤Rw4œÊ:ʽÝg§ˆ”°ƒR选cy‡¯jHï%bâóçlQ[yÒÂCVcÎfcÝ}ÚÜð‡"1òҟn¦,`®ü9§BŒ° –¿p?ÇÈ‘«R8]oê©éRR9“ÏCZuÄ_’ÇDU¡RÖhÛnh‰k6wušà2ª ? ªó“óÑ OCamlyaccmlysource.ocamlyaccxÚÍXënÛ6–í¸IÛtY›¦íVlXÝ‘”Jõ2[/YÐ?{ˆÙN@K´-D–Ìs¿ð¡=òCçÊ0ó—Àq4B¼I–1. ù´¼×Ä’©7Ù`àŸpŒ“È &öo‹0®í†‹‘¬ÀJ;´ ÙÕÃô?úÀ¿²~éYφÄÏU¿g îÀ]õGA”uƒ¡uþTg¨ƒÜŸ `ØÎe–ƒbjÃØsÒèiáw8Á`ì$¼‚M¤%ê §ÓÅ 6õÕžçg]Ã0êpŸÔ‚Ó¶ÿÊúu˜~ë rÅåÐd E½di`í4“ £9ðê¢Ý©Âq:‚ý:Õ¯ü”p¿¦à®;m›D‹w·Ã ä£îf ĬÏ!àÏǵ¤k§¸¨{É{íÙ€º–Nm4õxÔñ¾™Z¿Èû\ s Ū0p×+SÁÁ“Oꪀ蠱B`‚¢Ÿ?¿0Òì—eÆÓ“XÖÐ`vñ̨l W°†ögWîÏ£拊Ý)CtP—"sɈS®]XxØÁys¬V/$¾#0çžàþ¾à~m¯¤ŠFS¼¨„•8ädžfde^“Dã.£ð[ÒìœäÙ˜ô}'ÓŠ³Ç±Ý…c/ð²ŸÂŕд[ÝõÓiI7?KqZ¦²¶zÛÑ8+6Ix[`]IßÃEä0ûWC“]X‚\éV07%žL©VúÚ-›åYÿ"åÅzǪhÔF±:|nÒ»†žeÈ:e›’þw—¿‡Š`2E[Šk˜ÃßX5ßp§³¤OŒrjyˆJ÷á8YEÞdš¬P£ÉÈ­Ê©Sf•׫!Û<˜ÔEÅ(#œr`¶Ÿ·6•Ö"æ¼<(T¶•”0K7ÔäH,%e•=æ±YŽ6¯”êÚJúü9a§ÄþÖHé¿to0¹ûEÜFpâ)” eÁ¿^ž!IÚ"ì(ÛJW ŠQ%çLŠHvØNÆÛûx”„Úô÷ïþ^½÷úüƒ>ÿì[/x |ϵ=߇DWzéNï t­õ»†œ†µ4É•]ψÔO_a!Çëz~A_è ’@ЩPÏO=Ô]Ãà’ªTt³Ó±³6¶qx"©&B°˜:\¼™[‚vû¿ÎTmAu¨ŸÿZJ[5}4$c°Á£!½R%Ú9ãÖ%ãW8Qx„Ï =ÿ>ÏÿU‰«&ØTH·¨˜¯k‚«bï'(ÈOR+•C%5ö†²±¸G!¾v4Ôß~¼C€Èԛʦâ?/¥žü±ÞÆ ·Wìç˜ÞjÿáœZcamlp4source.camlp4.ocamlkxÚ¥S]OÂ0ÝPðÅcB|2j†² ñ qüGHY»´%Æ8ÿ»û¸Ú2Äû°Óì~Ó{Ûr*kÞÆÙtN’eš[O*AI"§ý{Ç´S#>!1Ûĸ€-ÀiéGoðd핊…î#Às@› Æ[¨·hZÐ5ÆRE‚²ð” è’&”©€¿-¯¡«¾ôž}oüÉnÇϪC8ñ×Y®Õñ0]±¹ZsHšAÀ§"ÐÀ´Bi«\{·šý*ðZræ:mG6·¯Û6×Ò©ç4kb »”|%æÔnÙi®FÊ^«½ ó:lP3²}‹Y\ºŒ“tI{[;TÇs§˜=·âj¬K;C Ñë¨ØÄ ;>d»‡¨ÙÚ¡:æŒp¡r6Y8ùG·H|+Ñ,’Šh–¼Q6ô³0Ì¢;o˜¾û?>¶»ü _Ÿ\,®Þ©ùªªò¿P5¦w Objective-C++mmMh source.objc++ basic_typeseasm|__asm__|auto|bool|_Bool|char|_Complex|double|float|_Imaginary|int|long|short|signed|unsigned|void before_tag2struct|union|enum\s+class|enum\s+struct|enum|classcasts4const_cast|dynamic_cast|reinterpret_cast|static_castcompiler_directive'inline|restrict|__restrict__|__restrictcontrol_keywords[break|case|catch|continue|default|do|else|for|goto|if|_Pragma|return|switch|throw|try|while&data_structures_forward_decl_lookahead`(\s+{{macro_identifier}})*\s*(:\s*({{path_lookahead}}|{{visibility_modifiers}}|,|\s|<[^;]*>)+)?;declspec%__declspec\(\s*\w+(?:\([^)]+\))?\s*\)generic_lookaheadV<(?:\s*(?:{{path_lookahead}}|\d+)(?:{{path_lookahead}}|&(?!&)|\*|,|\.|<.*?>|\s|\d)*)?> identifier\b[[:alpha:]_][[:alnum:]_]*\bmacro_identifier&\b[[:upper:]_][[:upper:][:digit:]_]*\bmemory_operators new|delete modifiers={{storage_classes}}|{{type_qualifier}}|{{compiler_directive}}non_angle_brackets (?=<<|<=)non_func_keywordsaif|for|switch|while|decltype|sizeof|__declspec|__attribute__|typeid|alignof|alignas|static_assertoperator_keywordsEand|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|xor|xor_eq|noexceptoperator_method_nameq\boperator\s*(?:[-+*/%ˆ&|~!=<>]|[-+*/%^&|=!<>]=|<<=?|>>=?|&&|\|\||\+\+|--|,|->\*?|\(\)|\[\]|""\s*{{identifier}})other_keywordsvtypedef|decltype|nullptr|{{visibility_modifiers}}|static_assert|sizeof|using|typeid|alignof|alignas|namespace|templatepath_lookaheadC(?:::\s*)?(?:{{identifier}}\s*::\s*)*(?:template\s+)?{{identifier}}storage_classesBstatic|export|extern|friend|explicit|virtual|register|thread_localtype_qualifier)const|constexpr|mutable|typename|volatilevisibility_modifiersprivate|protected|public*$xÚí=÷·õ´ä‘Ù¤NœÇ+2)™´Ó$mª™t¤;Më6i+Ê*Ežä³)R9’–ŸÜ½’›î6Ý+Ý;Ý3Ý{¯oºûÃ÷?ø~;àðÜqÈŽÅ|bPG<ཇ‡÷pÿÍ„ŸóH¹½T«×¦Kµ¹ª“ŸñJåƒN³1½gWFüœ)Ôž©ÖË£JkHy¡X)lÌ©äËõZÓ©5#€>K€+(@¿%ÀC(ÀZRž­àè[GÊs…zåRÃÉWœÙR«Êa½ž”—u+¥f)ßhz­r³å9üL½²Ál åõ0åj©ÑÀº5·éÖkùÒlÓñònÑäκŽ5x )óÚ¹¦ÊõùyT8µJÔÈ©m4ÂÆä4R^£mÄ©µæí(;”WjÛ›mÕÊACQù9§æxn9jê RîÐ65_ZšqòóNsã •ô-zØzEBÿAÉàÏJÇ$üìdpWR¸'ƒ»ŠÂm$å°.üj7àçXͧæÒ‚Áœk5ŸZ5ܳ›¤2lIY¹T­F•ϳ¨Ìö|%£Ye;Qe\@ÊmF¸…’Wšç”Ù…I!®%…dbx1)w©!›^É­ºµ¹¼ç ¡©£‰ÛpjÞ—(•0™Õ’\j®Ë¨Úl®Ëè¸Ì\—M¡-æºlÚl5×½z—ÄýA±nµ>SªÚ)¾íi[`<Û!ñYh!Ô˜´¨Û˱ž¤y"ÅôëN«ê¬õ¬Uu6ü9I' ÕE 4VeH «2d3ÂWúÎëj±n ºZ¬ÇݺZLÖ÷Hó#¬uÐYZ¬{•Fò¯HÆ0ˆrÔ˜¬8®”d#¬>ïÌÏ8^ƒ(ýR¹ì4u/ &¶W¥gÈ^ œñÿ¡©ÀÙÀ<,8ÓK×H:’‚cg¶MWÚ‰8öÇÝZ‹›5ÃI!›G’B2&…dÌK Éø:®´úqHÙvO$ƒcܹ6ãÍuÊÙ/;ÃÐÕb8£òñ¤|°P¿Všw ¥27mž`¨È0~¢¡"CõI†Š ÇH):»5g®„WÜRàÉJÅ]Ÿ9Pæüò¨úVÕqOQ …<ÈO•\.RËs¼:уó¥²W§Çä½ ^O³”gûÓ%·CXoîÇK–Z¹Úª8d5pSÊê7“ò"CQ—ϰ…`}<Ó‚ ç³l!˜”NJžƒÂk!_£â6J3U$¸ÒZ1¢¯ØnKŒî©v[büØgf±%ÙaœNÙ£åÙ)`$”’2T3í¶Äˆ*·Û£®BʼmK&RŸóhýÅæ´Ñ£i¶F9s¤¼ÂЈS3L¦ým6ÄÈrÛlˆ‘v€”Yˆä™t0<#¤šžá?Ÿà4ªµÙ£¨ÞfCŒ´Rî²lH5‡nIß#ÈKߣ¥AÊC¡u–…¬IÊA+hZ¤7>Pµ…*ªÕ;¤¯Çx²¨¯Çè>LʳÄz(Æœ¦¨Û%Rž«wÚo%%Ýw™žž/¹5úëRn`¿"vxMú³/¹ŒbÄÖZ&%Ý ¼ZúãQÉSŽm7ÑŠÏ!å)bEÖËsII·%øí%ZçyRØ_Ã#K>)Oe¿×½\…H )BZí…Ò¨¶¯hÝ‘r PWÞ¶¢p/–Câí.ÚÐKH¹h(¾C5ãÌE"òRR^n Ž6¸(ðËHy,mlQ°ÛH¹Ç $ýv:A€vÁ\ úrRÙƒÒ80m⤼h‚ß:£0¯$å Y Óú¯"åV ~l+‰¾ZòÞ’ïAÑ–^c˜ X/Ѻ¯5LyωÂÝa˜ ƽ*ÚÐ’:rJ^u)ïFÖ¡Ñ@€lŠ¿Ž”; Š¤ ~‚¾^š2qØg¶î9Jà7’îä*p;&Í*¾åyIã¤ï¦Q°7’r3¦Âç.Éžë¡Ô=¿‰”t[XYéÍ’èC›|´þ[¤é¥ªOC‹æ­¤¼H†(ÄÛ$¢‚öç(èÛIy© ªÚÏ£@ïäÎf¾S2‘ªá|—ä„Îýõn‰?ð¦…x7)·!dõøRn!Å.Zù½’a–ö hµ÷I“‡Û%¢UÞ/ùt_„þþRž/ýžW;?”“¶Yhµ‘’z€ØïS©KªC®G5‡r}„”4o‡÷ô>*é ûGš¹ Ìóê‹´ÒÇ$®ÓJ•:óÌ>.MVZÅ­5„¨Éù„$ª¢¥ü$)Ï~…”ŧ$Á†w!(ħ%uíÐúŸ‘,q¼> &>KJꔲ€7­ð9Iväˆ8­÷y©!ަ¾ ¦†¦•¾HJº$@®Ö ‡Ì—HIwcÅõ¨Àó{¥©!-]iµ/KhׯԬG]~E’‘ê¯J.…°Î (ËãhìÏ‹ªîk¤4¹³xÖ×Êr _'e!A Ñj“¶ò IáíÄa¿)',„ü·H¹Ó4Þó·¥ù,€«¦ïè(uª¨;§ÚpÔè~—”Y+Ø8¾ß“f³×Ã÷Ib.ÔQû¾Ž¬ˆ‡J÷°H÷εâ~HÊ«SµBÄ‹6ö#ÉkyðcIù@ñqù )/TòûEà§:ô8aùð3s/¢2ÿ¹N¼=ö RnTÂàX­ùK·T;NðW:¥Ý ¡-üZ×µj‚þƾk€?¿•\«¨:þ)s 0»¦ ü^g&1c ÷뎲ÿ¨S@$”Âþ‰”›AX>J¡þLÊm¨x!åù*Èxõ¿’òJUuä,yõV­’wJM2ˈ÷_Fü)i>t¼³û%¿qùRìç¿‘’ºõ4¸Jÿ»äŒÐߥö©{¥?ÿ“”븟 ÿ"åü’öoÉÙ9Tò\<ú¬ÂHùߌúƒ ôÉðgœ~¡Aó¬î[%¬ 'Ðü²+ ]ËëÐP؆ūyÁNÛ¤áäÔ– w@Á¹Šýzxhš{Pž’V¿ kÎU蛆fu³S§i«&]x,[aTNFe27²K90³aúå-óÒâÕˆàß!)Ú›àUÓéUrG}*cªÑoÐ ÂC·ÜŸºÑö­Þ‹4=àèó翞xþ9¾Ã6}³‡\Sõ<÷RC¨¬7QNÅ_hÍTÝ2r è`Q/´$§4çhÜ‹Ò ët4òÙ‰ááad8rè[qf²¸pä‰ËÓSa‰þ¹ý1ˆÔHc0¬6ˆªQ_ƒÜ “‹1Q©Ó ½¬‚Ü•hÎôÇ”!–ó#þˆ4-e#€=íæR!pù n ýë»ïœêfí쮌î£þ³yÉÆ[¶˜F‰Ûìœï(ßÅ"ƒ±™‰ìOœ -C×EC:šSsµÃƒ$Kª •­{~ÄfÁ²8H( L†ôñY^×D*#\SûÁ¯ÇÍÓ@|é¤þË~à”È9’Á‹2aJÉÃýFi˜­–>€Ôv~£¾5ÊγJs6‡Vä ¤'íB1¨g5n†äÌ肘Á,Íõ·Ýø#Ù¶”µã»Æ4‚ÃØ9zäÎ7ò]†“¬*‚LãËe'÷eG¦†vø…Á⑜yöBYÝ´áCõKÄ‹Œf¥†ÉçèЄ¹²-íâ‡;[¯ž66>llv@¼UÀ>Šêª»•>{ðaGÎ@ý†³ÅI—_Ìùc¹œ¬h˜F•ƒƒ\?fLŽ“T¯MX) iuçj88È>.†dô.À<65²Û¯â)¢­$éΨoy<ú:(@JlßÑŽã!ˆ÷LvXìgFŽÆÒG«ÅÅ#­¯Âpƒ|‘¬ÎxWê(Z†7/«Lá÷µ ‘TP”ÕÄÅ0Q£æªv 2¹AýýÉ¡‚Ú&ëfaÆíNÁœböøãN2“)ôË E¶¬6¨½r-·d4 ³÷ûçÇöꨫ¤C ô¦V6än;>$Wî¤ÇÑîntû(åO·¦ê$6gFLM„¿#gÞ´|›tt™ ;u\ŽTâ%‹0XcvzÄ‘É}ÅÅbc*?lÐPqø÷ÛàO¥ã(ì °ºý½§ÚRxwRÛx¨«÷òðçd²rò)< ]aÓ\; ïÓ àZ C(áoÊQèôæîL'èUf 9‡QtIŸ&¦|¶é²8JçÎVœY¼ ™ž./T[ ü¿"VtÂgðš‚Ë4Ÿ†Að*¯^-¸óA*–~ݰG)VÜ1ý> wk„ªÿxDªó>ŸÐÒh;ËeåØ>$cK çŽ"U_z‚¨^9§)è’” J¿A³ 6oÑz<.žÁ4©´«mTZ_JZÕû=‹|"“Њ,ÛòÂ’*“С٠Ñü°LzÑì¨*‚¼”nÏ©HþÒÅÈÌbf=…”BŠy;Û†)Z]Ý4TŸrƲLè¼’e4«38¡Xªº·:^¾ê6š&‘ûÙ­D~ñ uÀ5ӟ΢ È%Ì-õœRe'—J†bù¨ÀO0©bȧmÕHqïíÍXFÙÿ‘^õ?n²w²`ÞU t—WxnH<¸T1Ë{žvp­Œx_G°ƒÏ×u6éàÓJEsò%\Íþ»4òÙ(é„Éø£ Nò]nP+ɇj)zFDÙvÿZ$T¾>ù™ Áùä®f"ÝoS ÝO 4l= > 71…£þ†2¾ ‚ãDޱ†´ÝµNÕi{Ç#eT’±XÅáG[™EªÇ²»‚sºÅþÏ*“Ãæ| »šïö¨¸eM×gt¶:Ç ,Ò;ï§Ex.­Ü9oÃìI§žf‹d*,qDO›EÊ"ÖlÎÓyw‡D}~' ÑÚ|:Ó¬Xt–’E]äÑ6Ø~v“U:«(çÍ=¯˜$Vv‚ä}÷&”šMÏi±¤8+Z HÌWç¾ÍZF{W¨O4(ý=”à3Æì~-êçj> pÕñA~¿\¯8Ó gί ½?ªàSµÈ^4—üVË­ä´CÞœC“Ópä¶O"·S À†=^˜wÇ8,,TêøvCžæJµn=áoÎáàÛ·†¯‰i¸e¿V:ˆ*Õêˆ{¥*ÝZÕ­9èKhЗæ~¯¾ˆÊCM¬]|²æ{8!ÀEá¥FiÖ™iÍ΢¥ßpªˆœRmÉGP(ðÁ8¤s„^.MÂ#1ËVÐÖ¯Øìÿ’Íœ<3–9§é/´š/Ò,yÒ‹ngÉ$^E¢Qôm¤Ôº“ÝÍH0¸Daÿå:ÏxxRF§ßåþùÊëÑx¾J¼Ç -ãhD𤌆õYdu§ì¶—Ÿn»!pð˜N7X]½Äûˆ5zçvÉÓ2¨ÍÍÓ `+Ï>d oIt¾îåñÍõr]Î幘ïpb`ùgëìµ9„g.Ê~-­&Ü$ƒ *ÊyÌP 2g~ õ½Rw ›_¨÷°•¤41üÙ¢`Tÿ˯ããl ßÌc'¤÷7ò)B±º³@üóð|–GƒÚ`Ý ¬§²9y£[¹Vä'Æíi?ì··T0_. ?ËX˜cQ :½óüs ÒñÇìÓõ%£Y•é ƒk‰caýJ˜S¹,Ú¹»8˜+ ÕÑà&¯·×!u¹^ëжÔ*+pD%ýVÜËt2Õ:nírª*­…æJÕB«†–DÁEKùò~4`eÙ—ï ï×,ÜÒªã›ÃHr-­möÊ6]öŠ ’ƒ¾T:އQ —UÕf~®™¯ñÎàeJÌH"ßqíÊn1œ /I涳Γæ ÍÎÔ yœŽŠ[š«ÕM·¬¹³S$i—™ Q?O‹V †‚Ä- ‰fÑ‘ñú•$M—Ámó©°IšV©kÁƒ¢NËò¥î1ƒõSŸ¥ÐZ¥õFzôì"ÈYïÛôxàn ᣩŒñ£Û—±„s"#C,Á0)_†_¾YeHiˆD£—«›œÎ‹âÈfmVt–XÍΉæ³Ó‰fIWymGD @"{÷ªÈž"[N'²••Ó¦÷®ŠæÉ!š³éDsnåDóþUÑ<9DÓM'š Jy³ p/B‚rËsbÙH+„¶òªpv@8«é„sþεδ>òªÐv@hëé„vaU£ª…óÞUáìœpz鄳±*œjá”ýänFÜ;YÄnÇq*øqæ$!ô'2¡Â¡ù–E…¸Y%uþÔô¢ ÿ /ö8œ¦·ŽøØé(¶yÕgúZÚe±päÊå66`¯cr•ʼnxÝïí‹þHÌ?R† RWìõ2ö J¦[ʺ̋ ¬§ùÜ:ð²ºÇÅ'E„£†/HŒé!™Aá¡Í=™3F$4ÌRòê.`¤OÀëš  Ã$Ò¬ÜF½å•U^ üQi°# ÜÕ8šØ:šëøÝ2kDº–¹¹Ævnq2Î4ÝÅÀC“ÈuÚeñ¾CažMr}_rNNÒÇ9'é{謘¹Î‹‘BAú¦Ôª6ýr)ðû-ý…õ6(È>ÔµÙ£NüùŠüõ37ì˜Åp¥Mû¡ùß¿ð¼Nƒ§@ø©Œ½‰²³PÃób¡¯ÿ“MA²›<ðyê¡.¾Ö­Û­NŽ'§rÉšGç|C–´7 ¯äÖ6æs3 b©1=íôv[F-YÁ°·×ô•±Ñ°ã%~ƒ4Kh«ßá+žÍÏÌèzxó22@óÿä!wF³~"¾%IþÖáŽÙ’]y•êæß I"õ‹÷…& ‰þÑ ¤®üáa‹{u^ñä>à¹|iøÞL¾áu@c/åÑû1c¼æê<H…­Ñ ªTˆŸ: þ§‹Z|=&¾T¢áNî™Ï¡6Frr©·0l¶î-–¼J¾â”«¦ öaHí³‚/{OÔ!wÃÄäð‹ûaEpÓ!ÁÒE^ <߃á^>›¸CwYœ’±0óÚÈÉ]¼ÒCršÜPû3žS:ødèŸfy¿ý/·Ör|ê¯UêáQ$þ\½Y÷ÝYúF¤µæK>9…ÙXt1hx³é-ù‹ûݪc ¦}=­ìGý@ÃHH(”/wMöBdH}žj+Ýk$ã%¿uU[JÚr‡B_üJ¢,oO©,χ:OÔ_b]y{Z] IÕ ¨*OWÍlüéäÝþIýR+Ͳ™WÑéßQ}FÂ4kéY6Æ„]Ó0èÈ" !ÇV>t–„¦¨‹VÅ/Õ*øÿiçÆmâ¿PZA»m U|!þÿŠžÕ=üå0úv8üZ«;‡ËÎBÓΆM# *KHlÜrø‡ççFÑæ ùµE’kÎ"" ê ¥E"¨>V8ø»_kU« MÖj¤!dt5ëÞêÔgýVí͹ˆ*|Ez”øºz”Û§*¸¹g7ÓaÙ€®:çð‚çÏ·Â{X8ÿP5Zçä¯l?5¼ÑQtÌ`ß—¹ûWJ»|ncÄRi –8Óù¡ÁÝ—ß÷âÿèÖ±Ññ)?|°oÀÛŠþóGGÇ&üñqôÏÀ€_DÿùÅ¡âŸÏ#ƒ“/NøÅl1ç'‹Sþ¶m¨QÃéGöþó½¯j Ô}Ÿ¦³@msvrK±95äOLámð®0´vDÊY¬Ïjܸ¦'(â&Iè¦ÓR¬ åºÜÅbø’ÃAìüÑÂàÄ8öˆŠ•êoœÞò&z}É៽BšÙžHS[¿\@x¯`vtå¤n…àëDÅYÏ .e³UÚÐÜ|PÆà ¤RÊ0<3ªI4öʷˇUóaUéJ•˜Çþ¥§íl™OaŒ¶yµcnâ¨ù~PAß«.R½ˆ(ák‹Úx)´ÙK¹b~û!!zb+¾s5§–çø=0(êizÛaoªÚ(Oe<ž…Aká­),œëfð&¸i²Y!Yñwt%|¥—¥‡ñ8³€D“Ɔ(P,ºJmŠ7¾g¬ø“0èµ ‘¢ ÄH¯†{Ôá•î$Kðy0~ÉïÌPtŸ¨ÇÄ!u³h¢b×Ç8@î4s—&ù s…Íðs,UªY&^(tù¡Ë4“&¼ŠVùÒß.ÿ<ô\ÏçÍîÀàTÒ¹ÄOÄ›;ÁøêÊÙç9„ KâÉݙғ»ì=Q‡8‰²ñãîLëÇr¥{‰*äÆ-¯¬·))xf@.ë€çïž¿>»’g0žxþqàù߀ç_žM©  J{3;I‚ÐËr"¸|=2O¥¥<ÉÎs™òÊÄþçø?W36§0P°òyÀóÏ?<ÿðüÀó/©æØ¨ù eìñ¢`X‡0ìﳦ½¾xþa G×&lë#Òs¥©¥tŽÈóR‡Ü‹y·¦;K$ß`PqдO õ]î{E*$åW"ÜÝM>9!˜‡ódt•夭ö=š=P™µ Tl6áëœfPi‚6Ý¡žO¤ç!bÞž„òÕ* Û»«ŸCòˆ 3N3{âaì¶_´X Ž&ÅÀÏeàì0J H• Á¯Ž˜}Á·Â’ä-3&²:d ¤ AØ^˜[¾Åuñ´ü…DXFæØœ+œô¢µ©#œroïlg¼k±»°§úK2š¡žäSQ¶²­¹îZÁ“%1ÅÒà_*Ô¸iuDº˜*dŒ­º©y*÷ñS¼Êg€æ¿<ÿ ßb9ÃÉMWeÅLÉû J¾ <ß"=¤¿/ØNÏ:‡‘[_#(·=2‹ssÛríæý2Nç:Å]-µA懲ƒ?+™œ ¹ Ê`Øðp’,ÈÜÉË>$ChRÚªÆíBí6­[¶¼#1Ó&¼›­«ùã«ùã½É§Ë©Ø¦fc0š%ÊÿËš¤œâ:+˜×Ï_\— jâhOì±&/ãlÖƒB{V3Ó;énvs~ä& ÙTee¿Mñì=ÂÐ÷,‘¼”ß½2(Ûæ¾›QîÔUmå¦ßÖS¾%•šÚ)pæöžp´#dÑU¡—³SøýàÓ#_y5QïLÔ{¯ )«‰zÇ]¢Þ 0@«‰zÚ•Wð¡ËF»£D“ûŠ9$‘¹î˜Ð0J+²y Ю 0Nm%Nê2U&OÞ€ÌKÊÉ×¾PÙ|Z6«ÂÓ5ŸíLù]Óꇸ¾)´zEÆñ=âÔ{¤²X9vtÖ8elŽMöxÚ\©ã ”àóàù›mä¶ÛYH´Ó_HÚîä*•iÆp ¬.,Íûà­.˜:ƒÉk´³C‘8ŸŸðDJ¾\ªV¥ƒ¼‚–¯ ‡ôÚUºìRä£fKÃhì¸kÀºC9nŒæù™Ø}ž\ƒ>!væ[!ë²í}oÇ6Œ,4†€mÖ`ØârÈ-2báK“gÐ/Ïßy'ëîkf›Wá» óåzÕx,ì2û,û5Þh}ZYô\4ë¾&L'‰2ݶêÈ,yhk2Ø÷d4бðNFTXE¯;¿LÏüfbœ,õlškÑûÛlº7·¦šƒ°/›GÛx ÅêËœ|ÄIø åqOúp+ôXó·…OÙ¤ŸÍHH­f“wF¹!6¯û†II˜)ù)xo’ãå1QìFêDb\ùW"õS&áO’‡ ­¬ßôñké9µ]Ï´èCjM°µ¼ÔºGëÏÇ”F^LvzºÔlzîL«éLO“eÉGÞcò6òäÑ€oî$ëq¨ })"9ˆì·3°0~ðWWCtºáÁþE*~=A`ÒrÄ“'ºº9æbLŽìšÊ±LÅM¼¤0tL]¥cÃub£và–åK…aŽóf!žl#·²ºþ  ®‹š¶ ÷”¼x~`v> Ä5áf}cE‚Yɇ¨râw“üx~Ÿôœ.nêK04ú]ð[ ï—؆ê9*¥=áÉÜ!Ì û_ÜÍ5“G–G¦ )Ö'KOH ï—Š(Ó$ƒ-éZŒ›ðRˆ3#B‹37ì-.é6>h2ÀØCñ߀L¼Ì–q›ã²t{#Á!1‹î5º5‰Ú£ì~+Àíß\¥—þ?—Ù¨Í Objective-Cmh source.objc before_tagstruct|union|enumcommon_protocolsº\bNS(GlyphStorage|M(utableCopying|enuItem)|C(hangeSpelling|o(ding|pying|lorPicking(Custom|Default)))|T(oolbarItemValidations|ext(Input|AttachmentCell))|I(nputServ(iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(CTypeSerializationCallBack|ect)|D(ecimalNumberBehaviors|raggingInfo)|U(serInterfaceValidations|RL(HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(ToobarItem|UserInterfaceItem)|Locking)\bcontrol_keywordsKbreak|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while identifier\b[[:alpha:]_][[:alnum:]_]*\bnon_func_keywords<if|for|switch|while|decltype|sizeof|__declspec|__attribute__ÙQxÚí}y$Çuv—ÔiY2%Šu˜—¬ê]"—’,‘¢@œ»àâ"f–Ë%An3 ‰žîQw²;NǹÇŽsçÏø—o‘O”wTUWõt÷ €]JV”vfº«««^½z÷{õ?gøï+úóÅ0I“{qÚ;zðÊìŒÿ÷m¿QöŽd!û³½4)dR”\™òWÍW§|à¦yàšþüZÝy9’'ôç7¼v½0—³}¹ŽbgÔOêÏzmûaÎæE6ê£Læ³2 ðÙ(‰ŠîÛÇ?§?ƒÖÇùkmŸ×Ÿ¢µƒQÕ>ÿýù´÷üþ(éa»Ù^Çeã/NÑØ.Ï—ôçsõËÁÌî¥ý³ò%_ÖŸ/L|nfáÀY·ß;ï“v¬“¿î=y§{a<[œ eù’ߟØÔöúUýùŒ×ôHž¤Y?ÇAÈÄþ×*oàæY¦ý²Õ´µ²¯~ª­•Ý_okõÚleÔ¶úñl'¾å·JûÑ~$³ñÙ~sºövFÏL×ÞÎí[µ¸šÈƒiC…X}»vÇ'Ðk&ûQ)Û>[»ªéÞÇ=gǕͿ3Us;ÍïÖ» ¼ïéÏçýV™fiOæyšÍÂ^–2Î;ƒÿþ9´ãúÃi¬nÊçj)œ÷`ZÊl6Jzñ¨/l.…zþ‚Ø¡¿PY¸¦ÊW¾8íö/Mû„ÅÏLû„݇¤?o6?‘bàQQîÅ€ä.PÎíÉÎ[\¶' `ò2û=1É-'uý‚عܸ`v /ŸDcö²=ÙIÍ]¶';»UÆ6±§¼º9 Ì™Ø+—èÄÎéÕKtr³ ÚW't"“ ›éµKvd§õãKvd§ö“Z™°¹£êNúéÅž·ùã‹=oÇÿ³s¢qýü’Ù½~ÉŽìÔÞ¨ŠIÕí¡_\¼;¡7/Þ‡Ë/+|©©æÎU$›¯íö§ëàðVEÖ5=¤C™‘‹ µ² ´,Ò^?ˆ£ÜÑèõçW½Æ(ÙƒLT6[ªÈ±Ü ­_$.}”8#X®0ukìÛi»2¹­]ÇÕÉmízÝÒŸFç|ð`F‰¹{[~ÞÞ˜g…¹½Vy8ìá"™»oëO£ “xmnÞÑŸFsÓÐMÃuýù¿¡}ˆþ4zž«‘›6›•>PD´1÷·ôçíýæé4Ø®,U•Ö—ß©¾Ú uZÓv§"vUÛ:Š)Ë®³{ò \™NEbœü¸Lúæá®þüƇ+– óØ]ýù|Ãcc óà»ú󹆫–óܽ ’È0‹Ïfå)„<‡vðïéOc&¨ir_­Þ3P˜FïëÏoUU ¦ýúó»-ퟣvžn³«?Ÿmy†õ%óć•m¦í ú×G:¦ï³=9k;7¸‚Ȧ±Ö˜M³P§cÉ0MÂÊž² ³O+oªX8L³žþ4vŽHzÝ ÷õ§1ùTJVàÃVsw¿²¹K뀙\eUóiwXÁ Ïl`EúÓ¨êðxÔZã¿òã Ñr ¦ÍQ…öžÜsºˆõ§1×øÒ…‡¥ƒÊRTÓ,© YfX¤å+Ó œ}ð +›ÜãÚ #ÄïüpÖÇß_Ux~ósÑþ,Pÿ¤Wí!ÓŸsçè¡”L/¹þ|ib/ãφÓ6?Û4øQ…´>:þæã òo`S'm3•1¼NÆÀDk‡{ª?ÅTÏŽ÷¬BaýçÇ÷ý'4÷ÚûCû´mZ% k ¿jC¡¦gÃì`äMî×úó'ëE£—~øêÏïµwæÃàO*,ºá¡ñuùSýùíº]ëŸyൠÏyÀcè6ù->ëûÇmèÝ@Çþ‰þ|ªöÒô?oƒVýÐ<øOÛhV«mËôðm¯®³(™ÿÙô¯n€Ï_êÏLîaOþ¹þ n°D˜þE›¨±˜çþåÔ/n˜ö¿j# z­yö_ëÏï7>ëê³æ©£?_˜ðÔøûþ­þ|¦îÉñæÿN~É67ê®iñï+²‹§æšF5öV݈œfTy¶LeTôgŽÍζ‘ÒƒÝü†°2û½¨8\M³AXˆ× ¢+×*Ó¨N' ‡iVÌõâ0Ïçz°×«•¦ÏUšÙa.LÎfYÑ¡W_õRí\‘¹‚D?ge Bóœ» W]pZ%'¾{r#<˜ì~XN÷JÃtÏ;‡RïÔïò€zõ’o¹ú uÍÅB÷ÆýÊËžwÙ“ç,2¡õՆΦ|é3Í/m¥Ÿ+)‚³ÌZÝwɼðæK‘„àû,ïÁnÎh,8tžUº6 Pžª!)y#è(ÊÚèœé³ÔÝŸ©ÿ{»yçëæË³­ ™þW+< ‚&@ê£4ç××.Òße9ÆN便¾Ž…ÂKNëœ=>ª‰y¯#ê%çu¾ö´¦¤U.2]Éè—nÏZÒôÁîðÓõ_?ø?áŸMøq}wÏ¼ÑøjŒ`UR+ýµq‰Ú58ÈÒÑžy©6ÜŠLùÜÿ•–ò¥™†…Ÿ¡†15#@píR¿0q²ç£Wëè³·$-(þD;ŠŸ»Ïób9ý]\þAù¤`Ê¢h#*¤žøà#ñƇ7^Rs×w?-"oû¸}g¦A>øë™f–s¥‚Â@ð{µ´<O·’‚zÛœ'Ê\\¤øRù$îœß”¯u'6NÛhbW£þÉ g-A“Яúü·Ûv} :Õ¿jÀÕÿÐp½Õ:cöÕÀùj-pætÌs5¢Ã£Ò4,Ùˆ#w܆®íªSÁùZ«rX€ o¤ÍoSðìk C6\ÿwxf%wƒ‡Îå[iMýJÐÌ<±ƒþÞ´ìQ€é Q ¦híT½´/äò@õÁÇ%ñR_iÖ™¢>P¶*ßkÂmCfŒðlü7B?Lí½àËCÚ¿uæ>öSŒ]rgÛãh€†Rü&OéÛÇQ‚>¥<ê©$<‚FI p søŒ’üðð…é(|)³ô> ܘJ» 8?¡P"óp_îö÷A R¹Œa2`ˆUð” ºÕý`œhs䞬 $Ó¡Öç>Ôªî±xš½÷•r9d¡†£ÂÁT ’„—ÏaúÍ*y“0À5û™BÍJ¸ÝÕïæ‹ æ—´fL¾m÷)úMç~5JÑ×OGñ*×ûbê½`¾üQ;;Óo¨¡Hß,Ñ`>z}asYmí¨Í­®ZÛtða¶iYâô¼5®Û†üwÕ5zÖËúºZؼ¯:[+ð®ÍçMTÝ}q˜ŒŠMxÅϼWlÞ…wl®­«ÎÊúªêîÜ]Q÷W:jua½ƒ¯T«k;®Z_€:kï?”¼î `c¡»tÞ¸´µÙ]XÛì¨Å•[ðqo­{[­l.ó—ŕ•Mµ¾vÇÂ+MÐî¥ØHQŽ&öÁ|×Ì’Xè¬ÀÛW6;kݵwWÔZà¼îFõuDï,Ó8×´aYï¬ÀÊÞ]|çîÊÎ}µ„Fðoï¬,¯--tWx ìOg/ÔŽcÂëMBÍî®ØÝU„{r?ÉŠã¾0ÿ¡úà•Ù×>ÜíúòÍ_«~<ûÇð}^~Î~²0ûþ+³?ÿðFPÕlìª÷bõàɼŽŸ®Ù÷Ι>LØc”“êÏEÀÆ`oŒ’£$=IfÇ:ºR!.Ä€ãÉl?ìršÍšØOû¶Ûœ=öö¡z¡Æª?â­hÀ|¢ Ñh€«> &Qžºç«”ñŸ4p¬Aåeßò 5ÆiZ©»ºœ.ˆê[ÿn©A°pÙGƒ±í–Þ©¬‰W*„‰FætÍQàã˜!ºÍÚê^5\ßwa&%šMÆÐ!‚*7¨U†½á·ZòþЃÅô^¹º×[5ýëÿl¦á¯Å×1À4µ¿â· àóƒÍ$õêyÐÇC#µ³-íœÆ¯kcÝ Fu'kÔüÑîõ`t»ë? ªVh¤åzøšHÑ‹íÆôTGœÎñh ìÜ0ý,:@Ll³Œuœ>o‰i@¬cÇÙ•:2s)Á¸ú¬?Kâbö 8ߘ~ù0ÆôÍFúÙd&{¨Ô†¤íq¼ã²ûFe`ÆW¦E—úeŸC? ’4/K²yða3„V帵¿á#Ã(1è06½ï7NoºTÇôO+ô½æžÉrrîŽëȱ'ñ•^Z¯QuíU*tu*DýN²8ó(éäׯJ÷åÇð\ûð%­æ-13ñ¯î±`fZà½d Æè@àŸhhˆ–}§2¬ –Éøˆe²eÚÈgLJ*¦1˜]ùñc„¼€)Ž`Ôj9=Iâ4ì/˘Jé©m½¢úþÂ0#)0 ‡rc‘LX˜G tß²/ºiªA¥îºoçEXO È ¾j X,cަŒ³´)›-óHüçß|cr¥ ãær£(.F—Æ©pü Ü¨œ.ʉ0Í#™8€Æ ž©j*œ+¬ó‰º ziïµKÜÿ¼Ž6þà­jðY%Üyâ¦q¿6'Òô]uPz¹sc­ÙS}d–i¡kUÒJOȼh<•Óß÷K„™]cÉë4 n<„2æ…õ~Ö…@ÔgÞæoºGKÀÍÿ˜&ć{ñcýk9ù­j÷åRO–2ã/ë¢fóŸÇüg¦9´AÖ´uÅÚ<e½q]­ù¯Ùo·5¾Ò e¿>Å3>±»XÖBÓ gf¦Àœeç̵›¹)ðÚ@·{yŠ Xç¥3u“¸2sn(~`.ÿ° ЦNÑ€|bê1•NaÌA쪓Ã(–“mc‡ c>pÇü »ò„û#Bþ>`ÿÒ":™ÇzDÇÓáüàÔúZgÓºã¾éÐ…]Þ3ð¸#½ }fýÙ¾ìÅÍIi“BÍŸnê¾Òc ˆ|–ôimhãýPʇ|®ºMšj¶} ôR õÎ=Óü‚ßêEú|u‘ Ð}kôb yg‰¾ÙØÿoõ }a¦…q<Õ°ŸL`(Õë› ×ßn¸þ®÷®ï5\oJO®ÿMÃõ¦rw®ÿ†ëÛUãßÅrË íª¬èb jÕ áÙ¬Vf­Ñ¤ÖÞ·Þ0ö?®ˆªP²Kx/ V͘Á´u ?øôÍ7>Μïú ì5øÒ%ü~MÐàü;ÎÒÕÙª\•¾©Çw¼ïz=>RóÂòå“ëOߤg´¹^u +èŒÆ,þG´—¦þ ëYý¾7Ý‹H^M€üj›ù[÷“U­jë.é½)ˆZ“¤úŸ+× “ë¶ÐO2üº½È£OdºŽŠfÏ6Q$þõÙ¢Á×fZ¦üäiÿ´œýýê ñïªGÍ8áQRG¿gZ½cmÈÐÕüÑ´È`lè‰Yµ{Ã-W:Óö?h{Ó@ÿKÖN}Þ„S¹êÁ”õà¦dŸÊñ}Ó›éSîÄ,ûý{5¡gf¦E·K•vmzý·Û^ïUhÿ¿†ÒÕ›±ï‡ùÒ-ü¢V³tÀ_µÉ¥4¦ú„Xǰ#(Ê›ϼúIwà‹~¿‚7~9 OÄf”Èí0+ÖÑ=Ìdù3PÛ"~ù6~ÓÐ÷@éWൽ8P+Ç Yo„ù^Äàôùd0M}¤×kà H!ó!–« ªá"_±LÁªÓo­U2Å£%©û»¯Œ¯€HGI_`øC7Ý*Ærk`D`½;¬»€@'–²ã!â…XfÅv˜ÈÖ3†ÉËnz/JúéI0¯0±MjÚz7PRä²á°Kq;Ìé[ zâ¬Ë÷ÓDªB,ÅÑP¬Gy=® 0m‰»9,à1K”Bñ^õÚ%nõ+W€ui–WÀûáóªÄ‡@Ó]à¥Ѐ°#P(b.ôûxr©Š%ȨåœT(úÛÑ)|‰Å†¤ÙÙÂqÅ4.êà;tÔFÐD=™›š@a ‹—·(¸& GW‡TãkÓ´ênÒ G‡Å là.ÇÅdj$dÄs‘ÃÄyp42ãÑ;ËÛUD"ï©ûêÓ€g”˵„6v(†°¢°áh<¿ý¯%9t Öööró¬Çßq¹$ '=à~%lÔ»óTìàEE/ Ô¢ˆŠ|[f¢by3Î2LåP¸íO ‚ïÈ!À·‚ÂC ƒ_/¿â+;â0£¸¿C±Îˆ=„}'"7 ¶¡ã®ÔBqw+ûûHÚI %ó&h»#pª:(0(ñ\-áÑpЦĘ Áaz2þz×&ØZÖ9íòè¥Sœánâ;‡Yïp;¤Sí–£ŒîF2_K–©zm¨“p(£AVtÓÛiŽp4ß–)æSÿXÓÐÜXO“á|ç¯]ìGáÓ%v·(p€Ôµwż»¨_å]Ó¯»æ_ èºWîG­ º÷Ðæˆ×ñRXdÂî=,h䀨‹g…ÜÊ0hn ØÏ¬F•=Äæ °ÃÝ[6Õj‡vôRÚ'ì1[\míãWȦ xº­}"ƒKé`ø“ë(º*ÿRÀœ¡DöS¾€‘ÀÜÖÍM ýá7Jê8ðtÀü\¯·&˜ Âbx&6‘2dk¹Ò›Í tÈJÙ™Ýä[{“ˆðé û.é Ö%•vγ9 7¯³©ÀŠQ”m…}ë|ù”{‘ÞŒk$а·½—w§•£ Á•—(bSbFV˜YÌQk"KW»~#ÌŽµVÃâL _RöÍÔdµt¹—Q¹È•Sp íHÀ €´‚gåDÁ ÄÄ¡dÂpG"&ð;ò xYÆ$×ÁMœ `,Õü¢GD –øûj&@ÆK©˜§’ØÝ–ʤSÈáNšå„ö÷õ 14tLqÆ+“»C ÅÌrLn…ì6Ѐ¥è ;(ý(-àœ)Sö ,ÏÛyAŒôx)Ã3\aÏg8¬µ|3-8þT-Gø2 Î'ð$!Çw/Ìß—YŠ‚7òÜiaMt-0>êÅ€ž@˜½PÁ=ž-ÊOã"Ó„C5* OXjé~ôq‚¹r¾.ÃRÓCêž@™“¿Ó–ÀpZÔ3ï:’î\ÎÒª$Â_]˜W“dBP_>zæn ÞC±8B^#:`ƒ“a2ÇŸâÝ(™8Þ{‡áú&`bDs= ûÄó•FJ__iÆ}£h†L*ÐpÃÁ÷×¼¤ôsýþµxâJS2Cö¯G{6 ³r[éwè[ßn^CQ´›×¹䉾ÊZáu m…Ç+³lÐs4ïÏ#rFd»w‰žÃ¾»Í¤)½Åñ]³ž™ ãHÖÇêÜ‹ú ÉÀóJ ·¸‘ïÈ8Dâ´KYUWa=,IX;ÇÊê@~D÷¢½(*"±\–y/‹H:!N·¶ÂÕj¡Ó0ÊåbØ_ЇbX)p5‰(Œ¼/–À¨ ãg·’øŒ~óØ-(²!Æq'ðR’«¶³ÀÇ©Hr†=Œõ]Yª`d ŒØÎl…P¤ý¸$æ¤æ H_îÈoŒ—¹ß鮢kv}ðHKØyôïT‘®öüvÅÒW(_³æP%˜«DNIjåX ¨#=Õ €_AF—AKø{Y{º®Ðõ²ûB”q—£þ"šH(£û7’'p‘÷’¹ºÜ´w¹Ç qš×èÕΰ^ü\eX† Å2’Â1O€ñK-Q]]Iúvܰ±8CਬesT5΀ÜX-…nùy˜Yà\ñM;mÉÑÞ1\È©ÿ’Ê ;ô¶Œ‡@pˆËØ\tŒ  ú ?â®BS¾ žÂÖé•>èL0`} æ ¯ M€1 R i¸eH$ì¯@ öÒÅôØAÌÆ&±–Ó-•²Næ—"Ò{†w‡¤œ]ŠÜx; ¼Q&«0`ì `_Æ(Ìê|l¶Í9ÄffØÔ¿¨)¦¯Ìrð­rv 1"¡ÍÜå™q3ÂILÁé °‡€Yu6 @åÑ a\ÃõV0]R_Ðȵ1kÍJl <2äÝ+„!!8Ò­pþ¶•Óaˆ2-Xõª¶ÇÉŒŸ‰S¸L%1ÍË /ò"É43‰h)ðš²ß4œoÅé^“HWNné³I@<ݶüíµ†×­Ï!„÷A>"Š.ÌŒLù@“~”cÉΑD!XyŒEÙK²l£ƒ9º@Ñc?"UœG™<¡ÑgóÂé hÔ½Ö†[¼ÈütDDV¸hj—é ¡,õÈø#ðIï]í ‘ %{&: ›Û,¡¦áXÇÀ«ÖCà‡Î3z°X‚5Å>ðÖþ~Móy>8léì4Çæ˜Yi` …áµ­SQ·QÐv¡¼mö¹59ÄÛ^X_€c~ÈC¡-J#žÐµ…ϤހŽh£p»-sÈÆj”囃 žëˆsp ·¹óe‡ÛìŒ@Ö „w'=!í¾CUþ)ï$Úo‚ÈF¢7Erw±I`Û† ´ùn¸as x€  ÉÕ_O ´°^!vn®ñÎù $³aÆIú)èK‡Û0Áei•2%@{‡ìÈêøÛ&)ÝZ„êP¹miÄTƵD¡îï¼'Ã#}ƒ…%­,êæh´i’­‚é©Ne$aåTö83rìY "ÀÚú{?û©Z{ þÙÞ^?ý1VŠÄ*s䯖v³òtŒÂDú-Ø!A,퓊…"œn6JhmR 0‘Àg€8(ே9Pz|c¹Ž§7­$½ 4˜JrÔF™%¨4#0Íy íÍ'ëiž#-íýj$³³ ¼‡B‚âpTí=I$1Dý P•ò f[šÀVc2â  øÄ!Èk:] óe©ƒÕÝŒ€Ð=”R½#Ü‚ô&XaZ^t#x%0œ•,K3Ä7$lÃ|-Œ‘ÚȾV¸–#bG0ºf8ŠP݈I2p,‡EÈÒ¿D)£ Oñ(Œ#²”Ûó¾] Q1æÞÁ.ª„^Iòƒ°u¶LÔþ¸ŠX††‰a»L!‡¡`KmaÙù~€É¡)Úx{lÊ»»Ìš:‹”5æ\£Á4—â&ÉŠM÷²ÐpÛLq;mC6ÑwGöѶ€bšâêñ9z‡’X)iMIÖùBo‚%ăÃ@n‡¹3êÌ`䨄²ªÀ²Bá=b,É À!ú[¬T–Äñí¨¸ßù tE²0oPø…D  Ôñå!Cׯ Íˆ†ø …¹Ñwâ™Q;á1|}=»½®F2F„’˜ù¬‘ÙÊ^V6ºm,³OäÁ(3Õ¡"›JËð‚r› I}ØÔÒðʬœ±,`53Íù×MãV‚Ðò(#2 ½Í@ä9h»`ÓE.D, lÄ F0–Ù‘g;” ±àn`³E»ñB|­ àtl ^6N¢ûòTöiåÈž‰H&” ;à‘¼PÀÙO‘[$>#‡!H1[~pо"*%EŒø x&’[ëÛ« D¶@(@Á“‘MR¦6ööÎHŽ@—Ú$v Ñe ÄVþ`£ãvj¥DæÔ»@ùÂ:8 韀Ìa\;hè!”:ýJçyçÖŽˆÆ.ŒN‡KwU¼úSô ¯ 6b­*?ÙuP×2P¯Ý|½Æl%³U­“ç v{5¶1¦ Èeùk€½‹’茀°8è¿Â¹¨ˆ.‘ûCx¨ŽV‰at^›2”×7“11FǔϤÃBêlvð&lÐZ÷EØfZäGn8†¡0vö?’çK ²’f–#4Ÿf‘å›Û\°ÃQž>Ú{HÖÇ…WB„Íä1é_`ß³²ÈW ²°FPøÞ!óà,h ";_ 3‰ 9âÐZ³4Wúðz P ÓÑøk²c²½±v†å<Ûi ™ôžùhËŸl`7,ý¡¸–£ˆ+’~ÔRùÊ*˜‘í#m¸u´›Ücz k5ë‚,–ìY‘ÀVЯž~çb­P4]ÅÙÄM곕mÁrlD…¬¼òÔ»ƒ"CÐ+Û%ê½u¿`¶,{qÈÒÐØ ²ñ,zypµ›\’KË ÝÅ|#§Q€ç”~ÔùßÁ\¹ŽUà4UôõÁ(Q¨&‹G ÁgTƒ $¶„(,ô;¿»ŒÏíG õ¡ «* ßœ‘@Çúm÷¬7ÂYV~ *гíŒ"ZØ\èÎ' ¯=Œ³&s^'àv¤/ZG¤ïËhðÃ&â=±±N—nwõ—5>w((¯€>Ñ?iºD:¿G7ÕÊ .¾³¶ÖâÆÝeþ!ìLÜê¢ú‹·>ôOƒÌÀ¼Ù\gs’QFÕ¸°©ÞX_è'ôû¸5-ì Ú2Ë“Éí4Æ)Þ@ RV xA‚7ÃÇž%3£}—ÀŸ•I8õ®¢’ºÑݺ³²é7NñÅd¬Ÿ„{k<‰ g/²éoÆ`³°±R†‡¼¨3™^P‰ÓM퇑ùD§XÙZÕßAgîG¬ëtX ™4pÂK²8¸×­Æ{î6O™˜â‚Vl p#úòæio0þIø.nËÓ%g–ú…vâÂ^[KV('ÌU1þ¨2Cn.«5ÞóÝ5Ý– ‰`¸}¢Î7*¶öYÆã;vCð4êp‰-Íò·q×ð­¥îýíʸÜ;kÂǪULìA_0·¶Gˆ·é±{ï ‰¸žp‹I«ô.¾YmA;Î#,"蔨áR¨·Óy"Àîo”†`k(Ôó’ ”áeá-ÎTH ,èh·á4«)ðTÐŽ#—õª¬$v‹cLÃúè°ük:)ÈC?íNbf1dþ X( ¾žõv&fl’V×jÑZ.¬@æÔÙ,‡iûôC,VôiŒZB#–3=9U ŽÓk€ª¢ê¢­ê8g¡~…!Àîìjh¨`™Y8qÝÊ~è€LtX!„€ (uÎÀå 2ŸõAZ|2‚ÖŽÔ…Ž¹¯Û!H˜44„Mâ?èYÇXfž,Eœ‰[2Á©33¯=wÞÌô¹­0?xõ¹§ÌL­Õ´¦Âé°òT?t7Ñ é׊àÆô…{£Ÿ ‰ó+p¡†ìõ$‘SCn•a91¢",,Ór[ò¿Õy®µû(½S`Å­l8‘7x½Òƒ†vVt¦ûtm³`ËÃ}u¬ dQA•Í*jª‘£4”È@̰8té³CY”® d-ŸF•Å¥0ý½aÐ?f“*²ˆÕEân :PT ×2Â,S æ=võ±F¢¶G9h ü}-Ñj Ç®éËÔ£LFîàBŒ÷KŠ4?´åyÒ[°Üì`n²Á`ÎzlØW§ê_DŠ¥ÛÚb 4B6е±m•'‚ÀMÎO[û¨¼ÑJáïö‡³x#…È_£%.à²1»ŸÐ 4ÉvSÇå´ ¸å+@{ò—:FƒMŠ£-P(<Ù‡¦P|%胣· wLˆfÅ0ÀïyŠ39™@Ñ:–òÅÑ>ê}4ýdú"ÊA{e'Xw'×\v¿Ámâ€'(qo¦©@Q h Àh·Ê%tø—KÂ#:àMÑ~!Þ^ëT ³pŸÐìÇ&ŠVÇ0ƒúÁ–|þ b*,.cUwÔØ4€>»˜I¡‚éÙÂAÉZ}üá! ¯¢jL›Ib¼+ʘë»éjTTŒö¬&ƒœ@†¹P¨èpœªÀH42â°Ñˆ¨RÓ­;Iº~ÿãòèRN! +H‰OWÈãŒcÐæ8°³rxú(dlèVBõLSàsÕÁä9×&¬B¤C`¼è@{TÁp(Áö[(íbâp ê@»hTŒ8¶!—9ðt”mg*§ÀuŽ…£™QŒÆ°€„äeÅ('%¶ö†Q*Z3¢ˆ ’:o2Ž Z(4 |T`$^&ûµÀþÔ°ÂÞpóÅÀÈú‚K•ªfwHu'ÁEÀmîíí±%îÓ-ÝnšU(vÚ!Z ÏXÎˤGéYÍAÐ8ÓMË@—­¡`¿Ê}°\l¦jw¼â]ÈËXX…þáóœ(ís ÜÆ†¶ƒ˜ @ã·:ÁMüp¬oÅŠ•)#0€ƒÅ´Àpé¶Ôì’œõµWås~P+1r“K<øv»ÛKizItŒ Á Ï,öšé1mûFdå ãj܈‡¢:MC<ý•«>x²ÃåöÝ÷Æè} ù°¾ €,ƒñ­~ÒSLy“2RŒ‹Éb)P&Ë|ѽ…Œ^Ž€Q:.Ýc¸Ô†"/:KkkU*¬9m!lè¨uùŽ ãv÷Á$CËÁ¶ †S4IÛÀ h¥·uõÔFŠ)=cäý2ØÆÅCßÂ*ë&w ÃÞÎaŒlRæÅ¸W1o¹ñ2™ÕŠ®A±26,nãþÉ~¿¬G~‡8vbΞA E¾FÖºýP„£ë€i {ê:ÎÄîÆEzGšbWÙ¸À¥ôV1ûœ@°d¿dZ6œ[ìÜZd}#´ìÛòÆ’Ø_8w4 Ø Œ· Ô¬`¡…•p %æ—íM dø=ç{¦³À¨íÛÐ1“6C‘‚ãWŠ÷¶vtœ®Ô–Q."êï¨õØÀÜÃ3Ì×&û'ÆJ†Úï>öÐv á2'Ï‘ÖIä —Ê…ºK¨ŽN\G[ÃÈkõJ.Þüx; <$7JÁ$Ò6¨ÏD p{‘ã¸Ì ÷¬sVHÇw¤@oX)|Ø•€õ¯Ë}ŽYkdG_1¬ë)˜¸çÜî)°Ë19—}ÊJ-Œ²nâÁl„2ù1ËÙ|6¹1àÈÇœŒ7l–€Ñ§©T/æÌ ‰·$øЙŽJ¶†¢&\¥Æ ~™3W !•Á#V¡Àlwq`¹M¹ÖÌ¡‘¤Å%²{X;¡™’õ5Æ WiFo6$J‘ŠèGm:‡ÙG?,Gf.ž¡<à “.£è²µÃé¹GÚQŠz¶-]F|ãŒx©óÞ2f«:ŠVÈC€Þ¸( ðW€‡’†{ªÉ@Ö7)2FxXÄZ_ú"Nh¡Nt‚‰¾Ê [Ûþ¬âá>[:!õŒÌ‘n ŒË-L'¤_õŽ0GVpl2û¼q‡vÇ•”†ŽKl¿SQŸ™Œ7Ïf#Ÿ(Ž MÌ6¬šŠ@ã3›œòd¬ÑL]ÅIü^6âÒZ·»ºðžxMý˜lEoo¯ÜRôòJÊj^ÿ^` `\ "¸ì #N ÒYKBŽ­…Íd¤|ºT~emHJXIF¥¯€ãŠ`J9†ÙÝh‘Á‚ªÓñ–ÓMF´’œe\#—(_8Ýè'Á¼U¶5¢à=ñXèî÷uf¼ÃƱÚûCGyBH¬(ÅPo•\¹ùŠZÀkÆ(-Zûº"Ϫq ‚åƒbÍý(ä¡iÓÂÂ=Çàþ`b: øÛG´A˜*«À’ãv¨¹i2‘;=ŸùÁ²ÂÍŠå'´ƒªkR3J>á®ÜÖ¼D·²¨O¦˜ìVt¯Z„wâÓkÞrˆÒ½hBï¬ÓUoaê*Æ¿7 ‰âyù&êÞã 0“ å>¹\`aJÓGS‰\&—§µñ7? »µ¿Ë‰kò…J” O'i |ZÑ+µœ¦A?…ňzVeïl‰›¯Ü¼ùvUEXGµ]¼Z¹z³O«ú\*uƒå‹¶eì¡âºØ“d´Ã©ÃóÈWÀ¢åûVÃÛðÁ4Ö´§Õ(Ìc€åÙLû ·VÙ1ÍÅ\"Ll±[í#´$ ¥ á½`s#KÛgL ¥‰û¦(Þl˜jQAÇM—†Yf3[£/YžJFu5åX*áPp0¹¦è¦ôgkUJ3U£M•I;s†³_`ÀiÃkIÆÔ?å¢ê%©sÿ:}è0šŠhåaÚÚß×sˆÏ@ò"ÛÛ®­@S~/‡gÚ3CEWÀ±Z ÆJ»²ÅP’-¨S¼V•^äÆò6**”BÈÉ­¶·7týEômÀ¨àg;ÂG–*‡UÚ$´pjÁþ÷(þX5'ë‚¥_äôj'«„lzÝRÝVt¢Ø¬Ø„”“6c¦€Zƒ¶yÑRæ´·“àæŽžº§¶–ñÛÛñB°`æñöVÆ?Hk_ˆ¡°ž¨¥%uV¶ ¾µVRÄi¾o,¢´‹Y¦I­ôM`Þ8zÜ„ÉNT60Áxàø²1 ”K8˜$êQÚºÒ!¹CLH@x óœ ¬É‚™“½)0ÕoÄ’g Et7kàØ5=`ÙC%…N&ˆ`§o –)P¥Tq*"ZN0d…¤GL”Áâ:>ŬVP±òmÓ¨>ff¹ÊD9G&DÇ%+â/:–õ»h¯í Ëõ\Iè7¹9oaRr‰4‡ÚÃn §õ2•0ÔÃÙé…Îí!^Â+ÐEk¦G@Û c€k£È€ š-§Xô «tͳQ›D#QÝ:¬NXK˜2[‘2iZ‰18Òs]A ¹ÌîêÏ*à ´ÀéBbUhL"o `ÞÁܳÅJì+¯Ø‘R#ò™ÏY¹»$<1fLˆ1*HqgÍÓ×°,ÒBga˜9H°!v$Eî”lšvÂÅM1ʉ2åŽq Ë(^$¡Í”&ÊÓ](L< j¨RëÉWY‰ NRð«[vâÕ³–¸Æö­C}¬ÔFÖLц4»»CÊæÒVbߊRmyݪž•ܶ ìÒšK¯´XF¿¤5²€Qè¦wà_tºwGwø+™E5«×áø&„‰“ÑV è+&% |ÑTŒ ©)F+°Îf2Ól´YÌ/̾A´ròuBÀ7éM°I¬c‚¶Ký@Ç 8ï}ìE±ý„>gdRDÑ€ˆY"Iäl„ÙÐ: Ãéd 2l”‚î˜HW?9 ,÷ žQI©÷6Ö™¥¨ s ±q)  Zë +“.F˜/®›‚/t¤ë(éšq|Ñ@bˆ@ÕqK¤ØÊ'à/ÓΔ熉³Â4íP^8Ѱ§_~£,ºòçX`ì/vË¡‹ãŽ}ð®k+TƒÓ˜€°IXÒn&£Ý#/¶x¹æ—þM.|‹öEU×âAÿ‚`ÇöåV¿ïºÎÊÖ;ªLiÁJâš:#'C{VÙéžÒ`{=”ÊòÇ;#¸¡C&Ic2Èã1zÌA)]9 ó@+¦þwAîÃ*`€¤!™+ïó'Ìötìš1Fv84]°æ+-‰þÏ’IÝ ‰Ð¶&ŽÔ…9¾º>۔υ¨@˜X¡(­/uùmäÙ6t×*¹Š<(¾’Ì¢ˆ‚•>p_’ ÞÁBåÏ%ãfÄmØl’›©âÅHq™Rš#)tbºí¢š»)OÐ’°öâ¶,õ6¼ý.ðâ© ¦ˆoƒ®±‡§†#ÇF"†0ÐØÅ¡½i¾`M ñªxÕ¥^ìþ¸éþø™ûã5÷ÇÏÝ?vü¤ÉæöŠûã§]ôF€ ·ì”e,1L],ÀU &º–X ‰JW“y‚wuåqé:™ˆÂ·ÆŸR•x-ß"è¸Þbö©ÄQÒ=D®®S°”Nž—Ù%Ki–†EÙb-dÂ+ezDi‘®KEF»Yn4æ±2&7Jâ&|Gx„uëŽåð©?àúEvr ™ô§s±ÁSŠ ±&”bŠÉècãË´¯mŠ¿¶ìÍß6”¥bsðoJS¥,U0¸f€aY´ŸëZm‹ †ó­Ž  …¨ÇE®‰8q+pöœ‡Àª˜ÓOÝÕµã¸îÉo½ã: Ü"¸áž#['C•o¢ ¤0–^ÇÜÖJ¡¨KRªèµh|ÔQÙnVdA‚y—Öýnî §Ñ¯Eš7{T_÷Ì ;#‹¹Š¸à„¾¬oÃ$&߇ ·úm©fxù£4sÛÎPŒ$«ò㪻gc²*×Wµ–fâ8D9Bn™Û¡˜ÔO³‚ÆÅ¿VE8ˆâ3‚ OPJ]£µ\ÂSW ½ol×&¬!úÖ¹ü¹Nl¦" ž™œò‰¨ò*ÐàQ6fcÎ"$þFûTŒyBç ý¥·=ð·£þ**L׆«½æoò›[ùü»7hÙþÛìCÓ —§÷•¢2¶ƒÛ¸²s”ôƒFaŠÁo@úIs\³?_¤jÆZŠ×*ðA®ãÁ­òžê¾~ÒLyî Bäbq]¿\lv«†ú¥íWoþd’³H½VùýãÊïWªzÅÏ"ª©&•ØV¿˜ ž&ДÑïÆçƒ–£°±Fÿz?M†§ »OËXcÜY”Çkõp½¦z WÅBùj*]ôpÇF{Ê^z­ ñmÝ'Ö†Ðg†» l:³ ï4 /&·z]:€GägIOaˆ%¨æ‚âïP}ÓÉßÞSvHYd# …•ò,/gÂõÁð‚1~Œ¯ÿ+ÚÛâHˆ±§ãa¤@Ð$ȨGbÊèÝ”b<6©ØULî%˜ÞA“ŒyEYŸô70ƒ»ÑÛ 'BåÚSeÂFÙUµ(8–CO0`ÓuïeìTqDŸÈ‘¨T·G ¡Ð¨º!ú+0 ÞÀJÇñ²“Û"8ñ!WeØÿTR!8–´ðð&-(8kŒ`þ Éz:Oˆnx•ôÁŠ;”žMlaq,fvNODî16È!ßàÇz*Î4Ÿ±ófÌARžd„aeX8[/³>§DP¼g¼${ú»À‚hЦÌ>bàX™` B>ÛdéCšîSL¦ К7BäCïÆXö=×FhëaFl4,&§ƒ¨Gâ7gªÇÞ£­zÖ‹¯Ö9ð—6;µ×ßFûª¨½u³æ"hѧðÕÚ[ýJ 5ˆ’z§É¨[-˜­Ê„“R‰Âbã".“H#(Ý>Ž÷A›Û ¢s2=™æ„o•+Mr¦È³—Yµ0~Q݉ŠåJ ZÌ¥ i²8À[*:‡Ñ~a.š€À2àCÀÈíñrŠaq¯UCg±0“â D´¥eþbú»œé Xú;¿Á}n!ÖCæß8ãò§t¥O®aëñØþ`W}ä\:ë™»n7[Æ3,è2¹’…*x¹—÷ºÎš\´,úß]©­«n‰0Ûš Ñk}p}Wç¸!ç|![öÂ*QBE5³çËÊÚø›CX0e-ŽŠ¥8"Ÿr…î²ê:E¡ëª`n¢•ñÑQý?¬Ñ/líÏò”à G]*ŸlJÉ [ûŽ}ÑXBîk›c@û²®-j>*9éÜÓ6mmDáp¥QÁ)¨+A<å‡8 ÌÜj˜îÙ|Ò“ Š…tc&µ­ùÚ]æçªËŒòO{±±Å¯xÅÆF‚|Q@@áà¸t]EØ­.Ù[ñX¢AqiOkÄóĨ\”¹ò&–’&D™«?q‚>¢’Œ¤³Ð@;swnNàúEˆ ¶ˆê.ÓòÂP©ebÕQ¦üs;мåRÐLæ•©Ô…”k©êsZdá–z³ Ö/$ ŠƒÎà‚ƒW #©ÔÝuqfc…YB/ëÃaÛîa¦XÆ˜Šžð1h0°dD›ƒJ•ÃO=ÜlmýHTjC…`ž ©X ±^åŽÌ’ñ²A¤q:ªÌt"vB‘98ΆüF…# óÃN{Œ)õ®ÒSȀ¢-ŸNÕŒ¸§2Ζ67´A3ˆ“ERÌü!Ýä²ñd]‘YÏ9-ŒB¸§dÌ•ä7g°”ËÉqïÔ’®Ä꩜‘ÌÀÃ$`Jú¥€UWrÒa5H®ÞOq0ŠSD©Ôµ«Ùµ!æjÉœé’ ð 㫇ž(,LÍãFêŒÅ“yÄ84…u”1¦é  þ,†„…ð3ÎàEY:”=އÕÅ‘a`ËQåZÎÕóÀ Fäy:TÍ»™EtÐPÆ)®`&Щ¤H»¨ï¾c©óCn <2«ÛÝœ¶iŽ5@K>"º-§u™rtkF{*"æ øø™èçð„ÜôæÂ¼r*’ ‰gÈ6fÜ)<IØø.¡­ÓrÄ"czà’ܶ"!bCõ¥•ÝÃN*”Þ†‰͈ÄÇÔó)¤h­@øñ1`†Z¡X[à)_¤Ya0!Û˜­€­.n£R˜"P± •ÒGHR6`Š+)ö7òt<ÌBo+“îc·%–+zdcߘº‚˜‚I+†¸Á,-™«n'$ ’Ù>¼¥e”RÁ‰µIŽÃàžº‚äö2óvŒtèTf˜ˆ•ž”œŽú9‚Â%‚ò©¤XÒoyF®ÃÊðmzšäÚÔÊCs+R=-é›Îç1ƒæHQ'3Kw4UàgýÕIpº²dÉÞÜÇ {ÂÒI&TL5€ ½ ¨8;¦›šb\–9ÅJ™HPÊ.'dF/§-sO' ae£!y½QÏuL0¬K9äù€RÇÄs?éEæÔ †¤ÐPC )¾QÇ&*##sK½É÷>KHØÐä‰D‚«"‡X*­‡.ÊÂ9Ø€B¡yh.˜›k"3Äà„{*ÞÓ´›eÙ¥sËóýP£gy×}Ìj©…½ñ¡h6É'Wš{ºâ`'HK\ÈP2Èþ[ƒ*EQ¡ ST?d¨e m›mû Á­Œr©&zp‚…X 6Lû(/crm|VI]¹ü)V’veN<šXàÁÁegÜÑ*ˆ=i°ÂJ>*å4Ú‰ˆ`XkË%ïì§g‘g`Æ7…ýDTRÆú-lsÿ\q@zIŒ*ٟƒÁ"kKÝ’6éð³ÂXÕòª½ TáWhRõD§ÉA)&Z×GaÉGÓ%T^Lp›NXÖÌS‘ˆ\ú©‰Lxè^ ÕP§y¦I04,¥JCj»SR`ÔÇN…>0LAϹ¡¹ÆÐÎn} +ö´VÄ9 ÓõEU’µÞCy'áX—8¹è(Þ€ Ãcw³b\õ™òHßan†!q,ìf ÓÛ,}b¤TdèÓéÁ%ñ*e ×yô=õá D¬¢l÷6®1S,¿è‰#]Ï$Dë€\0´A¼^+ƒàz[™KÕ³GߊLOhlUñšòUè˜d0ŪÛq¤7ç< 0¬Cëš*ãP(¾¬]Ô‡P!ÕàÏЄìÑHG ûV‹VQ¾þ÷ç=å ãh­[ø±¸ç®ÀÆðì|RñAlfˆ4A{{X?ÛNyc“†z¾ÕÐå-6B"/5.¿ªN¡åz§Ëæ¾ÑÀLíQÆ›½±d.6Ø7hC[vÒSÎ ˶õŽHÑZÇ2hÁNõä¾,„‘Õ×¼Bùsª9ÅŽ¥,УôA;(½ƒÄn7©9ªánN3®çåú2¢¬cªÌœsoŽK Üµ5SìÁ¶!F¶•q*}`µ·ñâÓì:8-ì[tqo}Šy½«(;ÖNÎÓ¨œ¢Ü[ª~B<¨H _v¢ð%Ft‡Z³Ebj’–uPë¬A)Õn|½K­¥UÛT«ÐYޥˠä3FFëô€á ”];”,x›Þ |Kf:ó²šsI‚«W®güd6ÿxÕ˜ÿçœDh1ÂäâÁ/³‚t¶né4< Hù²L/Sö°P+(qË„ÐÛv¥w£<ƒNE'Ô²Ö÷0“˜PHÐ2½CÏ¥ÄKI"# ‹ˆMïæ zPK‚Ò›X–Ò êbà{…Žs.lD¦Iå@@›hMƒÀ ‘ã¦Üa¡%–2ªÕ;(ÂÚãåuäª7íÛ9›õ(V•"T)ˆÜP.kë®ñXQ¼CÅÃÏ‘uN`lsŸiCC¯µ0‘\büe¢Idð£!VËX ÷°m‚ôJ¡Á†o–µnQ~&Âë ]BË;÷Áì Ï¦®žâ°ÃT»H©€”qÀªz-ËŸ5g ¨ºd"+±Y¿Íti”{õ?¬pyL-n·´¾ô¤ÇìQ¢Zóú$dæÌú¸$,*À"™8 “f"³!0Iço` °àÑ(‡‚MU±ì•å#3Ã}ðš÷šœ+'­Ãí‰ëúOº ÕÔEý* q £SÀi`¥[tÎ ÇNˆ–µMY´Àj”¼¢ÖºÁC_ÊU5ßåýn’]ç÷6¨‡ãPR$dŠ›”nÍÿ”ÅGô‰Yåäâ/yó 6¿2ƒÒé¢2·¥Ã–4Öˆb†,¯ºÅ’è2¦\DIÆã²+<Á ZS,Z\0¡(´¼ttL–©2¢C’ÊÔ­µÕU§ÎÙ`¼Ï=Ï5τٓ'm‘-ÁDQšàé] ަ){YÂ|Ð<Ï— ‹ÊeæbàÈšD®X,¨ ÆÎµ Ï#u–¶aê7:N:vù0¡öíÒJо>¯äP˜à{\,¶º£Gf+ÁÅH¬‘Rvt"¹ssE½¦é©¦—:C[Ÿj’€x1±Ô9šs<À<×çÐY.’ùa(Sš„ºäs34*›ÑYš†ðÙ”2ެ ¼Ã4íq–ä"VÆZÁ¿(ú†¾V³,ÅSL6öu«•nVe0CeŸi¦²êúEç(çÝ“åa×N›±¿«uñÝO¸>gÎØœs÷àæáoÙw‡Æƒ;ÿ:ùUˆ×3››M‡a‡ÉÙì@àç™ÃÏÙtvhŠÓD¯\i8±û¥š»sÁ3g†“WÚþ‚0€Ê 9¯(âû¹ˆ+Ì8 ÔŒñŒÈó­ª'šºýP…툻$î1·‡'Ù2.¸ƒÀõ›ÕߟmZý+•Ñ?á¢QË3OT¾›ýû†ëÕp}¿áúý–w{{h@%Þ Dd¬H`…JÉbþù¹o»ù ñÁîðÓõ_?ø?áŸMøqn]€€¯ð-ЭÜFÐ&˜»¹z)˜·ù\ÃÚÿAp–Åy»Ö ?qq+Ï?QyþiýÉ%7hÓ”«£ûYûËt)F‡ÌE ü‹¥yfÙlƒý}¾ÒßóþË›üBx`…s}6$XÜ­CÝïxë¿ã-7z*Ö4iç_ÇnZ_»°OüV/ì“]ˆ&ø~÷"¤áÃ)žñhÚ®h§ÌÐÈ5œ†ž}o¦†¯ºhEveº™ÇêòbÄ‹ŒѾŠöa¡à_<Çy°}¾Š f^ßtß "åÏcH§ îɳP60ä…ê9@\ä}ÄCf˜ÍÔ‚ñצí -`äùƒ–Ê0¸ZG`ÿºe=HýAR¹ÿ™ÀæêÙˆÿd¦ù<†ÍÌŸN‚ÍïìÆË?£w>ñ[‚sM û•²o68ÿ&Ž‘ÖXưÆ2Îñ`Ð`lOUû;}xKpá½ÿ;´<ÅC^ž³G¿<:iyêHóÕ†gþEÃõ¿héË[Ó¯ƒŒVÕVí^ÿ´áÍQÃõf¦d<Qt¸Vu=#vúúG í4´ÿó)f]}æ_6\ÿg ×ÿMMßø÷Œ»éŒ-b…ÚΦ›Ë#ÌþYn£™Ÿ¯£Q(3äú$Ä©¦G– qí’Ï7ÁeÅÆï—$)êsÂÈ›¿(g}å¼³nzëêL7ÚÝ‹úðfN2ºRY¯ïh,«ú'åÈ×¹ÖœZ[Ôe·¶ÖUge]E}ð¦D½C,ú·±­8c}V\¾èig¿QfI™g5EG ¼(>€Üf«´.‰5Á…ï3ªºJuÀbªGµz½Ñ«ePù½íxt°†ç¼PQFSè].ÞwGfXi5š·nuÎÃÎ^öW<˜1ìF¬z`Š%à Zaõl½â,\ª‹Þð•X*aÝ+ø3¯ºX®¨ÏÍ`øüSDE¤+géDUN&æû¦jù¶;òl}Æån餷R¥Lx£îÐY=#<ø•{ððóâ“*:üb¦„þ-Aùæ|rœ¢¬ñJœ]Óµmʉ—‰à̓h±ë_Û ôÑ_™Õù 7è—Ý›8ëVgveh\õ_+w4ÙW9Ö´q6ÉinJîÂpØ\¸ ¥b;¸.çwÔþ÷Êuóv£Hÿ?Åßâ PHP Source source.php identifier%\b{{identifier_start}}[[:alnum:]_]*\bidentifier_start [[:alpha:]_]path$\\?({{identifier}}\\)*{{identifier}} sql_indicator9\s*(?:SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)\bêhxÚí½[ŒdÇ™&ÖdK#‰ÒH4u¥¨–‡T7ÙÕ$EµD³²²ª“UYÌÌꋺȳ'3OU%;oÌKwœÙ™ÝٙݙY0løÍ _lÀ†a?†¿ ûÅ~7àW?6`Àû}Dœ[ž“•ÕlRCí6$VæÉ8üñÇ?þåóïöïO‚áhèwúÁtz¹=êžú/]¹þWØòªkùÄY-×\Ë'Ïjy͵¼hÿ~'§e7<ì {³DÐ~nµöÌŸ_­}ùï­Ö>‚ÿ Kf: a ùí߯eZަóI¢Ù—ì߯§›ƒp8›ÆížZÞ.BÀ——·‹&þ•åí¢ ÿ¾ýû™vÃé,HøÕ3F:„|+Õ0´Ãn7ì^>ž úq¯__¡qÔó¬Ð8B€[Á?L7>OÂékž˜ÚžÙ4á›g6øÖ™M£Eø£3›¾ìš~û̦¯\ÉÐ|qÓW]Ó§íßgRMç÷ÇåNÐï_l€Y8I`+’z/nü½Gˆþ~æ¥Lã<`~°ò+Ñ(?Ì,kæ•ù4±“”»£\Û¸Ý3ËÛEcÿ8—‡“°;êÄÝ=»´YÔÛOrGšEÝ]ZÞ.êï§ËÛETþ³åí"ny»ˆ¾Õòvq{ËÛE”ýüòv¿pí^XÞî5×îçËÛýÒµ»¼tÙ"ô]YÚÝZ´l/.í.ÂòKK›EH¾º´Y„ãµ¥Í"_[Ú,ÂðËK›E~ei³¿¯fv¥iÖëBºõ{á䲓L—Ç£q¼›~‘˃z¦i/Hïä× ƒ‡ŒGýLã_®Ð8Ú]×WhÑȯVhQÀ¯s™~o. ñëÉnšŽÚï…YÜê\DGÌ”ZT0ïÏ.ÏNÇa¢óõs½!æÍÜÕýS,å²úIxž\îŽæí~xùýùhvãW6V~%¦¼ä•iox”3ÊæÊ¯D£Tr_±û½axÓ¿< ŽâQ¶ìß´– Æ2§ÕÊí³ZF`Ü8«eDÕ³ZFÄø–ýûíLË &w¹tîÏzû1°73²?Õ¼`Yk«¿Mugõw¢Iï®þN4ýú²w hoõw¢ù¼½ú;Ñ|«¿ͧ™K©P’.G‹oØn<–ýûÃ%¯,ªPûá÷V’Õ;s.îáÖ£ö!õvFŸÑC¤3¦À¸ó1:‰ ¹»‡S3‡xèßäJÔ[qã{ö¯3—}ô†î×û÷ ѯèb2s?¿“9Áá,9êõ®é»uÇ41àÚùö¯3÷ÛýQç¾ûñd~”‰»û÷©äâ¤p-Úöïï§[Ì{ýY<åNЬÇÀµëæGOkfg=îçCû×¹œ…î~?²¿ýn n×à83”9ìõì_ç=H®É{@Üú¹ßïgƉÖ7‰Û~Q£$ ìßïä5J˜i®ýÐþýfn{Rs¯ãÚŽ2´˜cý¹¦ã¢n'ál>ŠfâÚ¾oÿ~%Ûûɵ™dÚª¬îçiF¨ª®ù,C€‰æ˜J¼üó 2³í.S|˜»ö2+”R}]£‡ º¦kt’¡©ÞðÁè~˜ZéÓl“X uM>°#0Éw>Ì`t8mÇ ¨3LËh®î×2ø.P=]ó?ÎŒeUN÷ó?ÌÐUŽÞèšþInÓ”HuMÿ4Ó4GésMÿQ†ÑÄê–kñgöï×¢)5Ë5ûó Ùç©0®í?Îo›;—’A iA÷ÙŸçãñ(–!ÿ4Cq)9åýeœ¬æ1ÄÔùWÔæh)®é?³ÿ(·i–þsû÷ÙÜÖy:…{ó¯íߟžõfR p/ÿÍR øw­ÿEFj<&½ë5øÛ Ûˆ\Ž.çlÓ¿³ÿ¥ýûD†!bgWÈ A¶mÜÞLQ¦ZýWZ­_÷`úü%Ï‹~ráÓÁ‡n çÜ7sȦ¡Y£pä' ‘£dCò!ùÃQÁóNî7c¸ÖÕAûÞÁøÃÚGþ;æ/þ³‹/Ï´¼ç‹õ’}æ‚y1·ÅÏ݇§sq@Æ6Mdþ“ÈË[›¯&ŸÅxKŒø…<>:ß2<¹ ÕòÏimL½ƒöz¼ž>MºWF3ˆQ9Ï0EMè‚B, º£ÃDOßËí)jw¶té.¯_"³{“0{k`¹hgÔÇÓ4¸Ÿ=™ýñ÷“k.º@fÉ/l‚yr(7oøÖ‹áSë?Fƒ¨÷'2°¸¿?YJÊÔŸ§ã #$›ÞVçÉeÓ|Æ>$oFD€ÿ‚Éu-Ó|t<—DÇ’Õô>}„dÿ¹yDÿ¾“bo0î5"Æ—îÞ77-ñíϧ&ò{‰a›9ðRûqUjHb¬ˆ=|67Ë2Úøt—¼ˆ}}á±ÈÀG/‡^V–!kúÊLŸüøÈvár œ}­ñ“°³žÈku Ò¿ŸDjdg$<Y…íh2šù4‚æ}Ó¨õ†Kuâqv¹P®uAY}Fðœ_Í èVqfñSp³;xþE×ó³9à&|inÀBÕñ,RÒ PO|@ñß2ƒÓZwŠßÔr¼;_Hð¤õ7òl7Î¥üøý¼ág†ùÑð“ýL>ðägl¿#B§q„Y&_´álÚoƽ÷îÁÏà<ôþ?O¦½j¶6UuW×÷[ºÒhxú7•ÝM_µn4*¥M¿YÚªèÍÊÆþ¶¿±_­mzø²UÚ¯µüên¹¶¿Yñ÷J­zOÝØóUCÕ÷ñîRmËWõÍM½Y¿½«÷÷tåVe×Ó•Z¥Ô¬ø·*fµŽï;¶ÞpßuIÝa_µÊ®~+~ìyz£º»Ym覺Q«nøÍý­­ê}·Y®ïnñyi¯êi~©nû[ÕZÅWÍri×çOìÏÓÕÝ–¯vJwt³ú› æ×jêºjêýÖÞ~ ÀînÖ* ¼Ô*5ZìhØÝİ›ŠÓÖ¥V ]yz¿QcÏ7*;}£Þléýf#¨:Þ*©fSc(O¿½_iÜÕ[ÒöNe·åé½F…ÐVÔ–j”¢¹VvùÇ—Žë5OÛçʯnzëú6&\¿ÝôÇ(ø¨Ü)Uw}Âרױ¾]oÜÐ-Á¥íó¤êPÌqÉ€¸ýj«²SjÞÔ{~òw€§õÍýr«uw¯¢k¥ÖV½±ãáyMU7ˆÀz¹TãBŠ,QÕ]<©ÕÁ•;­ÄTÐDP)×Mi+zÂXÍV£ZnéÝz«Z®Ãhâ+óÓíRc·º» ZØ“•K?%±eŽ/èFL'‰ç™ŽöJf%ýPZ/a–?•¯nßuFÙ W«ù׿—Þo ÐÓòRCo7êû{pGù꪿WÕÍ·-|ZÓkúš&]¯ð ?ñÛ^ ×ôˈ¤¢öAøPS»êêKxƒ-êÛø\Ñk®"é!㪺Š6/á…_àïk ×ú~Äßô›•=Œ¶Y)WwJ5¯Žý¢©_Ö¯èWÑISµØä` êö–Þ¨c¿×*[ n>×{{¿V2«Œav÷w*Xnt×,ëé§âÛŸJÍ2(¤r“4¶ß°í†jípoí‚R˜iâ—VµU­4=¼uÿ±S«w+MìRÝh›E5Uu{7±£öü»~s¯TÆ/7}ÒGe“Ô/U¶±_n"¼§KØ7e0­»{䛯èZýöVµyƒ¬¦¤Ö^yU¿ruÍÓ­MŠZ>˜Ó6Y èÞ—ÎwËw¥÷Íj ûu[Ûô]½ƒ½UÛM°(làrS¿]Ò[ûµÚ^i»b¨Rc¶>yS]íîVÊ-ÙÃØ X ݪîTÈ•K@tEX/·¿+Xþš˜Š6=2¨FàøÍ»;õš&«Uû{{à˜V…»ÓûÖ nùõ­-tèûº¥H tà·vZÊ/íìíxëä¡ £b̆ë<®Œ]¿‰ãg®0QÙÑཻܩÒílÂ++ áט·ÞRu Ë *ÂC©…™ï7,o«ìÞª6ê»d¨úV©Q%kiêøÀnÓ¢qìB‹@küC­zã.'SBO`)/©»Øs²®YZ×-²/²ò­²ÂvY»¦_º†Çk¯­aÃ(üç•—<}íÚµ_z8õ›ÕŠ®6믽úÒU}ûZ’¢.Ìs¯VÇ~âRª=a–NñÓòo7À‘ÔªO™¤ë7É·Z þ˜£jòb߈¬=µÃM¤W¥øf5Aå­*„êî@Úuì– É—üM (ùˆ3©`Ö»àûÚàv3‰d²¡;-®ue T~³º§«[~åNµÉ5„0Ó42°s ªÚ½UªU7µkèÙ@ªÞ­¿½_o‘@§¥–üõFE›‡h“ 9°½2¥]}·Á}WWšMl*îHË€ÊJ„d%Ä„'›É^]mS¨Ötón³VËRu%Råv©Úâ.«•Ðßí¦áÕ–&ÖwIæ@ž®›N=¨ìðç}Êi½_ÞãbU­T64à`ºYiìF©¦ÈSô÷)<ª¤ö±d{ê-2÷J£Ej#Ó¼¡w7°û±V\›’¥‰ µCž‘eï×"®7K ¤¶x[$à Ô6Jå›@tü ‚Šeg™¤ å6{Ž«|A’NgÝÇ/HKϤév­¾Á•lÜÔ ²BÕ¤:% “*íU¸rµ»¢«`)J·0_QM¶j¥m¬è‘<¥;~ug¯¦oPQï“×ø»Xi‡Ñ±ÌW°ì8pÿrM‘Jê;ñ ›P±ßÊÑ;ä+wìõ=Ãá¹W°“‚h·oT[ÂÀ³·êµM"?ls1vËõMÑl6‘éŨäÉÜ<§Úi†¤ª`ž‘ë„ÀðE´Þõ±)õNµ¹WÃl6}âBjÚvS² 8E2?ƒjîî¶ ¬€èÝ ¸ÑˆŸ{¯V!<Ü¡˜’^wJ­ò r½AFMCËæ÷[õ›´6Á*«TãüR :ÂÆ>¸Å>^ªÕ›€I•“¸Ôî0“]üj@Ô7wac$°ôÖþîM¿´Õ‚ÂBú4²WEþ*sÁ*&f(Ò›?Ú‡bñ+L¸ì†r úÙöì„ ŒŸÉ -å5Ädb ±‹?÷Œ–äï:ÒÒ.ÐVíÈ´U\J(QË[‚]Ýä€ü ¢N!2•€L^h¤¨G{ë•)èq{•MpŒµ×ô«hTt®­áÃ6Íü²F.á-\E­á+øÈµ×^6 Ñne«±¿ÆG7°¡j¦§_®™ÎlkØ(_[S€«UÝ®4¢ñhàܨ6j{uj)4¾®¡Ï»Í·k5¢]‚…ër­*Øj6k" `ð"ŒÐÂ19Þ¨&6ëeQDµ'š©µ;`LU _mmY«ÀèèïµcHc Ó]i²Àý=Ÿ"¡ITïCÈ”Èûhî5©$Ñ$†"HýƒËr+Q74±Qµ”÷Œn/\Fïà×êxÎÍÊ]óÄm3ù"ú48¿ˆº5—ý úš/‚lo“º¢ÕBE®V°ÏüFŠˆÁ¬0˜Èˆ__¬Q£„l×뛾 Â‡2¶©ãx=t>(‰Ø¾“ú7¨i"Ò‡Ä33ÅšïJë˜oíB©µ؇1#ŸÖÉã pa€-rcÝ,Ó†%±K|3Kê;¾™$p/>ˆÕ]Z Ђ€¥dØíJ}§Ò›Úr¹¿ãCËßà ´ˆu¡rÊ c¢TZ43À!va]A»9‹Ö¨ &DîѪ‚ñÑ_°³ZÞ½«¤K£%·Hþ°Ø©þoÂÂ)Æ=(j!lX!‰C—u¦Ñ4F³»m:“Ò#˜²È…ÆØ¢¿GM£j«Y2R»}`·Í36Ð,ê7à9QˆÆYÞI} íßtš`_ 1¿–SA 24nT ¿Eá ^ÈõÜ$EàÉþ®XçF1²d ¤R#­lઠÎhK_D5Þ"‹ñ‚/û*0vº_Fç­:ýP ÃY±–bÑ5Tœ LªúÖîf©RóŸŽçÑÔ±,ì¼îÆ)L£RÚÕmm€|7Êz 4Â/•2>`kx‘™¨|£¦‚`;5ö(g ×ߢ&·8†Û«¼ú²'Ê$à£lüeM¸d‹ì¸F½]ƒ½TnC³¼]gï€{`]ã/› 73-}‹–ÜC;°÷ä/1WÂf-‘é›6@r‰»ú&Wìfõ—¿ÜelüKP*­Qi’0„W glû€® ]ß„ÊäGJ]IB,à%ü´a±Gw+²}ö‰ìMu›ÎˆÛthQ[m¨Í]º ¥+oc·ÞäÛ×Ýñ´øµÀñÁ‰Ð80}}ôïl‰Å*×n‰²$%í€2 '©ÂØ€K±!òVtrêvÔXIÇ š\…ž!!hêÔõma[Š>&’;{€"¸ßÀJж}G … 4Z¬ºÎqŒ“œèZS‘;Έ'ÈÄì“ÜG­Zsñ¡åqvãÑ:n H"Ô:ìž¡rÇ&´™2ö •¢Ç áÔMùïæ ÀÅþn•a‘©òΞ†]²¿¹GŸw±Z¨peVÖy„¼Ë7É”Äz³\‚f­‚”Î@_‰@¸‰õ5.`î_ÒÍW¤ÒR¯‚öw«whEb…àô%û;¢¨Vk-ñ3Œ5÷w·À9šX+¿©; ù)œ¬5¼¡Äß|>ÉMÊÒGS½R ÓP¬ûMübå…4Vl9ÝØÑµ­&e–hñP•÷±}àßlÀ×JÌï¶ê{T:[õúFu›Æ+àV¦Y|]<æ0ß7¹-èMmÕËPk*ϪÞpm¶îŠÃ¾xo¨}Ãd•ŠžMͬ송·ˆ¦Ý}µ£Ùž9rz”&DuJ„©à\¯"¢Óˆ£‘A0“›Û¾€H‹kn¼ÞÀ]Ój»b}@”ˆ®âƒé}!¢+3©Ã2…ÓÈ·jÿMOìȾl!%NqaV#>°^ULõ.á¿z“fðÝz‰ŸDËß«£v1Õ¬rlŠÂ âw† Œ» £v×è.XÄÊôh©­Öžy¿¯ÒÐ}É0¨§¶e¾l¶µu'lZ+ŒëGÚÂ>Fª[°£7›&4AÜG,ÆÇ7ì4êdI¾º¥^¦\¹}ÇÐ ï;–êÞ­Wiío@<7_Æ.ÙøçY¿ øŒahÜ÷pä 5 ßA ñVã„À­Ø¤‰ˆ)ï6É€ÅA¦\¡£Éú›°+4š²Å¿ •Å.(mJ¬CœNûäBTójðeAY•®± vU¤ è–ð(­3g²òçÇ}‚Ѐys®“[@tª$ìh ~"êš°+ªæyÝmrb0ú­D\k¿±ëÞ¦$ð÷ì3¯4ð {@Ì r cæ`ÏBãc¸Ä·Z 4fñ+6šNÉ¡ 7xÔ¹0¹h”%gOX:ˆ©¢pN|ÀÞuô³ñíÉF ²h¨2ÐbP·GògdË^Ý»TPài³Êfã`ñ$€²» ö©œQW\ȃ¤;£\Ùþ# ŒY·ô Y`½öÒK0³áMhê(äÔݹÛÚj§gˆAE¨[7jþF} :UˆZ$:=.bY¤bm˹ª­ÀPþާð†BÄ5e¬·JÖÛ¹N×/ܢ܂ÜΖPt¼õÁå‰ÈQ‡ÌŠË+ï‰9Kw£¨„{˜ÄãŠ-"‚&/Ø--4Îñݶ…Þ± )\.ADZ.؉O7üÁH9È´†Ú» ½-B~]ˆ-‰ýEÔi·á”£qø‰'‡K}Ç®ýÞìhO¢„Ä:¬a!`Ådþ-CœÆÉ Ð+µÍ¦àM̸íÍ&e«sp`=7€=}S56^®ÿ@Úܵ4á:QbÝ:Í´¾$€Ó Eï^¹åW÷œà ×,oÛ—B¼Tö¾[žàÓ(Bž™ ©WdO ñªÑD¸±m8« xxôáU¿M£Á8ò¡r/ϨH-eé5¢A†*`Ö #.R«îÐ' àë´vä¶ Ju‡2˜i*qUP ûp~Ðy¶øÏÄoÒR•DyºI—À–²?É®­m–Ì7£ƒˆ¥ªÊ·¬Ð3ž|‚¼]§¯uC"vˆq‹@÷%´!B•¬SøeäìB‡D)ŸÀm… ÝFÊ!7m®¾}/æ£kìL…¶f™Û“‡ÕšÜEx~ÃçÇê–8Ò,‘ÛðM5¸Þ}Ç3Ñ&(¿»šÁ773¢ÜyÛ.f‹—|£%í‘L}ÛWÓB"ýÚ¦ EY±høÙLdNrCסE—vé%3¢Á=.‡o}¡Æ¥Èݰ~*ô&•Œ=ëÀr[@Ü´ºh´J¶8dÇÞžDË"Qa=„­ä b3I¼E„„Ѓьœp“ô‡ãæŽåf 猼H­SX9uûŒªë†HF<«Uþb‡F£4!r³5ù>ÑfCd~D"P>ŒçT6œA¶·]¡ÛJÔsKÕÆ¦³00Ò¶æÚÚ/ü-«s6£§@5íç[æ¯Êe°/HÝjÅng±“*wÊØ‹ÙwË-6ƒ‘vŽzcZ(}:)ì·à1 A‡WÜ{ŽÃ0½!‘Cü.aÕD‰¨"<e¼Ë)ˆ±Ò…ååÖVÎT¶ ¦Kvƒé6·@™Ü‘‹i X›F¡é Qa©¾ÁVs ¬çžo7›»lÿ*wbg/AÝ3Ù¦Tu+7"“á‚Ø0¯íê–¾³±£7`¼4ooi§ómÁJÚz]eór]om›B¨ú-µP¾ºƒhMñjYþ’t …™@ÜFwJ{bw[ÁJáß4^?Ý4é56B¹Ç]‰ªìIxÄŒ†§Øy;ȉŽê.Ü1@§e ‰sp6…çÎz㖮ýpCÄ6v„@ /”ÅaØ‚ÔÆWHõÝ»àþºT*AU†8«ïX{Îà4Ø}eö¾|¹QÅF1Ou˜OÅïHÅܰ7á•”)a]&Ö’x ̘°‰ñò7/ÞHSD'èÀá&]ï|bH0=<ŸKFŒ|¢?¾Gl/‰.™]dÛ»±w¿{‘ìí8Æ$mµhÒz¸p’}ÎßWÏ‹bš¾ l™ˆîŒiYé-¶¯1}t¹Õ°¡ŽÍÊÍàÖÖkôŽÒ ¯o¼eü"L݈C_d­Ý±Pgö°‘A-¼*ߤ“ïfª 6'zõ•Í"pÊH‡¦BdG‚~…°¶­’ƒRO]¹oT/ä ÒSÆö| ½ïå›I2B‡ä;®«æH–ÕgÆ¢ñ[ XŠêu Ī\®ÅÜtØèb“bhšÎ¢Eê3bêXœ†[ÿÿÓô«T³à˯á 4Ѐ¦´Åßoã?ŒX«Ýb‚‘ác€Î’FµNoé lÏUÖ'"Öªd±1¯¦Ôh”èÃ(«ŠÝöR°rz× úÂÕ»W°ì‚\&¾Q‘Œ­–q H´J‰~SIá;tæùÍì›x’Ø2^²Ø,w¦ýþ®xsèd².jÓvåΞÞ@`§RÚo‰8ž8¦ i /„(33«­‰u~dªcV"‘Axp €;lÓ'rÛ3Á˜¸‹DBºú¢¿hÎíGÑÃ*~”>ËÜXî46â>€P¨uÅK(ÃàÒ«éê·É}ñ{Âx¸Ntä‘CÀüºåUÁ *Ô&± ÀQŸT‰ËÖðéHm’ð]$‰ì˜æqûßnå¶mH>•J¾Œ”pãbÀ’Ç+k¶G¡Qº©ïîÐi§#H¦5½UãK‰¸`ÕäÈ2©íßT÷¸ð5CC¢æw,”eYp¨å;5!±)J»7›tÀØ8eÂFGU7Îò7:Ä#ÜÊd‡ˆƒÜ@´ÈË£¬QI𻱿-I~Vœn`¶w” èv.»Jt°JúBx2{üé ßÿ\*}A„·¢‡Ãxö[Y,Ömxi"oÐCu¬Ç,)ìãý¦ýEÇ|دÙFû)Ãv(›t:9 ­Á•VGdœj@ R†6äÝÙȾÈ/rl„¤+1™¸Íå¦$]&‰ÆÀ Z/ðY¶Äw»JŸk-z™V†±I5#yPÓs H Û츸Wåv$”é]pЀ’d |·¥JƤ*í1)À¼H íÌ…Š%BzG™^ð“PZEbÃ@!Cô:JÙzî"ä¨gUB’Â@ DË`.­bð{‡~ÈW¦Ýƨ«*Äh°‹ÊÄ¿Ì^gx2‡–¶ýOqÃD+M<Û…Ç…'1ŸY(`’â °c‰È¶«Q“ˆ:Á˜£ò±7üJùFCPÏ#sj›ÈLšˆ]!ô[vDBVEL×S°ÅDiRŸm6Ÿb%Ŧ)‰§˜ìH|tZ2ƒ|p›WìtÄíB߈’Œ=z¥ÁMGˆqL8ßÜ&€CRE‰v›¢¸sÒ 2€çIÚ­œäL?.âLà1Ópry6º?‹rµ4‹Cœ}f!}<]¦7+5bÚÁ´z~ÂN*uúÁ$ÿõÁºZï]G/Þºkðíä‰W|&>‘ó³%'•âÖÑa¥%§¬.œcr‡žH>üÆ’žÈQq%"Ö– \t¬å%}=> ’ÄTÁÉï'×vúón¸ôðΗãî¥<}ðÎgvßË`-u–¬Ì: §w>_0Í¢2 ’ð}.qªgé¡ìslÄiÎKQ÷Åç…¦Ï«í­žZ ×÷²_Îþ…'pì¿eûûÑÒ©D8ŽgáöƒR—^ð–Oe…“OŽÎ]ýŽÅãKËxRâ¸[ÔÁ²“OEä1J6Gdzâ©ë×½§Ôúõ§žÁ?%øÄœå›6ÏÎBC²í²f‰5ÿ|®ÎU¹áÌsbÑÁЋ™–ßÉ_’¨ýç}a>_0TF¤Î%ç±L?µ²®¤Œš†ýCmêiip8œ%¤â·²ÓêãypWÒ Èåo—ñ¥`2 N—òÁè ­—•ØyBÆô»ÅÇKß»P,,R¤¿sà{ï&HðààÒY¼ø“ÆÅ;¹ðDçÓÚ˜þε6Ofˆ6uvÚ+<5½°ž1´?F·«Ï°h?¾»@vüwÞšg-åò¹Ya¥“½Ž™-«að:E›ò K|~ ʆÎ5» à£_Š·´+µ KGNËóõžÇJDÓi8Óó!ÿªA_ƳSO÷{Ó$3ýaFÓˆ¦,œ|2ïÌŠ—õŸ&‡_ÝhXŽæ‹yøy(ÍÖ»_ÀPóiˆ‰Š"¯ñr{r¥0mmªB%Ça+]Ê)êÆ¾¾ŠÂSP#¡h©'©¥þ|L*×Ï&“÷sÙÖÁ‡Oæ1ÖÈ\Z´itva‡~jäeEPò^ê‡/Æ/ÿ&ÇŠöƹèèâ¿(^ _,`±©J<¯¥9Ep™  ¶tfz 5–êÛ¤÷ ˜…ø;šana×êu uM¨Æ F]Sƒ7;žÎAœs Ûv#eS xKTidfa˜„‡!Ð#ðO4¾³‚ܽiôU~Ô÷ÔÝÐ~8#&3N2æÙ¨)Å)5Ð0äϦz¹žöÃp¬÷ÃùX󌠫MaStÙžU‡‡#úŠÜÚ: ÜV’¿ÉÉ·ˆÑ‚£^'3¹Õ™ùYÃAZAºýøc1ÏFÁ›ÈŸøZò»Cï»êà*÷Øúuõ+O±ZåÁpÝK˜šYÛÏMùÒp#¯—Õ ¿Ÿ•nãÐ(v®€pŽlË3eÀxߌË;ç¨ßLbØrÙ¯¬óŠýú׿¦0¿¸Å€kt>ß^žšœ°sM½Ø¥nÕU0u¡`ñ’Zño¥'÷g÷œ›žÃ×7’xŠæC—é§=ñïM|8z˜˜÷“9óN^´–ut¦<¦/%ñó4~î|¶×þjjí¿™Yû;9Kÿ¹Kò™ZùµÄ³jF¤VþÚ’•o¾ý™^ù——®<&·âÊOßÿ,­ü+‰g¯ä­ü«Iì<ÆÎ[¥[¥f¹QÝk}– àRо—!€xŽ tðõ\:xoú"ƒŸ&ž¹nþ: ~–'$ñ¦Ç}–I๠|;;½ç8¿eÿ{ÓÑð3D*ñì»Ëø€·D”›ÍÏòê?¿T`r+J€Îô³´õ_H•béÜͲùìt a\„mgÁv&6¿šÆ¦é£™QŽa¼ó¡½g(#ì+O$x"Í{÷àêÊ8\øÈØâRÒ+d‹; ;Ï4;wÓ|¢pšk›¸-˜ç"î“XT|1‰““I‘$Ÿ; (²Þ‹ÕHd![JØy—°ïœ‘p-p ûK!*á¾87*³î€ÕP Ha[ŠÌ<ØÎ‹LÓÇyîmHöú‰Þâò©"_-‹káßjwÁ¤4]òr ˜GÉb&AÌ¥‹1uì“MË›IjŠqúéGg_‘‘@I(ýéʹ“Æ®ófi>r*Û3ªËo,5”Î$ùæ@eU“Éèaµ?%Cí²œLõý(ŒxÏ}J°’—Õ‘oÞF„ü~8›®+üõ…rü»Ä&ѰS09š›{ógâü½U&wi•É-M§Ó«ì²ÇwáѱôäoK¿õ½}&Ë?WÚæo!¥öWÅ ‡™âËøÐú™Œèc¥wŸ•I}fN/ÿýV¯¥q'¬9!·Îޝ¤¯u]v9g$Ø_ôÔ½Þ`z–6›ûwæï<ï©g½å¦XÈ þ*1Jòùl -}úÐüÍhÎ*7“"w{Þ1˜æ‘KŸ žOa -7”o_(:UÑæœzárÿÓ¼¬>^æäùö¦¾ti;êâ*«rþƒçI5=ϪH{ôs÷w‚~¾™¡ŸäÒ¿O$tæq×'°ŸOüëÌ:|%¹à¶œA–Àè9ï0¶óΤc/ó¸üó6¾u-ÂîcôûÏRýžS•ûE/¯´œO ýܶü·èÒKþZü/òƒe‹ ¨|°ªžüT;ýÜòñã3wÄ¢rWgX¥>G¶C¾ÿAî<ÿ³%ë“ZòjBj(9•XŠ ÞÁô¹×5›¾pF]ºh¤¢S?Èì±ÈsêÎãà”·1 K“-Å8îfq•[^#ê&¿èF’ª– …˜Ú.>Â0çàÕ)¾fuƒ¨vM´XE>‡ÉÅa&/\ø¸Tù)I•æ&æéLuËD‹ž„Áàö$# ãé¯ÜÆ·c]Æ ½?îÂ_ˆßæXÿAXq… u¨ óÛ˜»ýPwæ“iïA¨ŒôTg&<¤ËAç†Sô½5 Ãè‹û ÜÞˆÛ›õ£ÉiÔj«×ÇÇèk‰y$Ñ ú°æ ð¨pv<êj3«zû=<×{Ê•‰Ð†¬XU©Â˜³ôô–…ªd7‹Tøe¯‰)x:ÅÓf±çþ¨#%9î«ÍIðPïõNÂ> ÔÞQ;5 "èbÜÛôÁ£—f­µ7™ÌÞì; ²ôö¤×U‡SL4Ô[MU&ͼCv¶Ñn³@—ÕHuCÝïÒÄ‚L¤«V6æ`¬«j8S×Öxy¥î²”ð8Ä”°€,=ïÏzã~Œ¬àûk43âhÐÁr…ª+·Wl]‹ÓrÐïÇëî°–zêéY¯{ªvGÝP.×ì 0Ð`!¬Ò™ƒâéQ0VÍpòãÝ0(*÷{Ì ÝãZé[¦TOïîìé2¯³oâ ïäT×F /9¡±qØ×ûjGõ†èr¬ƒþÁF£>€™© s_Ó€Ò„0<-íZá`L4[j©¢—:ö†Žš†C—ôØÖzÃûa·Ö›ØIo„•=}{ÎC]ÎÚ|ÜR=Õk¾X*ôôIزõtÌX§=Tá}æmEè™ô‚~ï>Â`u_í“}Ÿëg×›4`ál_GÐÍðý9«Þ`ÁÑFÙF[l#ÖÒf7}ákAŸ÷§+sÔ‘Ì9®U8›±¬Mù˜tÞœœëÍœžX?¢"ÁÓ{Óct>År©©tL:ǼäkÇÌß®aØFúšûМ 8:ÇiÓPïÛóC–ïéòÖž¦.†CKï¼5m6£5CÓ 5¦ >¶‡Eæ>q¯óŒp4gälz3L~ÃMNMìëÉ\U|¥>Ÿ1 Ž:}²"Šõ­ ;#’éÜKº4ŽfhWq ?ì »ñ:¸ŽÂ/™•í-Oö/x(—›Ø²–wd‰óÑýÓQët—‘jIS˜šj8í÷Ü8 Ð©P ‹¡Õ¬L&vò@š3ù‘ñª‰?+ŒÇË2`]::B¨žüb}‘µ%ø4þ›Þ¸„ÕÓg}òêeU9æ„}Úf*Á¸ë‡ª‘b¥ØžÓ˜‡xœÕaô0ÁV6Õ‚@ Ôi{ó´NÃp¦Év´£iÅíð-·%~m'ŽiÙzÃÒ $ÑžcÖ¼õæÎ¬g®m7TR‚ tv9ȹJY9_žðe“[‡µC°ZWÉ÷ø]H$†i lÄn¸¸”¨W WÂJ;vIذbaÜìÖkoMU<຾٠Žú½6øÚ¯°QWšw{#ËÆzá ŽtuóÚƒ5_ñãE7çO¡ÔÝëA9›„ò×´ôú*©„ÓÓ)€ŽAœNßï÷ <¦à4º;é‘§? &C2»‰0!ŠDUoÓ–‚| 5?®px4;N|/©·÷T̚ȅ{ài(S –°W޹„@¼Ù,-I¾©Ç a‘÷ øm¢šk)¿_{õª;ožXª@'uÌÏ'uÌD€àWy¶âªuöVÓÅ‹|í «X ßHZi©|”35ø•U €KÙlj#4¢ç¸Æªpü¨ޏ§e üÞ…Um‡7N€Ç’SÒWé™´ùåüYR—ãg0nj|=QFôé$¡-”]æ$=³JaöÅ+ àKËPð¹< ~ñàùVòæÁ 2óK^ÎS).ÆC>Æ1¾œë#xñÅÇ8ÄWrIï'q„ß_¶n)?q˜&ÝVc¿¢·J5^ÅÂ;¬|FÞGÉËe£‹i˵R³©ÍU‰rÛŒ\m.àñ}͋ζ¶ô]¹JïÖôFC·J9Çê¢Päâ±:ùç§¶ú²þÉr‚¯¦Z|-•ëõì^¾¶2?YL½\ñ–’O33³hš__6MµŠ4|>M“à&Ø“Pºµ½^q¦ëþ¼ :ÿjÒÉí)ççb\~2êS8QñÈ\[’7­?LÍåßs+ÔVm˜q÷uGÑdD¯½!Õ­® éQȇÆqÐô±ûÓPõèv¡Û&0wÂ@ŒÔÞ¡ž>ìÍ:Çúá1-ú¤‡—Ó &!´Î¡>í…ý®k }#ÞeX0çôûÃx&r͇AèZ«?)!¾j$u;KZ¿™Bë2Àè ÿÙñdôÐx«û§‰ùýàÌÑ Óö Èð4 Ìÿ‘á‰gD¸\ß‘d—ÞyA.‘‹=ì!g]ò!øZêø•.ɼsVsoý©³YÓ·. äo žÿE.C”u ¦«ÏË­ÓjÏÜÑ6[Z‹hµÊòç©•nFŽb1ÙW>(o//Î;Âã“¿­y-ñ¥ˆà^’ÅÚín¦Aï{_›t@¸²á×…×ä(¤/¼ ÏXíg“¤GÆblc{b¯JaêÌ?EÜ£(#ø8- >1m…ìpä:„ë蜀‚·B˜8í[iÐ\s—wÓÁ›Ÿ¬….¤¡­=§c{ÊðD¸œ'ÊTI·5ÒéRî÷:Þ£ÔJÏnôòXǯ©~sþÓ£“;•D¼ /ëƒçõ‹ú§úgú@ëƒwõoè_ÿZ\ñ^w`yÉ )ôކ¢>sñ~Ù´óx-ÜÖ{ýÂä×d^þ~´×ÕÁëŒ?O«Ÿ±&…ðæKPã}qñ ýkôlé]üXoÅÆƒzÓ+Ò­"xC:æ.ç«ï<¸|€}Ö¢ëOõ-m"”š“ù”éõ«q¯èÓŠw6b69†xZ¨dï$è TöǤ6RÝ™EÿÚ½âÙmþŒƒîõ×_×øßåÿúׯƒ€_×oà>è7Ά& NoºP$ÿ' F¢~¬F`´§É<‡]Äõ þŸJ+œC—cÐ/Þ¹ƒä¼iWÎ<ŸW"̹Ráõs‹õì6b[vÂÑ¡d5¸=xpp)a¬ §§‹†dAœýv‘*õ0‰./¹PG£Ùè¬Ì‹3‹,—rÛŽ¯’sU¼È]ë?OïÝ{æ¦ÂwVÓõÎçAÎÕnžüøZ[\‡åµ«ÜeÿNѲçîõ·ûŽýô…‚ Ž…v’ìX꺤÷î•é ô§Äi{âçļsxCžÉ›[º+éÚ<;#'ã.>ZçL +JÙJó餋-KÀI¹ý‚ˆ>–~·âßÒ×Íå{©ßLóp ´ê°s;§~é È…Jr ½ƒõ¥ÁµáÜÌê±_Û´K~Ùý—×rärî+Ü Šu-Nî¼7w¦^>·&_Ä*˜ÇQ ùÁã¿ìˆjaÇ<®¼€ÇÿžkqýQÐþñÈùÇÙÍ,—Ù¸ØÌv^ygG§€¡ü®R;Ï Š«Ý%zaÅÓaŸ„øQ.uþ;Ž7Y~R6¥ì\‰)Â\èðÜRÒ~NR&ÎÖšŸ½Pðï·—.ó‹•AúéÊ=Y¤äâãßÑßËìhãÉ­kò¸J¢|~zHßYó)þ¿Úd2{öË„ðÏ‹næøóUŽ•|õRHœÜü™Ý¹—¼GvvE©H&9ÔFïVæpŸz~èzÑŽOå­8;×iú¥3÷ÊÙJì›E /¡çßËShÞ¥Këý¼wEîÐM½‘7t)Õ¯3Þ•>ˆ›7ͦW…*ʧð´ºò‚'÷öžÉó+|a= nY]–éù¹L[wy.´ožÑ¾Òë÷Ã#Èò‡“ÑðÈj­Q<%3^\¦O©ãÙl<]×ÓõÃÙXãÿLPE8p:hëàp¬‡‡S­N.{ëƒ`¨FcL@ÏN3ïú‹/êAÐëÏF×½{—¯¿\þ tù7°üý+üÓ^\ýg?yçù{—Ïù˜OÔ“ûplχÝp"•ÏñŸûþõæ •%Â2¤VáÉG\…"ÑTW ÖívÖ›*PQ&NOÏ¡L<ž/¢5šœêÑøtÒ;:žy &sµÍ–„f&òô{ª²f§ÇêÜgÍøÎ=wvdªB9LjsíÙ¼ —Ü})+1S—êsÔÍ•AÒ£}°þºÆà ½Ž®%+çÊóëox ×{¬vKy!p[Ë€{ª@~Ïÿ2ÙÁ+Þ{¿Šœ§ŠV§ùn† ûM]mPÄk’E±îBÈCÑv /ßÉN+òدxÔî{¹p¥¤¨·R\ÍBžØ›=äæúø¥÷eT±QãÜp÷ýä4~•Pô l1 Ôa_ªt-›ˆºÎX÷õ³µÆ<æûË¥0´™“TðHé‹9ý—ɳ”ŒYqNÏ'©ó M2Ðܼq_þÈKz¬F¬Ô÷€‡š‡]–Ò'¦b¾oš‡§zbÚ²dɧû'8e!uÜ;œéù@a!…Zjui~$PÇê¾Ôºó!L|ìiÔÀòAS="CY¦M²ìž¯æ åtÔ(ÑG ÐáÒs5TS¨÷>Oq§º•V‹¥ ^ÆP•±Îz2êΉ -Æ1ù†8<}¨LÁ ÝWœß”o÷{cO? ú÷•5ÛÔ/d¥-‚\€ q"4ýËn…, {r XPÏ`r”iŒ=OÊèÙ%§áL°›¤¸ïR\tùfâβ'²47z蛘ƒ>úGáŒt<8Âö1±cØ-}Ú.,$ù¡Bò<à¨dwh[¾ˆ¿³ùT³¾ãh0Û&dQ)>ÁÏìÐgýǾÃÑÔ ¯vµKeâË+º«z +nV©!HRfSì…Þû½®¦ÙƒN}ÿ8èÏüŽáVñÇþÃcoDu!èÜ÷§§ÃYpÂJi÷Iü,y%§ô1]¿MÛ)œx‹žó„¶ƒi¯ã»¯ÙìÔë)–Õî¹RjÞÖïsKTÐà==T0î¹¾`,5êêy?¹¢ß+ 3p÷ÇãÞLûÆÈ`4x”ì¿q8츧ádBDéáH›â—¤ý‡¬0É“ºÝU˜Yûƒµ ÿ£ýk k{BÓ· [£·6™gìƒ{ûïuµ ë 5ðªÁh8;Ö‡“Ñ?±8hïd6B£÷º32Þ‰~/du@,Z0žó»:‰aRoa߸î¥|ÚT;ìr—5¿Z£ ý–´Ö[ôû¡»Íà´~x; IIæ_Ï©T°èÔÃ’»A6¡ìÿHO¿£èÁõ••*ðÑ`B7‘ex5i¼§Ðx:o‹ã×÷Àû­!qŸ±-ÖhõÚ‘ÀÖàw•ާäv,„“¤{^Ú—6¶†E×79àr‘ÍÁAäX´{Ïôç X=|£eÐóË4Û)bºàeÖ‡ ý£966p²¦”9[šg>}¡™ÑXÞƒµ`â¬~ù€€NáŠ0²Xšö{m³¯àä5C+€Síkø ôíÉñuLM*=úcÈtò{’ ¹œÂ~eû™¤ñ‰?ÛFc'ó…žïãnæ—Ñ„\ë ì Ï¢jªBÛÑW@ͯÃ÷€ž@¾B S·¦',c(KÊåÐgÄVÙ‘@iAB¾ÁùÒ†XoŸÎÌŠ¯Âo:ÓñdáÜg3Õo‡àm†Ûg“>°rÔƒ†ÀbÀ`Ëì‹eS©TŒâQÐW\æñ1hüHªŸÈ«ˆ´NÎÁƒ•†g>é mƳhƒQ]ŸBbH‘aé8C€Z>xv¤v¤TõÅBÕ (ÙkR²&Á”^8…WG¾pKhŽa‡纟„ƒÍ~CGöF™ä2>]8A€ŸÈfÔÄÙ$F’Òcùï!ÿëIÇ*Ë"oÕ#(»â ð•aÐnOdçhè|éX "ðu¯K#”®æ©/zßHQb‹¾¼a±"­aé‰ñ!_Øiø ˜Î¤Î%+ÞüFQÑÐVôqP‘ßöìÖ‡Nà¥æ(^Øe¯!Û¹D_}¬ »q~Ó¶%Xša(Ò©ùÕj-flÕhZܲ‡‡ÚØö²G3ãØÎ…'N 5D„sׂïÍ|9>.LϽÔ&²ú²JG LEt£CH?A•?€'ë'ôྫྷ%èu&f‘í£x/»`ã ýœ¦öG·`Ч°‰ Ü!l *ÕŽº!¡fd·è ¦ˆáH–À¼HVüPÁŸÂ˜Q-žL¥ ZOÖx˜„¢ù®Â»SæÝ Ì'¾µ€`öHÁL>“г{$ÃL?·Ø\…}á{ƒÎ‡Ž· ÙÔÆ´\Ç0Ãno"–ÿNF£™ߌ¦ÅÇòS¨XÓ—ƒ®üJVðp%õ Í3pü·i8ÀÊO ÷aøÐ‡—\öÅ…\Äl캳¨î®Ê-6$Û‹o-‰ ú³IHÊ;ÁºOLÇ·`~†ØYÜ Ç‹•ç=Òè÷Aô´!4’`>ÑxYEИù…} ŒfCî3ˆú•:dëL‡ÿWªCj}"ò»½Î̹|K¶RÞw~t²@µ°VÝ•uj&‹1íLzmÖîÁÂ0M( þ•k 8e½lci„†.apÜŠÈg|x[C!Y‘F`H€Än/Û?ôs,Œò $ ~“Ï´ä¥tµ_öM›ÄP95#e±ÁÔë²WÜçªÞïEGưGýHõ”Ã~?®"ìø~fàÿ*30ç"Õ‚­óÝ…ˆ:avºgYÜ®ÑqxFMDaY7CÿŸÑ;…×ÑR1& 7éu`ð@P'–ÚT.€û举úâXvËIÕý¾çîº'~6¢OSØAÆ'+«wyÐF·°o¦*¶#û™Œ@< -(ìéõ¾/?óVYœ–¯ev3½e¤bºaü‡ýàhªK+ƒ:âÐcfql ÑÔ?öÀ–²òC¹ÅWÇÁ”Þš±XãØPêŠ)•~ykúÍ ý¿g"‘„ïŃXÝÕ`†(R$f®Q¸C5š< &]ßð™†wÃ>…-[Bõigâ×#C³ø@Êâ6‰º‡ïx>ë‚°â1R#i*a†óü­´s‘¬Ùbe“4Nàˉ6Åÿ@ zP-â§ø£ýë-|`h¢«ïûñgŸGjhì¢ Øþ2ÿÿ)€Ä0#QWõK”½t¦Â‰«ÅmÒ†g§‚ ÌÍy`—Mé#VGˆ5@&‹¥ ÿ¤îOØ–Îø#ä=˜Õ3élFµtf¼*½`¡ï+ œHúŒhAïQ»GǽwFŒƒÀ£*QœÉ!ý\Ó÷ç¬Ò:µ};æ!ssúáôóI˜v¼ˆcDuºŒµ ó”ëee(É ìíʰÕÀƒÔñ è¸p|ÁF¢óÍÇÎN6—‹8Íü;“‰AŒôFté­Àƒ8V˜—ÒB“_âå’7aÜu9´×=×¾ð%òë7oG#50œJÌ]›¡Fÿ1¹÷ÞÖYOœ`^ AK:ÉÄ´+¦(âyÎkp|ú¥!p ‡gÁÑB×,&;›I‘ ¹……•zÍbŒjQ 6 …}x?õ|á3Ù“¬¨©@cô¶)Áêé³þ¤ñƒðFWu,· EF÷ƒÌSç4B%–¨¹@ÆWÖWj¤QÌœØtß!TF]øpå>‰?‰{2ÒæÝÀl¥|3 r-^¥BSÖ É57­u„.Í«dI'tx”è÷hûÊ"Щ±Ý0õ•ýæ(´Å´JÊÐÚIš¹õ@J$fŸ¨xê >°Ü%!¤vO<ÈM:G‰oF*CÊÎ’jCõ‹¶/DZø þCy!ôÿ–ºGõÃaèó'%AN^ž2™¥x„ž¬'Ðk0Örã“/™~˜!¨íáÏëͯ³7¹#‰º9íD{A”õÚoG9}r@xÖW¦Ý>õ•­+¯©åx”kÉ1Wbù˜mŽI²q1½Œj<ë(q‚iÉãòx«OHý[‹ú fÂ¥™?ó!C‡ 5ɾóÚ˜½sr‚aЇïWŸ€®!/íó`ÔŸ‹ŸB~L´5(tL—ä€=2áúÕ&b°CµÆ¸ôÅA†ì’¶ãñö–qèS¤¿Ó–{íbtñ`†F˜(תµ¶¿¸gbÿú¢fÊæg³Ùd2³"^~§Š¿7ô¶áÿ‡}|†µFôÍÌG'j<ÐíDv+0FD´•åí&áú…Ѧ™¨êìÞ Go§XÙzMCį#†ÅÃ.Ó.=†°]ñH„Ñ}u²³ ;S×OžòR*ãÔQ²ÁäT¯å'c¬È3ªÈòÁ@ÊjÂýÓ#tk¥\£!ƒ 8ˆ“JN+ŠÏFmq|è° ¶`Þw&[ x뺠£)’ê¡ãwIéµ}ÅÛ¶<Á)¼ ‡‡rSZÀk$榹pmFìÄ/Ø¡½02[É -‘ÜÐ!=š[Ÿt÷aÞC1-à@ÄÒqÙµñXæ5»Ì]ãÞ¦{ƒ¦ÆJ1zi½CaÁÌ?=Ô:(_´LÉ$$¨ÞçµC®Ä¾O6`îÛòåîú©?1×-JºEÏx¶ƒ¾Üch62Ö—«Ï>]Ò–¦:âq·çÈH"tà/}‰³ÓËÞíͦ&˜‹~ƒqϱg†v8´vÔT'Œ*jöl•è1r@ÎAlÌLqtê›÷¢Ðƒ) Òˆ„r¨üÑØhâë‘“&…†#Õ!”«ÄüÎi‡@•{þ˜ä‚Œ± h&‡Fì}xDëÈs¨Un2Ò9ÝáÆ ˆS„b¸¹´Ñ¬£ÇÆ]×›DhI­“² ¥Æ –áÑ‚ ÕÁ ä>ºÁ©2–9#¥cüÿØ“@äÇäTèC™¦ã0¸ïËGîØy±Š€Ï1&ÿçT·Gó˜d¥ ¹ÄŠèËH-pÞ»E¨¹¤¬¡‚i¦¬VåÔ6«ì¥ZIO?hœúÑL²mÄßWä <p“§ru]'fé$÷»mݶYb VsÅ–æX6šàDÿDýLoLno³E¨Ü®¦âe릛ô!F4Ý9*=só²»L? z7ôMt-uÊaF%¦Â‘ú}º'í$µ¡g*DCîCÚ"'™WaÓÍh×uAkóQÉ …sûF2ItšÁ˱är™ Mçxä‚U’±»ŠÛRr¸ÎÙ¨ÒçÒv¬¹K ¡»Ïô¥E_˜à1À¢bPƒö¨/RÇÜÕyTex$Bñez&¤ç‚pÙ¦Ó(—zttvÏÖåk–ݪó&N&FeŠÝÈ\°H…lD–ó°‡ÃP6÷Ë(€PÐy³[ò]“š(¨YIÀsÊ{Ávä­ ‘Ñc¢Ë]¬SQ¯—Œ2“l0™ƒ½xNí±ÍC8èu§qx 3¢Ii@L kvî|ZÈ„g¿ÖІ1W¦€t™×8ãN¯ç‰ÅÆkî’gtm•„.³0ø©'˜]pÀa™µw×DLu¡Oc³ÚžÍèòd…Å÷Ü«Ëù¦Üáö² ÷™è"ÛFØGšç­ ¯ úiÙ•-žŽ`DIƒÓè Óæ›D±˜‡rM ½}†~‹Œ=j`“ó§’Ed_Ÿº×ŒªÊ,¾¶\¤Y¶–Í̦FÞç.ãºMÆ%W 4Q;µXl‘ý¦züÈgÖŒ©mòHÁG£Õv8Oï_7`¼}ã'‚¶•–j5ñ5ËFŸK™zïM™¶hưÔq•!Þ[¬çþ§) Ùïâm™Ñzœõ§Z|.—Êè/Xzïà¥bf«\{‹­Ó÷ùГÀ<äËWêÄŒ,:¾š’̰eÃU‹dh|öêUnÏ×^{å—t,®Í‡.ÐÀgü Mð>‡4‹1¤äzÝh—&³Fj\øÊ¡ju‡ž þ/“bÒÉu“X 94±~{¦ÐÈÂ[ŒtŸˆIÂUdrÿ´íšyi#&oœj._ßvgž¸CWY<®Mfñ¦)úè÷ÚdŸJX~˜iüîH¾¹Í÷°Š¥oÎrÍuÂ0£ïø¹–2Qû9Aj«xØ 4€ŸÎÄä>ôÁ‚`ÊéÌU°Àv™NžÍ†g–Y½/Ià$ÌcX­ÌŠ;é2g T8•!†DäÉ´ÆÔ™GwÊ0àÝ-æÚ`{{0´’Î oKf>Ì»~çÒÖ&¤‰±êiêXáÉX ®’_@ÏML0Í#“Q®GGêªÃM Èc†ïX˜Mã®mt­¹„‰èÿ]ë†Gžg5N j‘wñ›L4ñMÍ?¼¥€pSó¥3‰žêÕð¼¸ûtÊδ|Ѝf ¬äÐIÚœób=0v°|––1wŽÉ±ù_DZ-‹V½öUÆB[_üæ’þÎÚ~B2Ú8ˆ{ éÑ|†?â¨auä3ó¦ìZÎɧ® ÃT߆Ëñê^”ýØ)ü]5¬Mb6¸(ŒËÑ&gXwóJLœœŠFCÃJ<6”*n ÌâÈ?`Z6ŠD„2™ ØöäÇJö?1-îú±¡0%很;Ò¾ê|D´Uu.ôTGÎo¼žØcÆê´TL—bLƒvîÍÿij (žŽ%Uø°mcmؘí“áÚLæÏ‚2™lÿÐgH†;WŽuùйoEÑ//·zóUs PÀ¿$„AѪÈížè¨‡©Ñ&ù¾ýhÆ0MH@nm#'#OÍ+S ¹ˆ¢ö2g&4‰œ`KÜí˜eÇÔ­;" Gj0ô87êž›²Í€;sâQ¶Eîìù–¯rǤFlð ‹]æ± ëÈ™Eþ£ë„å–ô—UHǾéõt¯6vebl˜MÒéÚ}3wþ¸¸†É8U¡Ûk¨ú~jèö¢r¶Š?m0eÿ:½x¥·ÑÉŒ*Ö±‘*qÁ®†ÞEß„qJhc£CÄ= {:&â¢c™=E“œGñ­ûLÜŽ&!†ù¯Z_š‰.‚mÜôáýØWaT!ñeM"¨Ê¸b'†°ˆ…tG›Âœq](Cz7³MT1©Ô©Ò~ ™0ŸÃ8R’Š›ƒ÷ØÙ‘Ôâà+4ܾ۞òlkN„ gNÒË¡JIaÞ1;gË1ãyò©ÓdËg–àYïÑ*tÀUÎÐÁò¹: ·.pÉ!†'pâfeS’IòB²“&ý~_‚2†\d’Qz¸[nž1êF«M™TÇf Tœ.»~¦¡HL⑊Ù$‘¦œñ&Aaf>3ë0˜¡M TöÚú©sN‰¢l}p‘ÃÊœ DÈ])š¬'œÕ…tÇÖçr0çJ%"Šñ{¹Íä°mQ.CàÖù—Ú`´tb×ßqÀ¼ëÏ…+de»5yÄŽu„¿.^B/w{J™›~êC,O×K/‘lJ'‡i­‹.€eß·1¯ ;5Æý 0Ü9ñ’gh܃ø¤Ý2K~¡£˜±(ú}»ô©m<<{Ü,©h[UÁ†å ÞÄ C}¿‡as‚b†€‹a*ÍxÞÑD¶gKs&E Atž˜,-yÙ9j>1>Iüæ»;¡x‚úŒg\ò<~ÙvX£ •ä)jìL[·‘©þ–%¦ø‰ã¡^š±HºXlH°˜8OÁd$½‚? !)ó%ý¶ÈYùÁK°%í/·õè¹ÇTËQ¾9Íf·CÞ>\E+–áqå <ŽšýÔh›’{5f‚“7LCá±\\i2ÃéGKv/²'!æñ~'Dtø€ À½îXH|ŽÛsZ†ù¡#¸4ëDÇ»­0³¼ùÈ;àïgß;O,DÞ˜Ðô½xNºËæh›PWì^Ilc² Aî'Pà;ðÀ«Q(%:z#ùZì0¬ÍfâÖB4z‡‡º|%æ¡øÝ­KÖ¡ÏËÁ_6¾i..è>2Róô“%1™Ý8H†hÑ RåÇœ]Èê–ëå»ó³+–Ö–èS‡w®Ó’ê8õþæA˜Xü§´PÉáædÿŠŸG(M’òræ"PE#S#Fâa%38ËìsÅ´ŠÑ±’þ?™\…þH]>;ÂJA‰‘2 #õÐ(8f^r†öVqb¾–ÙÄÿ_JôO§b¦2·6$æ:ðL2‰߇áCúE%* õÃ&•Z‡„Y!SÁPŒ  q‰Àbô9W@KZ]ƒ<¼×ãi'mÜļéAE¢¡ýå¾êLÕÕ5&eA0'baÁ̼I JÎEj¸FTþ˜hd&ÂÔx‘…C›RŒ¢Ù™‹¿Ÿ<’à‘31͸æô'jÏB§á¼;ò͉hK4ˆ² Û -¯È®t]¨á¯¼ôK+ƒ•o«EÊã9óC{v´h¢‚®UD¤¥‡ Íüii±xWÓ '¡P·$ùO˜ž|ÈÛÎX`$c(W”÷:=L๠I2¿ÈW%BìþHw;RÄÉ£QúJÌ“VkßÄÒ0ê ‰ãÉ"š~WÐsϸ ¡Ý.XáôÁÀB¿—kšéï¿Lõ7îH$œ›YØ<}7‹_לPî2­C|<¤#IF ™ã>’ôKs.ANüÔŒÆØr`‹{‡âZ€¬ë2y>Çð¤7s-.ѱ÷$S)è“É4aG&’™êÿ’ ;Œ$G,c˜Ú£NÖ¥|“¤#ÉŠ‘ l¥NÛL?5†¿QóÝhj¨ÄzO–ŒúÔíùôÔžI%û9åÑ)Iiðòíz#5Cè:q›q¤F“ýfÏ4;#ßgnÁÎêæ 5%É`½»6Á<á|“.ö“,µ»ÜÊæ‘6ì]J¨íoH—„¡_NÖgð‹hªHT3Œ>-><åzR9¦mªY9=[ôçE2š±ž>t4I–3âZ± …MQJùõÔÈy LV‘Í ·€°Ìöýy/ÕTGFm™ÖÍs‚&Ýà¡À@³ÌÊwɤ|¦º³9ûç­ˆ Ã…SÝƒí ‚èÈ#¬L…fXšä.̤m’CU’§ˆ‹Þ?äÎ:ý(/äAÈ3!±;A›3†ÏBS§²+‰ŒÆ¡ÀÍ,^ÄIÔË\àˆ"Ú‘«-%Åñbp_ã-)äÛµY$³Cõ‹l F¿æ‰Ÿu,"B™|‡“ñœ•ËôûæŠèC«»³@:sÍìIÉ®ð)¥ô !2H«Í´û,of!NŽ#8@㜠º iJB"MfÓø hbVœ+‘Îkkk¾9ß¿ ºã§1J“Tš2ž~¤:rÔ!^›ESR b+æàak|ÁiËØ´é;:òÔëKhMA$ Œ²(!L÷Ëè¸2á `éî©Å–L3|õ啊‚DI‚½’މMML,´nû³=ô.—ÒIÄ9"ÏlR‘È‹J‘O8“$'•Aé¶è`&í66ð¢d[е©ï$Œ3ÍŽÔ¼×uîaW©%Ê(°®£Ñb¦! fØÒPîÁBNÑ—a[™A÷¿Ÿ¶îºíŽ•y ±^–ìì oÅ´–âE–ažµÎÙ >)Xßã1Ç©ó™ˆÅ+ë‰f ÛewÕÈD0$‰0©ôL”$"2åŽÐ°;§¼ÓN£ÐFåq¦¹"ÿY§†£¨â¬'ü ânHh3’–éü & /”aÉPíyíÔ©k¹‰„Ó’ Œ0Asȸ¢¹óŒ««(†E¤ÃÊKwW-³¬÷ÒVüs¬„Å|É··é¢‰L/—%¢äè²IúvEà`ÀãW“?âà]´qg’Uþôn3e°ÅÕ{³Õà$OŒ83åÓèê§.F‡¢“Ïñ1FbÓ”«S¢R Ää3Ǭ@‰4eoÙʤÁxÜ?]Yºîìé˜ÔÄ>èýd…ÉB´áô¨" c²ÃÁ'Y Éʈrƒª¶q^dJ .…£g ûÓ£èÄæ|›z#Ð`åǵbò&9Ëat莨˜]1gL Ë€Û.Ý„«Áh¥ÈÂÔ¥A·.ê3·>ï=zè<4ã$*S1iN<$†´œÀ9â³ÉX¶pŒÑœ&æ|‘i!opèèèÉ}(å¼S`ż #ƒ®gSèš²D–¨#³üÒÀ–O+±^×xéñÎñtÌò*ÅÕ~¨fùô¢é/•iºâr>QÐFËŒ,?0EÉëRÖÔVô‘P´U¨pºN€Qì‹–‹·jàUÏ&IÌVòŠK ­â:1³Í ä¿I!Dx'k­ú¦n(”:wŠif3 9îñHÊ©¶<+ Ê‘COi²Øc¬¶Î ÄêfÙÆ¡Ï¢Qb/UÊuf|I®gÖϳŸåhµäÌã±{šN,*ä†n:E÷XÛ9›cÅéê)ë+ Ô¼™éü7éÎ']w4CÏæÃРÁó7¦­M™vÅÒ°=•ù9>Ìæ #Jèm…4Ô—áÿêxWý°Ç²è,äWs<Ë®¡’“oÆ›,gàB¼täð—Æ”Ô4«m¬µÃÙè> «ÒÐ#3MiûÅd&Í])SvÓ {L7¶‰ h[¯0ãi8XZ‚Õî—|o”Áƒ8Ðl¢³Îë"ÛÞî‹dyŸ­Kp2æì…Jº(ëµ:IM“GMrà\cÍMÍÃøÐ¿=_`¶@ÇúVŽ”•´C9¤#gVLyl©(Ô ‚iš¸†6ÆÎÕ4vŽ£±õ0%¤§µ¬skòuékùhÎç ª½¬¸!EÖÓ[p6õ•ñÿN8˜r±k&QŠõ¹9¡¾/Ÿ(#‡RíÃÓ6®U” ì Õ&+ÛŠšÅií/’y> yJKL ¸±)r*pÐk·Õ’–ž¾v&pRWÜxüØ ûû ¡&b"kû¥Y³?FðQ˜óNL^’¯a²äÙJ#¬Ìt ©Ë£P¶èŽŽÔ"Å 6#“À; %¹ÂºkM¦…u,§21­wÃÙûî4Ü8€¸íK¥QRm)ÙjÔƒ@Žm 3z 5R%ŸÁ¸„«‰$[(ÆahËtelÁâ}82—¦Qòw)K<39pÕãat›$^Pòjºä`ÿÓ©œo z.Z=-2{€Ž·xÇÉò(™Á³ª/<:™LÓî¡óåøæ¾V˸ì7ÏTËçisÀBÝM÷ÙTÓåådR°?å0š«XxTMýÃ#SVž“ˆý42ü” 3sÉDàj¶U|ð Êg ÓÙ8ûé_Nº%¾ìçJ­0Æ"7í ²ß¬UV™Jùú$;ɈÅ3‰,oc«ãZʦ“n‚΃…X©¾ù­Ç Èdl.à…]ð[Iæ‚ û!¦³9œÈÉ •säâ-!¸±6£ü!ÃÔ÷ǤŸÉ`430ЇmcÎ ÂÏ5ªÄ/{¶bÒ!Ö”9&dÁ¥S¡0÷{0ï3ØÂRíä‹z<êÁG3”@À0”² úP? {mz/±GÄëϬ8b‰ñiIç,:c’â‡L²§ˆW„a<ÀDŽA*“£p4 íDðÄož2¤};=WH»?ŸÌ`ÀÀ1>ÖgÈ<^ZÆ“…•SOx6:;]ܪ,ÇÇS \E¤+ƒõ±ÍOúñu “æ:3uƳØv³SЭ ªÌ&‰™*7…õÔÌf*o%‹MÈ9CðßI¼’sqrD:ËÜÉÔá¾aÚ ùvßžäeý “ê*‘úQ̆;È„EnÚÀœÀ3õEH˾3j”á]FâÚÏqZž•7êÙ’ÕÎé‚ͧäŸþöè¡=óëtB«Å'N'N³m$Pɵ6ušäÐ2S£ãSQ®â£«tGÆ+ ©cÝ,¢JSLñ4Lx`èj3æ€õ¹È–¤ÉT»0Õìl6bÕm4õoˆI ÌÔ Æ4×a˜¤)šedvFâAp–1/ÁG ìX‘a=&ª•œ¤”2ÚúÁÅŒÍ2•Z–ÇÁÕ¨pÚLêþÀ“!ÎÑŽÂVë ÆRG~³ÄWÉ—õñĤ_Çífʬ»ïŽÖŧëXgÊ£Ý÷a4Õþ,²M~|G|xÉú#‚bR¯L†·Í®^ƒQ¯BX7çRYþ™¡*¹†§=•&:µgTëa@˜öK?ÍóŠá‰9hmÂöÚaîÐëºòPóþ9"­Õl€‰õ,3ËYÙÈO·Ù£ªQØßz‡d=wÕqÙ€mÖj´ÇîÕZ{¢å<º­á!%VÇ`N÷mð‰$çÛ£§‘*0ŸgÂCžW˜è´g¾NçÚšT8è $EjNàÀê@ã¡­,Gß=ýÞ¨7Lýäա0?Åæ\2oÁœZ„Ø?‡æ¯g³ªktpaCÙØÕ@¥}Aæná‘SŠ)HæùO¹†bz< {ÆY³@@˜¡¼Á=yŒ%ñM]ÃLAÙ„qxêÝ}%¢v@2> Ò¹vž¬¤§ä |-­vž&*·¸hGœmn,;e±ŠÞ–‘äÓíjSÿムç˜\P!¥J@h…ðOÚñŸ—HWâ·“2á{ ŠïØ$–èûY៕°~šS$åÕt>ù¬×eåŠŇ>é}0NFƒd:;QiBzú!]N‰Hú¬öÀËèjSd.h2s²Å1SG3ÜåfôhŸqt.E¤¡svbÄŒy.–‘)—d3^ “aþ©•Æ“}Ûæ¢é1mýŽÇ l5âéqñ$™rˆž©PHÃâdó¥ypL±.~TÀ„A•| òKÙd:×iÃYNJ›z‹†žç“~–™˜¥Á<ó»9â`cÎ"‡EÖHááW_Îò¦Uc‹ˆ¼œ=Õ`жbï›*Ý=)Ïc¼Z榓̚*&r8§ &¾—9õ…m‘÷"z8‘ZŒ²oÍu÷ú$6“Èœ‹ÚQk‘;ƨ޶G#V¤JµWãrå,G‘dg)OZ}Àû=ºrYÏ|HÆnx¼?a!ol_ôanê³ÙIf@ö#pñéXæN›R^r5’+¢bέ„î WA¥ïãzØíÊQo ,ÆQ¬Z@ÉÇʼö±Üjfs(í.q‰K®æ ;£doLqr ëò.PºÏXàúÀ%ü¦o4)¿¶ä¶™j\òˆR8ºQ’©˜ÓÄý¦ˆ¬ÁÞŠ.ËÝH±Ý\ô°Z5/N#3Ño¥&*×ó8…d•ÛQY&{ÕZüoáBæô‰5Ÿ®z»º3}»ú|ºô^õ{ þ±ñÅÄçäKGɆO¥à ¦‹Œ Ë q¯ü|å›ÈÓØt¯}Åþ¥†ë¦ž¼oZþ}1‚øõ_éK—¢;Ô£»Èón7ÿA.@É[É—]†ÝºP€Ê¿*x>ËYŽ¿ÏÜ?ïÿf Ý¥öÛñdÖÕAûÞÁøÃÚGþ;æ/þ³‹/ÏcxÏÿêå¢3 Ñ­ ï@ºsá3F¿9/üõœ§&sÍMæà’§ ÝËõúÍjEoUk•¦Þ®´ô^½ÙÒÊÛû•fKqGêν„Ê–!ñjž@4ÑBÖú“¤ˆA×s¶™ép £õSÓûij6ÛµúF©Ö„fPÙ½¥›•Æ­JšÍj}R+{:#~™|º³x*1‹bI1ª¿•Õ•ýtüQ à ^ñFt}#ÁŸ*È¿ {àâg†Î/þ} å‹?éUÀú7”^lTPHPphpphp3php4php5php7phpsphptphtml embedding.php^(#!.*[^-]php[0-9]?|<\?php)\b-xÚÝRMKÃ@̦¶‚¨AÁ‹ˆEÚB¢ö(j~ˆÑ°Mžíb² ÉúãÍ&ûêfYÑBOË$̼yìÈép¨øŠòœGe<º½qú°xîÐC~÷ÌÑã*)ŽZÕâýµZ Z ”÷ ÖK‡F° ®þs®ø! &»/VÅ×ã´ù¼|~ ^fað4Å}®5EM˹_AÜ2d HHü,÷›”Þ)䤿y:[Ûo¹åzaÏðr ¨”æñ» BÛâ*¯ËPé-Í¡&a5ÿÌ>þÏìÀ“6–"_胮D–z>RÆÁ£oJ¯©•õ.ÖÈ­}UóidZ—–a»·³ bôÑ_ÇÐâ•8RÜ Îøßqþ‚íœMúûœ¨ï9jzsÄ7žÊŸ%Pascalpaspdpr source.pascal xÚÕ]ã4°í‡€'HèÄ6骹òõU<°OûzÒå®r’IkÖµs¶³ÝÂðßoœÆmškÚjuwÒE±gìÌx¾mç~oý|\ÃGL*9]0.§ãqo÷ÙCóƒ§éwÓüèiÝ4?yš³nšŸ=ͽnš_<Í{5|¿†Óêû¸5ûÁ櫱LÛqkÚ j²~XÃû-ÃÕ0U‹H .!ÊT™eÌÌ£‚™”‰HIè5XûMûÁw›™Á¾é}"ŒhȰKuW_¶d$B¥×§èî}ãpCÔoe_┩-™åJFä\ò õÂ×bO×ïÝ>ùâÿß vjh¬ær½(•…¬QMß6Ø'ýÛ£ú‡õ«…ƒÌš*îTWG~±‡‡Jª2+3ÍR :b.6zŸ7Ô~ÜP?8?÷«]ÕŠD©b¾«ÎŽ[Îß ãZ‹õ¸KüöæÐü‰w—*uÚtP¿wìé7꫽}&Ç}ü¨I}YÛ'Á„ÿ°Ä(QZ@B¬s;2!É̵©ƒD¦5[!3ô.YòSâ˜q‰ —£Ç”êh#2XErÝë2µJc[”ß`¦Ü ‚8Èß·)–@¡´† ¥€ds¦1ç$‚bÅÿ· Ýz V˜ÓšÔ–Lg8SV!Ï‘/ ®Lפ4t “¶\ÎAsÊV¬Â¾]K–³Ö˜.InP° žh¦W¸P™k%©"Ù‚: Í$(•E•üä=•£’¤–*@3goõN+[¹S/9aK¯I‰B-±Ðü†‘; ­fš-$V»rˆ¥í <]3§‰%ižsÂ4¤J;P³ ÏÈl‡P˜*f3ç ‚Ôæ‚šÆ*¬ä*KFÙUX’7¨³dKiÀà %P¯ñ†Ã’:M#p9waXr;Ç[¥Ã0N|î}^ÃkX-I!Ú&%U¬xµ^Ÿ÷vÒ/wÅè@Ö¦•ܪ±¹â%µˆúpq 'qN~Í0˜üáx·™èÃï3& ½Zßø3,‹¼¬ÈyV9»} Z•äá×›Ni6ƒhÍÓât ätnW‘Ë”nÑ[ÇŒîâ/ó³ýv¶î«}Öµ˜Û¼×2©ØšŒƒ[ü;|:ýÊFùŸ£ËgÃÀŸ]ÄѤBÜT­çÂ0ÿ¢Ð_à(œÔ“” W(ðÉ–”©ø/1GÚ¯®Ü„›¿ 'Û¤ü¢}²ÈrA埾š•Ÿú3âùÓ‡±u‚‚Ñh{“éòàhÏ‘B5bÁPÃæ® €eîl9œ/']8º…Ýg9¿KæìžŒ›Ûe_ïý­KþîÙ¿¹=þ÷v¤Ÿõîv5žtéÎí#ÜÛ»þù[ÔÀÿÂõ^î¸ÿâPerlplpmpodtPL source.perl ^#!.*\bperl\bxÚå\ûÓFOôýæ€RIÀr‚ (-äÑð(¥åÑ&)¤x#ÛGYr´2N.â~¾_î¸åþ¹›•´kI^­åàFŸD+Û£ÙùÎÌîì;?æ]ûé´j˜F¡ªjFáêµ±ð% ¹ÆhÆýô g4!!✎HˆæÑQ ÑuFtLBtƒýMBt“—}ψNHˆn1¢$D?0¢%D?2¢â­ÂÕôq<£yn•O$DÜ*ŸJˆxvŸIˆ¸U>—q«|!!âVùRBÄ­ò•„ˆ[åk ·Ê7"n•“ñVáø{<£ëÜ*§$DÜ*§%DÜ*g$D\¦o%DÜ*g%DÜ*ßIˆ¸UÎIˆ¸UÎKˆ¸U&%DÜ*â­ÂÁMÅ3ºÁ­2-!âV™‘q«\”q«\’qÁS"nEBÄ­’–q«ÌJˆ¸Uæ$DÜ*—ã­ÂåÎÄ3ºÉ­’•q«\‘q«\•q«\“q«ÌKˆ8ºë"n•"n•›"n•ï%DÜ*·â­ÂEú!žÑ÷Ü*?Jˆ¸UnKˆ¸UîHˆ¸U$DÜ*‹"n•% WÁ²„ˆ[å' ·ÊŠ„ˆ[ån¼Uxn÷âÝâV¹ψKô ž† ôs$*z4&6.Š–Z¤ق|©cEÄšac«fê*ýŽ¿ùK$f¶¼¹ƒí@F"U°˜\œÕ¯~ú•è]Ý®ØMÒß"Á§•TœÅc™Òjª…–'2¥ùÄâlžú)kÛ\Û±_Ÿùéqþ+±UËf?ÿ1>&%µÜKÛªÅhþˆÐèš %³ZÅç³ê§¬©a-â©!O`Dë~zFDBÎÞøÓO?k}ƒÚ‘=÷Ó³b2!ë~úQøjkF²á§§ZI„,ÿ+Á³,#z)V‚Àü윟²îÈkÕÒÔ¢ŽÙïÈOó~:ñeߌ٢n–v²e³T§U[3l [úXà=ö®{±îÖæb©nsªIàÖ’ªÕ’]÷Ø—ñ–fhî#“‚æ81&¸Æì^¬g¥ìZiDfѧœˆaJ.±-ͨ¸ŒGÞdå—Ôk5Ó²³[”CPAãçvÆÄâæ†MÜ¿‡„8waؤ’*W6q3RqSÃ&î!!΄ÅUr›ˆ J¡”C Zȧ‡Mþ{!!XwAQ”®hU“ìågÓé´²¼¨ 2‡Ö@•»ƒ.£i€ô¥óÎLº‰éHD¢ñˆZ|á-\Á{5Z‘Õ4‡*²Îµp$æÍ¼ß0­2äbØ–©û™fÌWɄ走ˆ‘ø×RË *a@ù¶U|rx\È Ñþ° ~ÿ<’Í9(}倛¥AáÙb!/ð'4QzP^F²I !m™VUµ³¡v] ²£Bdo… Å|ÿg$ûtBÄÂwt¸ \æ‘ì/&À,,G‡ª<ÆÁýëNS\WqCœ‹dI†˜ÀW:.ìÖM·ž¡Iu¯{±NB¹Bùh”€H Ý]èYÐþ¬Z‚þSÖëáz2 f?+Ç[­Þ2ÖµªFÙD0ëdÞB×mä1A¶!dŸÙ<â­£m !h塉4÷­" ×t¨îÛ*r/6õ£hô¥Y[6§ a3ö“±^£¸œ? ñeŸb´Õ;1>‹²T„ÞÅÚÜ#Ù²ÈÊ ÔÆÆFûŠ)èÍãlŒŠ7šïk | æÝ.Ó‰‚‹ ÂÜLŒd‚Íx°Ü³Ùb4 7{ÁÀƒŠï|á<Ä0É]dùb`‘åË_¦ì Šz—÷WQ–7¤~„÷ll”qùªa»)\ɲò–L¢B(²ïÌp=ú-¯G‡g\k^“BüM¹ ^:hÄ–¡+J®Ä‘–$HÇß®b<,RVUU±­fu¬–oÆV‹$Ö[?j@h°Úˆ4ÛªBV(Èv&n¼Ió‡å–Ú: ýã Lf¹Lå‰Ò~¤Á¯±A‰Bó±6ÌT3îHB×.%òJp›Îí•KhGqçZÐt¥!2©‰Ý~J׺)=4ñŸ M|¡Z0m×,ÛC¼/â='ÃÛ~䓃]$ؿڀŠÂæ‰mˆ3Ùm»ªgqµˆË,à´ ä3É›¿¬?y<Ó˦pdt n¸ýÇrv[¸l–²e³^Ôq³SùVEžÅù'ƒzÚk«¦ã\M£¤%¶@ëL-•I¬¥{kk££%¶à10¾ jéí”ćë6]y¾²voõÑï룣+ÖHÿO ¶‹˜u Â+ÙM^òÖþ¡’Ç–™~£SaZzK¼Ÿ»‰®¿ûj;D˜›P˜›j£MD–|–/Ò0yÜÎôÄ`ô!íûö¡vb0¡öxß:hN 4hu7ÂßÄ`Âß!· dÉÙŽG*¥þ…°¡G3¾Øæõ"t­m­´3à@Ý‘˜ýŠÒƒêŒžm£Œ÷·ÚsÍ´‹„CÜEè¹nÚÕ¦I\ ÓSõ¸ÂˆãµÊïÛ0d_£¦ :ÍîîvmåA‡0‘Qp×Tvwï]D¤ÈyËe2]].Óetô:-ô4¯ûžlÑþÔ0匬àÈ× ÎËâíà9ÑÝ'j»°œ÷”¤Ð$ò¶WÃäm¤ÕôèÍ·Á;r“§ÓíñŽØô©xCkk%iu××€¶«H'å6•)à˜"i…Œ|Å;êUïˆUA“rÄ£V€¥õULù=ìVÓÂ}Ù,q1=2|Åt=&XÅÕÆÃîÞî!°èîóR`í·pG¡Û›‹MÕ,³b©ÕŒwÀŠôHöa¦W¸è5–³¥ÙEWLgâWL JÃ-1ßVâÃl¿aÃûhÆ[Ë9v":Þ]‰¬¥mÓŠô »9tÆÎ¶t×øú[w¤žËz·›(‹ÈìLØ££¹­¶‘nL éа.Ÿí ÃyBÎÏci‡î€œ°ÇCÒÝù8GdªºãqBMªfõ~ÐÅJ%.ëcâ¬s}ÈúoB¾ }Èù¸´Ò‡¬OùöcçÙ!¾lkqpOó¾ljþ0Ä—TDæZ¾k¾“øè"”_Ê¿ëûôŒ³Éû°ÍúÍÁ­‰¯$¢†~êF†G{‘a»mìÉ‘çßNç#Ï÷ù ‰ ÂÉ”¥drl$Õh‡|“®›loÁôÛ)ô¥$Ãcdè^ÃÚw¡ygM@K/¶ÃÑ_À6ñ—(=K ™{ñX…²‡™—k[ XçeSQ¦ÓÙÙd,·ØÉíj±ÓB·êºž¡‡ÑzMѸíšßq!½×Ü7Œzµˆ­ Ñ*†0Üup`ißøÏäïH„Ø­¶‡’Eî/ô§»1n·**l›‹œkÎxsÆ–j[Øée‡ "”í]‹¶ÜØè—AXö+AFÊòÂt) $aÛJÖUn!ÔºŠÍåAˆâF0>E';‹®Î]й” «Bç[¡4 ÚéeÚžëç!ŠO9WÔ˜£Ü–—ÒÑE˜¼ðFò F~~øÒòÂâÛeìÞ¤£K¼"ÜŠ08íVЖ—›,)VEù=×i]#®eg—Óì„æß¤gø%*¸`½´>IÞX¬)Ú 2šÇ.‰©€ú¼…ΚݔÊѿٲï¥rôo–ì–TŽþÍŽý'Ç^ýã¶TŽþùÇ©ýó©ýóÅ÷#õzdI.Hÿ=^])? # fill align [ +-]? # sign \#? # alternate form # technically, octal and hexadecimal integers are also supported as 'width', but rarely used \d* # width ,? # thousands separator (?:\.\d+)? # precision [bcdeEfFgGnosxX%]? # type ) identifier(\b[[:alpha:]_]{{identifier_continue}}*\bidentifier_continue [[:alnum:]_] illegal_namesœ(?:and|as|assert|break|class|continue|def|del|elif|else|except|finally|for|from|global|if|import|in|is|lambda|not|or|pass|raise|return|try|while|with|yield)path%({{identifier}} *\. *)*{{identifier}} sql_indicator>\s*(?:SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|WITH)\b 'xÚí= {ܶ•#ÉNb5ÍÕl›³I¶5”<;i›Vµ¬8‰œxë8^I¬åÌp$Æ#rBÎXR 7{·{w¶Ûí±ÉÞW›=›Þ÷ñ}û«ö$@@Rw¤Ìg‹罇÷Þ{®_–¢Ï}ñsÌö|oÁn÷œ ê¬v' ]xqü±’øÉ€?AáòÁ?Fá•ðŽß¼V {vÏYv¼^˜ð3”žñs <ãç`>øÇ)ü-ùà?DáoÍÿa [ü¼S€ovì0t8µ2‚1m Á˜Þcc²ßnc"¿7~Þ%‚ùËRÕÞ?Ǹ–Óô»çÕvßköÀxªM»Ó©®v·ë :åâ5:WeäaÒ%ÔíÀuÂªíµª¡Ãsw·š¼ß {ë-r÷dA²êx_$«‘{% Ùë9­ªg/;Iñ¿?@ß «Xõ¼¿_IœÃH@??@ÛÕˆájàt;v“Øp‚s_~¦™ûóã0= áÆ8~°l÷z+\ózöjÂØƒ9W”›Úeåºvõ¿qj{XiqýA‰M IUÎ#¹Q˜LåÜ(LÑ#¹QX¨•¼HDá$Ëd|ÎdÜQF\w¹ë½j;ð—%ÿ9ªŒj<Ç踌±Y1‚1&-#SㄌEÜIe\q½Žë9U°ïDŠcJ×w¡ªÚÍ&¸ZÍeB×2A™à*}ðš³¶â­ª,ö¥VâxNÆÌ %QEÓ÷ÀÏûvOèòȱŽCPõHÏÎØùÔ*Rð§ùa¥q/û-·í ÿ©)ŽEƒ~Bµ^íÛL-j>ª}ÐD§Úqìv‚øÑ‚ˆLÆDdÖ0%µH*Ä„¿KÁ%‚Ž›ˆWû>n[~¿Ñqª¤ƒ•`ž,ŠÉD›–âT6&+ôTaTVêLaT¦Ò' £²hsº0*‹@OFe=Þ§ £~„¢>S´Z™–f‹b2%)ŠÉtôlQL¦¢çŠb2 -ŠùÅüÕ¢˜¥˜Ÿ(Šù1ŠyNêwé1×~>?s¯óÊôB$VÒ…HÌ8­³Ë‹˜I^ʯ<ÆÝåü8Œ¹+ùqo/æÇaŽòR~æ"ŸÌÜãSùq˜[¼œ‡9Ä\W á÷t‹W/ŠÉLv>G<1Y¡W £²R £2ƒüõ¨Ì.í¨Ì<…Q™•6 £2cm­V¦%§(&SR»(&ÓÑbQL¦¢¥¢˜LCnQLæÔ¯Åd®}­(&sðNŽ a&®½œ‡¹——£u 8¬ ¿+©[‰ç«˜]ùõÀ óã°rzùq˜å÷óã0›¿ž‡YûJ~fç«ùq˜…¯åÇa¶ýZü³=²;½*'&}#~Òìú²ízô[?oeßÂ@;èѯoÆOšæ•'(ܧã'lBÎ_ai׆\¼©8’6¦Ð¯ÇOšig™ ðñ“&Ï! î.zÈoJœÉi ÷[ñ“æo}·‰ ¡étIz‹Bþvü¼[‚dy0 ø;ñó½`o­ë0 ß•§òé׿?éœMáÓï??ïeß{ ›×«’dí’ßi9…ý¬¤N ˈý~ü¤)ÍŒyŠö’B4 ðãç° È8ø£øIêÊ  üÇ29–ħ"Ù—¼§ *)©†]§éÚFîs’ Pno-‚%õFÿL"ÊRURØ?Ÿ4ä„M» 4—l¦¸¿éÅ0}Ïmú-G€ýKIfnN‚|^²õôD…ü‚ä=l6§ñ@* ÷E‰AÕ¬…ý+I‹©ä?üRü¤YDmÒŸ"üµd=F«ýrü¼CÌH~E  ŠŒ;ýªä^©xð5),:ž¸Mb èo$ ·ÓqíŽô†¤B¨Úõ»ðMɸâ<äölFìo¥:–ÓôîïÔpĨqSBáþ^Šhqªœ~ý’×&)r ñ’"c·MþI2q.ËMAþYÒP*YMÿEjö:ör£eÓoÿU"}«¨ü“\ªc{‹}{Ñ©^‡ØeÀ’Aþ»LRΊSÀ¯KÑ8Xu½Ðm9±«Q´oÄÏû´h˜9yKªV¯ÿ?ïäáÒíèÆÏƒ ,L¾ü/)L,Û‹`ÿ̧ÿo%,U§û?ñóƒMz.ÿ+YËèS€oJȼͿ-y£²Yø–dð^¹ÁÑÿ¶Ä@ª›ó)‰¹w õ])jSûá{’£¥ëêû’ŠU‰ ûƒøù€6YQŒ©G=U û##u~ÜF1~,)]jù"…®ËKA~*QXq{KÕ$,þLª6òuÃo­Q€ŸK‘cÍu:-†þ‹øùËø9 U„»&´9µîZoÉ÷(à˜1….ê!úGÝ¢ÔèœhŠâ@-tMŽœãµb’‰Ø-äþvIj„ç•‹ÆJN‡”œÎÓß> £Q7Ò`á(䘢¿Œ*IáØÞY ;nÓ¡T†TÚø|IýàŸŒóßš÷ÿ£yÿ†æýß”LŸA­Å± Pƒ—J'•¡*ï-ž<ŒÔ׳ê Y¡qc[íNàwjmä‘ò\9À1È—s@i_S²¡¹Þuˆ~­ZÜñ©-»!Õ¤¥ýþÔäŒYªÊ£šLJMöŠ_Ú ÉÌ(ŇÔLGÕõViŠïñL¾ÅUÖa‡œu|Ðdv˜e·”4rüTá~yõT¼^ P_—e6Þ–8¸O]°ÛÞ4“=–É6T]Ë%óN!Ó}PÍûÊ’Ûq6ý£™ì ååbünžq2Ôß4G3±•Ôp¥¸&øSefºÞ˜«woœ»¹0=áÇyøc¢Þ°”®Ás7œn9°óVòXƒë-ÁrHÐR \êœø=%³R«Ž2%5Ü¥ôÌwqdýþY)w[øpºyÒuz«R9¬[5‘S9\‡D§šÛÍ-_EÓòy>¤ž|ÒøAÏÅñB}Ç瘹3H;> …(»?oòüÒ†¹b0ÅòDešÙãÀ Ä}Ò…tt¤Wcƒí¨ÂªiþdRr?„ޏjI~8ÆLú¢§o2ÈPž¨×ÊÖÄF†ÌÔŸ\_#¥ [ë:·pAç’¥v²1Ñ—ýÔµ*œØÔ„OaC›N½¢+3S`Põ˜•5Ãè h¬ê…ÀѸÌr¾){0ÇJ.NÇ×p2¤û«ØÄâ ¨jêp*¶_—ùú³=ÏïÙÒˆM3ä«ÉRTSžAÝû5…'EÞ¢B{ÒeZNÛõÜH™"70Ô¨Çhüç8‘k3õpbCn øõŠURÙ'ÏÁ(Þ}OÐæ³›Ê–•6I©ô?Ì䈵b—d3“Û<­`7qä•ûJ¼‹Æ¹ µ856e³†0_£ð…ƒJ~nRÊÇ Ñ)M>GÛúi¥³ö°fl©J{ÝÜ’5–m$9;}sÛûëhB„q73Kתô­™Êèè(ÏnŸ“ÌÝ-:5<›Y‹²ošæxÒh å[]E¾Oê^Aˆ™ ?c½Cä¸W¶ŽQ©A‰*0£Iâ¼&Ì]¯à/5ïÿ‚7 æwQ&¬|ª²„ë—a`KxR9€n|ö9¦ë… |û7'ç¢' Àr2ƒõR£^R7:oÜÐ[ ü~×0îLÐKüÅ”ŠHn<‚šS©½~·³ùñl·¦X]˜º~Gcðbuñµ›Vª€‘9;çe}ÓàE'µ°^‡¹'c¯jJY—¼è÷—2?*´dö…\~4ÏOfÏbÞFXÀˆ½&r¢4 ¶3©O®Ï/j$ ýÜÐïlHYs /ßj9­TÝ‘92wuzM!uÍ1O¬Ë ˆÜÏjÀ´E£¢¥*^F$´Aës9].)˜[”;œ°ÎYÕyÚÊ LóMsõ•Z}®>??ɾÚY«hW›ï—4æ{T`2ž'äGWýr¾C¢¬àê©|½aaN㩦Ä!”Jë]Òó[F.+b#¦/«›.ž—Òj«,¯*«?Y ‚}Óîwzâ Bg·%z˜;fÍg€¿ªx÷z)gÍejŽ™NäµÉ$Y˜¡ÈQ¹¬‰,E¦:-´8=Ÿí_ÍREºWÍå&ÍEXJ5Ge°Â¶v:âpIç—•l5QYþЉ'~zAÒži†áÏK¦Ï`.›NfVèodY\ÄØ¤¡R8àÔü˺Ü5ÕìÅ«üºvo)+‘ó5VYS¶×BvˆðRæ ‡c_C$ï‹â•h‚¸ÿ;Èé¸mø:(š EЕ€˜½† Ex"Zìø »ƒ,b¹rC­ÅCà” »˜x`»@'j—P/XCd¦á¥;ˆ,Ïᦣ©I¤&T°m¤Ú4ÚµÕ›¶I{jšÿGi†qWÙÝʳi‚'Iº I&U0 ?¨q_C] å0bx2ïV'³ ‚½4™È¡›NÈÁÐ`FÀÈX¦±¬p¹[ŠDö¼S~‘~ð긴™²ÀU“[cYú¾ç¬B¯Oòÿ^wª¢ÊÑÌßj$ú®®%ÐM<åQ¥zÈÉ/Œs·¢Ì€•ˆdè|³¼æEÔŠ®9³Jšòÿn+4#–)8-;N%ÛgŒ 8Ì“?(?:´ÉÒN)î3)ÿ/å^GÀé&kæßoµ|YóÐf¨Ì3”,C¯‘Í$Xed,6aqb:Y{òV}þæ¼µI+ßÔèë§‹ÞÞ…³ù2Ágmx¾u.{tP+)u0—SVi#ª*(¦±¢¤ƒÁÌ6±´+°y§œWå1·uÝt¡qëf&VN”4%¿Á—œ@ûŠeL©–$š`· öé„©ù É3,ãü„¼ƒÓè*{Ö„kÍŠN2–XïŠÎá$‚ã! ÚbxT&ÆÈªëéê:çzUtƒG¹¸ÄâèŠ ¾[®p•’ØÈéPU¬“ûëœõ1™mãR‰Í˜,;Ž™s^,šES é¡‘n™6ùP3‡±¤\Ê#ÐÈŠ : ¿¥ŽQtûÆãÇnîÀ$¶J‚¡ ¶¸˜Ïmn1ƒÅÈ)}^ÜÓW`xñ¶æýŸ*ã*É7mWžCþã)È%s4œÄ/£Íµhka¼˜DÓ‰¢Õ=::šsõa\F‘¨[d³El»€² (I78­­¨¶‰\RåÚk ­¸/n£¼v¼Y«Áòêg+<—Zuo!ù}iöÜìÓ—ÑÙó—f/^FW.wyö"zéìåç,~fI§ŸÓ‚Pš\„ùé-P†ª%Ù~oW·l*CxZOˆ†k¢l)cüRÔ\?»µ5“åÁÛ×ÐUÈùïÐŽ+d‡ß©Àuf#ë¹wW:p=k 2´éë³û³è!í·©jà¬Èà†k`;ÀkZµºãyµ.Gfk?û= vL@C!»ž4Õ“¦†XvxûZ¦o6Àw¸`9ÇL9¥<¸ÃRíi}Có¾ø*§‚†v™˜[cük"u1H9±5X¼+¹ÏL|Ët`‡´k±‡|ýŠÈк}ý³Ûª}V#ÆàK"ƒë®‘}¬yUüSykãåUš]™ØRdôÇ7·w·[*q«òÝÑ1•ù&rÆÇÇ·o"gϲ¡TƒR½cg¤4òØòîÔŒTØÆÄ®-U0±ÛÜeðefùÅ®Lì6 Dt3Rüi!»cF*£f².9ƒÿŸ üsGEçñå=(}yŸª0¡=KÂWÃm'ÅŒ›ŠQÜÛ¦+K¸øŠRSoC“âFŒú“ïuS$˜/» kžmhÁ\no¦,kFyÞMr2GZ@­¹T”Îpô·ÌÉ Þ“ˆÖ ÖTBi®£è,aŒ^˜àËè‡3…HpAÞŸ7©æaµ01F–@cư"ÐIT2…ñµUè‘~a¶£«àÔ•áCðïÐé"è6ÑirZ'”N÷`¸Ñè÷ô. šç³/ §ÿšã]p»ð¶ßn;zœ£u!ðq_­§}Ï‹¸¬œnø4"è¢Óî‡ä:=k;pÍz×ÝÀ'-:î5»Š/ØÆð_çýÞ¿ïµÐ™Ž’{‹|s¡³xÜô»˜(0s6<ýŒ@a~°6~€ÑÏFǃžõZô²òû*ú„³†Îùþµ~=ï, :o/;ŠJ¨`ðhtœ¨D/\B/\w\aè‚sÑ€f,qL$tÜqÁ.â;¬ò¥žíµì ….‘.X-¢géaxyXqÞdØï’üÈ¥6-3³+!Xü›’Å/,DÇ., pd7Bd{k:²ø6]5\á×ñi2¨¹DçÖ‚‡,ù-Ô\虜›þr/ÛÂ…öÔrñÿëÐh#ǃ¾"ˆç ºàÈYušäGÃÃЊÙG0¶%ØÃ‡¢snC´d‡ä <—Ð’ÓéÂUä¶ëuûøô[ÀÆ'àºäŒ`ì²ßˆŽ×u1åáCÇClT!‚^:ü_EË —ç¬öß„ÿ]€ „º`ÚÝ;X7À=·Þc[ÄâöÊBTbà´úM|®.xd Ý~àÛ  fâ«a,Dy=Ž•n3ÖÙð¡°¿Œ :3\™¨z½n!zÍíò•ÿˆTùɉÝ}Pš[°ú¿\’ª¿eRPÃ÷;¨űXºöù ŸQŒMwák³P‡!|ñkŽbbõcCÈ ¡eP®»Î ò¯@,‰ˆaÉAr  ßC$Ç®µJ@xÁß§²úBÂÒ¬>ì¬BŒïqê·÷K=NR®|½¡ªÏs¨dµ(O£¿Q´nŠû2:]w˜f^â¢Àð‘ár¹R®WÊÆk>ëVÙš)•ã!nÚpÀ«Í”¹ÏXÙÆŽì›—±3Äq ºv«Œûàå× J‡˜FU¢ÑqÚ½ªÝz¥öð×eékˆW`Dn¯ŒS07YŸáâ÷•zkF{{¿â¶zKä‹û’Ȅۂ¨±jKs9Ì·ÜÒG¹½€2”àC °0‚Ýl9³í3‹Ïº~öW?yd¾ðM-r~H¦ 敦x½;âtßæìÓ+­ÆSÏ.¯}ê¹³Ýç/µ_{ù•þ•_jb.Qu®µüÜÙç/½’>5ûn™¡ô0âFýªßL.•)ËÄ’«°iwÍJ~É`ÌBà‰¤çzÞ÷pߺgl|~úl§ãvC7”ß……–Óè/.,pñæ>™ÛD¤¾ò7º°¤^»ñøMœƒY±ŠQ‘ƒ»|§á!ôeŸ\9(AêO$“MÍÀ*Ûœ§§ždŒ ¯BJßa½¾\®²¨;Kym35þ€A㦆NTˆ¹©9Ä·3ÓOfŸÆ{Wn]ÐöµR¿aUHîø¦e)|V]$JCŸîVÓ ¾~åè)œƒí,w{kÕTùrñV¾bûUøÂ Jì±\Äè ¤¹LõîRÞ^ƈXõÑ}šÐOí£> ¸ËA³MâžÜeRçg¢’sܳUS ¿bâ\wžäzï49Œ'ëáw=en1¯¯Ö—nûªÃró˜êÀÀNãÍG3qaÇR{2åLlÙÙy¯É´É¡ÓH­8sƾM¦ßpš¾šþh¤Ü>üú¡è×óõsvõµÓÕ—Ëó“ܵrZM?ž)o<ôªøHµáöªzÅç'õøc)™»jnRÊk]$ê&µ¾ yÿ¦æ½pþúaVÑí=;¾>P2¸ê=i>£yÿûš÷ßÖ¼ÿ…æýw4ïÿ•gu‘aÒgÅvù9ÚíaÓcdˆA Œ‚Ò”ûÍû¯hÞÿ3Ïgº[©žóäoÖÍÕN¿¿¤,&ÕMNÍH÷ ëB&ùÉ$úÜór§ÅD,„>hà¨Ý,ÂZ³°\»ººþK£þ?Ö¼ÿºÁÔ…äÅ&7ÉçÖ„V8‘P×h êCr˜hg„qܸ‘ݳú+µ•Ü”ç•UQªÂØÐ ð%k¶=ÔoÒß2¯<6^÷#À+¯‰M÷k¹ æòºûJ+„ÿŸÃ#œš™*'7ØZ|¨ïJ[ÀÉ–•Ë#er‹­%%§’Kkc¸) º:¯Í”çNžš¾J±0ÙNrfq"«,f²ød–”hÓ$ÛÆÊ=§¹-(ž ;V&ý¡2Ì»”¡E¶[äZ†¿±ZÇ2„ úå8Åê´ÊvX'i²ñceœç ¦³VÆV˜‰ÖDš šU;–b³³ä÷C` ,³e#‘*êµzKÔ°„kМšç‡8W…³t8;g!£™‚|ï0vϸ(©[ìG©¹ Ù4ôÌ«±ÜEÊ}ñMߪÐÎIÔ`“ô7ð½HWë7GÇ¡§ycî*<'8¯SAZ—}PåªøcºÕtåzõTövÕ‡•%N æ(zשæZ´fºCë~OÑMÈÛ˜%¤VÂrV{=5øAS‹"ŒáÎ'•ˆob' DzÑÛ³*–RRžÁ/+Þ}OçS9o§M­@K×¥É 8z9*S{W¸y‰´úê3º61%’¶‚_Å]s>FÑáæ¸"}D'öÅ|·àÝTEºÝ*N¢tâT´–2|x5Äÿ-[Ì÷„Dæc$*•ŠJ—­çûx"ºMÍ]À¦ß`îÅ›•÷›äù&c¸[,í+¡?5ÊÚa±ÛåXâ²6©Þoºýû¨™zïošÓ|›·¶.{¤|ÔäÊ-Åú®IÎ{¡ñÛÊvrB^󘞎 æ:pŠÜsrר¨É 2gšÉƯ8ÖÕÕ¸P°þæ¿Qs)ü­º¢*¹#ü}|ØZ¯­\IoiDd+éUWàª=ftPeÜ6§í#&VÜ6¤[:®§ðq®þÈÂíœËÒ1¬–¦©¢¶ùöÙjn O3–íÉ.ùxî’¹-Qcf‘ó Ð:lÉFÝO+‚U²ÐmºÚÞž¿¨ºKYsåÂèwÜÞ‘ØlètÚЫ «­ÏúÕVtžkÜJPµb&/c·òÖëV¥6a®{3™­BÍh,q'ÖŽ/hõœŒ¹m¹ú«†ž³š5]øX©hEÄØT1‡RNv8[âfLJtsU8Õ øQU¦Å_WÙi|ÂÞaôq4fåØQ©#®›|þ®Ña Î?hÞÿO€›j%Ã+çF®Ô…Ç*ý>^RyÀà›b˜$Më0âÑ$:ŠÀ ’˜4‡dÁ>^Ñ>3sösÇj«>s>Yަžt&hiÂ'„ñF÷0RP¾_I㥠sú‹Æžy·FÐi‚÷'ã±35w£åîºÚ¨§È¦n‡?ntnÝbÒi+îdáh.^I æºäºE.G Í>Й¦hè =·:ÊE¸y[ÑÚέ‹c­W~¸d&B›ö³4ºá  ІN‘yÂ>^xX¦;“ñ2|ÏKõç,¢®’@²á¦@í$m qÓr¯Óí=`G`Vðw'\rÛ=„ß-÷;$á⯠ zömé;pïÉ*ã Óžízqa»¸Ô«.á)KE¹.8À%“¢‚¸ì€Ä¥ä5.ïü 1 æ! L1c ~•L]±ËÉnm¢\¶‹Ëv1¢ËÊtã2]\¦‹Ët¦‹Ëtã2]\¦KËtY™xW øK©øÛy-:h±‡ ÕÁAÔ³ÜEþgH׎fJaTC¶]E¦dïÞU¿{¾‡·V°­5¦×_n8C,W¢ÙÈLÏúxoÞØÑóËv ˆçÄÅý?ÑÖ—l!ÄÛ~¢½NF6þp%‘(X¥%ÂËxwÙˆEöT,,adO—¸ƒŠ˜ÙR†·yáÝYŒr;Äi«¸ÊzqMU°½Œ“Dã˜g²å‹ììÂÆJþ²ÙŸ*·éžN2EŽOá(Gk³à[¶ƒ ²ŽxŸ"<£­KðÝŸ?£m¡ð„'d{ÀâïBî;¼5ŽlŸÄ 㕸‹W^¶=è¹âir¼W!€dgįýiÓ¿©ŽI¶°Ý&ÖÞć³¥x>t°B~Y`»áˆ£G›äšKNó¢ßDEöå6¯A'n1hÀ”Yˆ’_ R°˜xû/‘‰ü¶Äá!´ZNØ ÜnìÀÀ˜é*Ú æôÈ’ŠX˜ 2Á i, eÍ ‡­…ý~H6À#J(Öç|@ãÄ~9ÚÀ†KÔGö¿µü&Žo}ðÓ„ûèc¿üh9ÊF㚃*!ÛñÁöbŒ@¹ËGËѾ@ZYS Na¼ •x1dÁí~§"Œ‡èÆÈk+ì=dá9[I£NþAÍ4$.÷ü¡n€Ûo¨ÀŽظŒD\†ÐA°/=–±×-;8(§±:X@_ÆsƒL}?o»÷`Ò1‚l_¤. U 6’M Vž„úM%ü"rg¤°hÙƒ¸änÛ?È\6YÂT .ó;š÷¿«yÿÛš÷ohÞ]ƒÿï„Ý=wq†áZ•ãàöK•s–ÜÓeùz²oì8^6UÃ-][O•uèÁ E[/Cɧ)fIðQt•Üý¼;%kea¦¾dMÊ{l´Â*äØl9~‘øõgpžÓGdÇE~òU5‘«ªøMÚJš43O ò´6^=wJâFNÊC­x‚d듌ÒTmòÎQ…`Šjc7±yÄf4yB0•É\¦ 9²låX>Vb7–÷¥d$UqbÞšÐn‘…åØDù>“Ù— Ó‚tZYU“ßÁoÎ\½ZŸœŸ‘¾ðW,yÝRJ´x`’Ugê3qhþÂwÇLu%–Ÿ¨¡%VôARr+´1cÍ Åk“–Ö¡¤¡-PRÜ¡ÍPðƒz;Ã|GÏÓ›çCr'=¥2¢Ï ë©Ýä&¬-÷bBîóOVåhlx'ëî~¹îæNT?6Í8nA»šŒþŽåjYsö!Ë…›Åˆ|.çê-ú£é• Z.EõÉa¥µ‚“§t‹t¸ ¢ìÈTt“òÉú4:ÿëÓðã$:…ê#õéÌC%“$bš2­ûú$ªWQ}‚~‰E>ŠŽ “PÄ)tÕª_EŸÎ>½’‹–.ˆ;=ޤHɺ»hÁâ,£鎿è6UÚ§˜OÊcò H-îj±äÏö­^û¸üeöJ{ãîwžì·ørÇXèøŒ¦8ëukkYÇ]™—ÜÔ²µñQ‚ãò °UÛn?&ðw¤›Æšn¾{J`í6®R.e^ŒéÒXÒŸhÞÿ§æýoiÞÿžæý×4ï¿©yÿ›*ú¸i…NGè‘XLiZÐù%õ‡Ÿ'vÔ\ÿÊüÌE«2šT³®3ñ€ª%–4PLêbºN{÷»j ìyAw1ÑOÍ_DñcoË^ÿy¡ê,úæÝĸ÷”w¹¤÷›`oÛÍ‹z¿™Í½ï7Ÿäg‹ªp¯¼ ho‘ô›w™ýæ©bNPÅí‚*Ð~RÄ ‚"Î áàÝPjÖÝAwÃ)Ýí]É/ ’â#éÞüRIóImÇ}¯`¸G:ºÍŠ1)†?*óÔsRÐÉ=¼]$=Ó} ‡é’Þ‚ý¡‚Y½)$­} ‡_ôp—ªÓ5º“½PÉ)A%w¤;_ûM!3‚Bn—;ûÀKž4ð©C±ðLÉб0§ºÆwCK¸8róÔ²¬ŽžB‡b/Ëï ò§R]ã{c|¶EÊ Kz¿ ö¶Ýôõ~Ãz_{YþC#êuïº Ï©bMݹ`½­}£ˆ×EÈ©®wC©Iw¾ »á”îö®ä¯ ’K©®½,xPÒ|²S]øÊ‚mÜI1[Óa¯ :Q§ºöƒæKzSö‡ ½)$­} ‡W=¨R][¤… ev¶T%W•$Cö™ù}¨Aržk?¸È¯kìaßĈVÉЫÐ]òCÍûhÞÿXóþGë(û-rž[سƒEGqn!ù$G"—TEð<Ü(i˜{[cÒÝÏÒ}êëy*Ïñ‘ÍðÅÎðš4ê©N´í8Ì:cèç[£¡ƒy4¤;2Ôx•6)ÐΔëg¥Ý[Ê›Ÿ7¸˜°°›Û½æJ®2ŸŒÎŸ´frìý6žœDhfœä¥G¬rçZ1ÿ4Nˆ^Regular Expressions (Python)source.regexp.python©xÚÍW[oÓ0nטHHÜc´¸%ÖFŸ†6ª!$xàaH‹ÓÉM½6Zk'Ý5ûï¸iœ:nœKËÉ”ãïÜ?»K¥Éz’ÈuL=òz˜c/$Üöú8޶¥ìºŸQ`ŸNuÊfm©³`Öy'u*f†ÔYLäDÅßå×j"ï¦_ƒó°¡mZN¤uCÛ-m©î%rI‹HHF…IBö‡šrÒ%çÃ’PQ3-3…\‰½Èáˆzá‡>£°CŽ}êǯº B;ÒÆ‚´0E/^OiYAA€ìäÕi!×Ò‡ú|ñqL»$±^^Ð"’X5+E$ððÀ6öNØK oPQ·?N·Dìn÷™w’S—rn]€^sS]ô¼zŒ× Ù^$İËÙhE 7Ï:³PìÌf±3ü›Zãž–çÍ"Eò;18îÿ'î>šu÷ß:¦/µ©nÚ£7kÀFÜ“³‡aÑ’Þ¤F«%ÍZµH9ÃG’,rξß:Ÿz_ÜA#ñMGq†&›¢WRhøû“­àIR¶,ÔÍ4(‚¤lüµ¶I×—³©C¾Nä ¹8c¼Ùp2)ébm¦ó*b,[Q”•ã2^Ïd ÖÓr‘c«ëÖF½ÖD(ZÛtkuEãÀ¾O ¤£A[ø]ém¹lÈÜ›ùÈOaßx=œvSûãþáågÑK­¥n½Ô²(ú ä¬1õz"—3%0ÅÛ¶w\gK<šl]/I|fÈæä˜pBÓ|*²£f½æŠ‡ÛŒÐ•…:õ·â/ËH¾tš©¹5Sü‰Nö}’@Ê@‘„yn‚É‹_^i…šh]?­o(ŽÚÎF¦Èò˲bÏñ¿‚ѹ[Ÿ²çZnÆÙplÖY·Û/H¸…,1¶Íƒ=ËÁöå¾}xäÊ—qYk謄˜9€ ëKñ€tf®¨F…Õ=‰çjüÜü³» @:Œw sæ9/ŠxcEg¼IúU b ›ø¬›*÷;±qàŽáêò÷MHê”Ø3U `µÀp›ôüôhÔ3V›ÇrÁÔ’™#¼´•mdY Dù­RÚÊß*íÎ<E*ݳDžbî㶘¥"F3$/s¸§m$Çà`ÄÓ率ÍúÏÁ{ œ¤Õ?•,=¶ú<âŽ81ôö«D nóËxò“ ©—Áêí ë­ ç Ì΢˜*´¨Þò~¹ýÿGøa R Consolesource.r-console´xÚ½ 1„“xhca)ØŠÁB[ŸD 1Iqà%’ŸF|xñÜ 1œè4;™ÍÇ6ä­)øJZgE'[+v{ò©1¸èsL)ø$§!J1fà xYU®Z€—¼2ÜsÓ]ŒÖFs¿UÎw5¤¨°w­§{2|úJ0œ“aÑ‚;51©ˆgq‰IÉ/Ñ‚½>ëß_Ѻ„¬çãçð[²*&[gy0ª÷/7bËzx‚5ÛRRrsSRprofilesource.rvar$(?:[a-zA-Z._][a-zA-Z0-9._]*|`[^`]+`)7xÚÍ} wÇq¿h[¾âÄ÷Çyñ!ŤdÂ$h¿ç艖A”`ƒ$Œ…$&‚´šÝ™]Œ0;3˜™°Ìäÿ)ÿ% õ«£Á‚¤G/ ·»ª¦§Ïêêêêc~òŠü}Ký_$eUŽ'M2=ͺv|ç·¯Äׄ»kán' CÍäEy‰+ÐiôWʇö¯åã kÇÌã™jW}áEI|ñy­þå🛚üäf2™4ÙyžtYŸLÚ>™VâœôIš>Þ‚{”´§Û4+™P‰ûdÞdµ¸EŸyÛ‘ ¨8ÞÈΖIúN©%Ë¢ IYyž7U ¡? f³í"iÛ<£(«(ÊYÕ,–E’Фœ/išÑ4·†“•5ù4$<í=5É… %‰tÍ z‚Ê~;˺ȧTiŒ“:Û$«!1M ¢`x¸òÄê%&/6— ¢5à[ÆÇç4Àƒ™3ê¬YˆD+h‡Šš„¼bÕo5óžTo*‘dîž¶® ù؈2å†à›9Ä6Hø¦,0ô消ÅëEuÓTÃH­õ#âIv¹¨Òa¤Wª)zZM»5ïDĶ™6ÙLˆÕ¢.²K†Ã¶ŒÐ ÚâV»×iqÕ…Ö¦óœ$]¥†¡ƒZ ÉùlÖåW£ª6 æe—ͯfP:Ó€V͉m‹!ÙXx@¥Ê/®yVV<ö_![‡]KŽÚ9xLúTÖdéÌ-=íÖ’¯Ö‹˜¤]i@¼ÒÄ癫U×FmϤ4 ¬ Р5™´ãaõ0!,¢'Xá".àQ,×=Ž^d6ð˺¡QÓêߣQ¾ƒ,Û<-B¢Àa¯¹Ð±€a—`š«h ÄÉ„aÞ™dMð0LYÇgü ¬ç°(Fð»€Ãü5ȳ’ÂN¡¤°AJ‹¡\ª\E2Ⱥ„"1ì55ü4–Faë$o\C„ °çe#ì ž¿%ȬÑÂL-,÷xеŒç¨樸’£bMŽŠˆSŒt%“EÌgܤˆ(¯¥Ó®“JšÐˆ¢``Ðg,/Ù!%®} µ…±ŒîÁù 90õÄxâl²K¡».™š¼Øu ;¤G©šGx>Yr}-»ª¨’ÔTïPÛª8Ïj3êpì3NH.dÅžúTÿOêÿ+ù]ÒOrÒÊù^»E±¾_‘Þ2Þe—]ZÁ”Lhw±U¦ì?®:öŸ4ìNòY·ïÁCŸR=MªtÕO¤S‘œœ’[]´È½øÛNQÂ(ëv²Érnøå ×E‚¶ŸPl«H-`T›lòl–S[Nû©Ó@lÝ{zµoN}›z†'ð"iJع{ÖÅàlo“W'“¼ ŒgxÐf³ªH  7PkâFÙœf¼œ÷è6,ºs} â @GÕ!q1 ²éé¸{V•Hëät§êà÷Âñ…¶™Pµ”"+õÓ"Kšƒe{òS‹i!OÈ…žU–2ý1 )aRJS¤Ú•Þ½E4d¢*e‰ ¢¿0Z.à/TÊ-è½joêMç‚OŒ}˜ñÚž+ls-‡Øq ä:è12¦C ðŒt|ŠòüPéNUƒôøw§ÎûiSµmÝTi¿M¢êÎËYÕO—T€KöˆÿÉãä·ËyMñnÖ½—¡/RdË?ã;@®a€¨Ò Ž ê±*§€8òc5”´[íC–LmV$«,Ý”Â`Ù"|‡dO ³•ˆl6!쓟#lžPêÔwØÑb håRÌú— VNO'T‹ä/ð‹úáÂ1 ž6øQm‘ÜàĹãÐxˆ–si¥s¤”w¥W5+%öêÓ?swO›ªf§Èγ¢ À8Á€¬b>¥6'ÇM?Ó+sÏtýÄ3]3ëL¯N9CÒP"…ÏL…4'˜ÒU =ˆ†–¥ÁÄž}&Ð,'oŸ-ên…"+§›eÂRಛý)&#f§~šÃ¶æÝ ";éuÒLšŠE¨å°Bƺ>;§a αº:FÎzmV‹½ˆÆãy“§@wû@ï¥Á`Tͺ´Ž´™ÄË)îYNý–³‡‰íL†È”\•’ŠTõÊ@á6A4_‚°LDù©‚¬Í)È/pP Ød‹ê ‘¹ö(Än‘qGŸcÌh:ãÁeMeÉÒ’bÉ„÷ªêþ>Õ”¢à\xm7Däå8ÀÞb Msá,PBÂû-âbb‚iv#Vû-ª'µÕÜá¹9j¦ûVq¡]–c:±ù3i?/è5I HW²ÜÎ!³z6äŠ.”ºyS-kÖy»œôógS$*jë^Ÿv..Ïûòéò]4rQ s6 °”Ú‚§Áu«>ŸÑ¾(ªEŸs’”¨ h¢B†ªÔ&ùðÑø(´ƒ‰‡†UÐQõ@ß9ªÞÇAê%ž’+ô°™ä±Í$÷ã:ƒXj’\ÇÍÙ _j]ÙŒ8_ckh"šC‚Ç!Q57ªÉgÌ"_c£ÈC#M¾È…dBï]LËÙÏHqn-ˆNÒs?#ÏÝŒвlY²0¢“ñ¼¥y1èÍ»¼LÉ[Ñ•9ð^)œÃåÃ8XDS¿7zÂÚ¶úZ)OHO Ï14&ôädÙ©æŒä­eIÝ;8hô£Ã÷wûÏò|üÙ’æO¥z:N¢u~JšI"®;-Q}žk“’K±wï”2KÙOÆ:B´¶Ù§Úó´/’ T^ñ|ä…¨…Eòl…špÀ΃ì2›è,ä´`ƒA¡: ¹9i7âùTpJK´l§a[’^K+d€¤lceRÚJ¡>½¹"Þ ¦Þ’œaÄ>ò„eƒ†!WÞ„`–7¹å#´L >ŒG=ãú5¹§ÄHÂðn k¨ïãw÷»5ÜM8“Þ¤BQ]d4ƒ!é©vÉif ^/ËüŒ†O b±¤%5Q¹½H¡É õQytŒ^ŒìBÄÎ dÁª0‰9Š M"!0Wê3‚ªÄDùUù“cúALSd`G#Ð_1‹ZPÓÄŒƒ. ^yÞ¦Ž x'›X¦°™ɰ¹ºQñŒâò!ZËJfõ‹¼m¹’ifϪã‚f’ÄÄâYYÑâK«éŒÕ²]Æ ÇE™â¼äj±xòæZ i²î¤J–”#$¹Tå·Ÿì÷³9²Xf<ø@ÚÉcräµ¾4¥Ô~iF°’tXvȾó,;À|¥$“[ÿøðɇ½ -Ãa¥|ÆÉËÑödõ’µã'E[•¢!U%Ï›º¾‚…Í:„`–¦CSDâ‰Ù“:þ熑'ÆUŒ)¿2<Ì=mDcD[´ªEßæg½… %˜°á¨§øî9º½"ï…F`¥0v,k³TÊÚ”1e,­f°PL6ìºh¢ºê„ôsqïô5wI5% bÄšf±cØ¿òy_ç5D>Ôè²5÷Ù¹G€£hU¬šª€Q¸âœT­˜Ó¨ßaÜÏ÷(Á“EŒFDW§‹ OVyãœ'c(%hg¥pKÛS—ª ÖôT*VºÄè~bÍ„IŠÉDå*ÃL_Tܦ¯ŠVGi»jf˜ÌE4½0?Ö5 °¯’m’«h8ÇU’ Öõ•F"s:k­Q=ÇÐÂ=ishQa­ZÏõ(Öí “é²ŽO1q'nº(ˆ³eÕŽ-ȤÎÙêJNí_ªÎiÒ³cæÃºU#cmvnöES9ëIw:ƒ)±¢¼0><ƒž–2øgvψÍÙï]ª¤\ÉdÐÓžÖiL˜ ìêQ•0gËZ÷pÜ®ˆå®]‰ƒ**(ù¦ 54×ÈÄõ™%ô”Ö OÓ/0D˜LʼnÄë1t.ÇÐ6dxÃ+Í••Š´?$€LÛôd:cˆ´öå]°u”™-:܉¯³0Š…õÃ,]NxÎÓ.pÉœ•M›-7ÚG÷2t Hd΂ŒÓc«šxÑþ)Lºé7&}¾¶CÚ†°b`ØÍ˜h]È##d„W$\µÆDíÛ8ßÚµv²vÚäbnPÒC5³‘øÄÞ3Òg.›R=mÁì¿€ˆÿiÜ>|üî)š|—íj‰ö„kEX9c;ýLéô`ÔøÕR¬.d‡÷*V@Ä;¼.$ÿ./µ äˆzRõ­ðq›œgìu¡ 0ø¨%ÎÉÄõñZö-­hÑX&Æ=ŠŸ¦fìD#J›á7NŠŠ4<@` òµ~rQáŒÐ:#xÉÓ 2-å̶A¤e$0âòe½¶UËW;4[a$Fˆ#hûÐmA‹2"ÁZÿÚY¿à…8Iá—K“ÁG$tH¾Ë»º6D°EÒ –ÏV›bŽÁr¶NÆyQ»…αžB e-æ[¨§”¬2-Œü¡ R#²ÇPÏ1ÉnPË‚’8ÆÄžðaÓi0ÄÃŽ€ÖeãnßRÞ;q#þSŠ´®>µÈµ~ÝòÈCõw†lh=ëЩ£¡"ªƒ¶;§dõ}GºHI–5L^%i;Rx¨PZ:§U(úkvòYY1ÚðJ%â´|' µ`äi)»¦«röȼ9e2A4ô0$ÒxH½¸JŒdõ ¸Ž³@Éx¸ì$$­7‹Çìî)øîMãŠÑ‡(†!Š „W«É1T@`2\ô™vYó¤V{jëëfþñ‡¦5ÁÐÓ^dàš‹z>):õwPÛ‚ÍGˆ³ôsòt½Ø€ ç´ÎQ#$´qY;sÚ·±²E~<WI@µÕú!/Zòˆ]ÅUÞVXÇrÆ™€H–u$ãè·ÍÓdœ{¥écãiQ¼ƒ,tRítâÙr†aA–Iók¸J)C‡BÊè&_ wS$"têB’ðKe+²¢gÀkñ~lÊî͘˲”¼z‡`w–¥4úh²eù¬çV3&Ùn{ZtSC6U´ÞÓ?åé.5ï=üAÌ©jÂÿ€=$¦¥ê]éHЦÉÊÚ–Õæ”>Æ.êôÒ4ðHl~Žo`[Kb^6UÓÕ÷hD/0 1°µ§‘¸V¸ÍK@>Ð¥°‹KGìÊ܉ALžàÙC2kº¤Ú Ÿ7!0b3üË:…FeƒÖ©—°«V…¹š¶òj\¢¸œŠ 9PÉ6†¨r´lÎûKY¸|–Ô-Íe >x|Óú»qÍ¡?;„ŒÔ»à¸éuo¾¶ùã«ÁជR/¤ŠÂ®ËjZ¤e%—yÛoÁ¤µ³5Ý^OƬÄ[3D7‰^åÓÓ¶Ÿ$ '¢~°±ºÄOŠ=‚¥q “˺Ÿ¦ü²xÁ²4~uZäµÛ¦G:E†ín²\‰M!¼¡Ž$pc~S% PûaÿTÇ» {Z£ ¢¢V-°ÅÈ"™‘ƒŽü¦°áfâ˜î©ÿµçM;'è '¼þÂU- ¥/˜-6òÒõlåN†svÃe«4jñtÿL1¥5"2!”X*y¹‡w.¸wµšSÙ¨æ ¯/1AZšºµˆDF—~•CÿXTm’ “y0Xah–æ‚ ð0üŠù7È¢’l¹YA[öàž¤m[‹¼•gøIÛqV4ñ4Ê•a<•ÔÌ©I3Ê©bξɨ¯+Ái­A¡–h‹Cs _ÐøRY¨ËïM‹%ìˆRâ9TÜåDq•LÓsdˆ|ÞZ%)ï1“4˜n64@+û¶d%bUQªqDMŠ\¶5µ(W–ƒÂé¡#YtÆh‘v8‘&]לuø„çfy-­àÁ Ò€æb¥Y[žbª¸,g¬LI–B,œ­Ed /–·¬¢±¨EŒY@šÚQí]æ´jÔ_¢@$+/WŒ²û¹‰ìñW¼ÈN?#> ,죗cuÊGØgO|VÓHÞn•˜,1‚0WÀà4˜âã J Ž()8,¢”𜒮¦Ç§ hdÐñ ïh¶Ÿ,j/Ó1 1¼ÙU÷ú)uòj\§3ƒZÌÚ+[¼©ÍÆOÿ Ãñ3¥ÌÛ1TQÁH-ÐU*FVØNmÐñÆöÞÎäw†;ÒEw7·W¾ßj¤¼=”]ŒJ^|è§wíUZ¥¤5ŒéVšÔ]"›­O°+ÅebAÿy]X6[› ­„3º-cö¼=$“ ‡h&Òaÿ´{‘F7˜‰Ê¤ƒÍ6ó í6zB #i´-ß(l+;ÀiÝT2è8h3«ÛCS ¶lHsê=ÉŠ•?&È®JO°ùŸ¡p'|xM.•TÍ4•f^…òRŸ¶™P” ÚT6#p«=}œ]@øF&¹½6ØhÕgd±KÑØRKÓÒT–hšþ®ö.Y½vyóš${st+8®1çM¶b' „[rçK²L¸íÃ'Ó¢?É’Î>i±-ïF¤qì<œq.uÛ“ö³Üwñ¼¥0ýgu6×]à#^pID˜ï²g|~ÀP¹¹˜Á*.Ó¼ã‡;l§U×9lD<à /Û˜§¬ V¡Ÿï„HÕ×9ÉZÉ¢<Ò‚j'+¨¡xý4\ãt[•ÓdmÉn #–hdJ;|÷ÁºW¹¨ò|å8"VÕ|™ÎD*‰7$‹ýEŽÅƒXpÊË –8ÇÆnŠZW …áÅ••‚°•f‡ZV¡QûÓo|„d™Hfú±¨dÝîÁž$Þ®að!ÍMýè¼ûç û„ªØƒ™ dÞMòÒñs‡šPVžSŽTÌ cUt} _Þ½Û?•Ÿ¯H“¬ê‹ùÞ¥{‰eüKîp¸ŒÀ#VŠ.WÏŒö¹ãéßãxì3¡ùŸÚÃù¿ìÙj0O01“`;î†=!ÇÛGvøä7PÝëB^B]‚¦HI‘iJɼVŽË1 :yœ,i÷"S¯`È(ÃOJ=3õùf8(­5mW,‚Á¡®M ·:y_52"F i²¿ç¨Úz$0'‚¹ÅCS®™¼y"·¼©™1$}ì"ëgo›­Ò¬*¾Ë¾uøh9Ñ|prðª„n¨ET ag¹¨9=Åšª«XóÀ°y©ã ­@ÑœñÀ¶yZ,ôú†ž‚þ#ÚTžÐ Šã4 ‡ *wPÐBYÖ<̳"U†[FiBû¤ämŠ|Z$€Gb±•c®bÕeZ'ð‘ŠYŸðJ´îJð$ÝÐÈE$aôð‹sP4„ø¾˜gùåA“Q7ÿªà£p4ä,.³ø'%ç‰$QOi­ã éL!µìAÒ⌀œi‘Ó–ÁFKš(ÚÖ2œà²€nfpðÜ6Ò3¢K|"€zΦ6¼Å_j‘@W+дçxØø‰'µ¢g=Ø ¡Èf}´å–?⠀HS‚TÊ^5!™êfGÙ4 º¾O$-””Ø›ª‰•DÁ”ÙqÀ.CxXŸèäøžEذsb>àœÖj¨›œ$-ný Ï—˜ÐAmÏ+±ÓÜUf^rSS=cë=õŠ ¿º?K‘‘±ž´œH”û|h Â;s‹ 1ðTilÕ—ƒ#l›éE—G&iÞCd¯ÜEæŽ,tí“9n…*Š Ræt×6 ©hõÁ› ¾_ÊærW-×X0Ùqa¦¼}”ÓÌ–7jË®$1ºçßÑn–Z:‚¹¼hCÙÓ§£{{¬uÃÿnÁF¢ëGn£18ݪÇáò”\“ÙÇŒ“U×°"~˜a!Æ Ê@ßeág3Eû`+àP†wŒÌ}Ð*OFƒk®-•|­`N‚ñN_v6eó¬ËŠOï“e§— 9œ’P[iªCæ"–‹dšf9€uÇ€îòÑÞê†CÝ¢‹Þ´@ýú”ý»l/-M±è'‚’€uULdfØ'rÄ4zÙæ¹/ûämïf!» Ù¦oõ¯jvX&­K†ø~««“|âû9á”a:­ªk'’dcB°Uk“uårJvw= F/ÅaÚ™ Ý+åКlAšE½ÛðÎP©É›mÃÚ‹åoÁRF2EDvcÙk€­°‚=²]icLÛ¥‰«S÷Uù7ÚÌe®õÃuáÑ=*ëè7|t‡±6³ÞÞfÙ¢ýFÓj™û4k‚DrŸØbw;Ò] ¹Õg5Z5ÊD„Ydc Œ6 ÛÌçSÅ?Olvu@cUƒ¸1ŽaÞÊæ#uCÛÖyG’„5È‚n;:['Q¸Id¨ê’,{z²\@FµNøx¡Éäó#>ÀÖò<Ï z€Zȹѽ` ËNΦ`O0]…‡À‘ÛÊb»“Õlˆ5\åºc³³¤…åò=d­0 ÚPÏë£O0d€“ÉÚ§ÀïªG[W.e«Î)«Ÿ]¹õlí=^Ön¼D6JYbŠÑç<9‘å$¹g+â˰¬6±äç_0¾ ËHQzJí.˜¥ƒ»£,EŃÒPYs[y8¾zHi9McȬé/ âÐ+κ6xóI™h™4}hEâ‹Ê”W“Ž7Ha¥¥C,Iw°©)¿Å¨_ŠŽÉVK¨=û׃ ‘öQ-,ZÀ8É7Ée­;,u+^70EhÎ3ûÕ¥Åt1Æèx C×ä‚8xzÎ~Ù¤æßa`ôGö–ôðPD _½cšد|4ê³z-Öeˆ‰e%»Lpç­qži–¦‹T6ói8Ç`l…¶¸Ÿì×Ôé!Aþ’—ã³ÙŒF}^–4ó –'ZYјå|9ûa¼J€¼rHKÜ4Õjp˜}!—Ü`7IAº{g(VM m äklìpë…ÞЃý>­ÜÉsÎ{xÉÄxª Ƹ!®¹‹iLªOHµé`Ys`´! ¹^ÇÍŠM0Ò¯5®rMÓBÉžžoJ çüé†~ZK¬r!OeI%¦’¬¦…ºAÆ¥ØéS>øš2¿÷é4YNOhÕˆ¹…ŒehÈŠ/בæ$e´®J!æª^p /ÅðN(,\AÍR? Óäçâˆ^š1zO½A¨{a°ó<‘Ë‚ƒç±YDXÉ«l—´þD«V3'pòÙhB!âÓ ‰ËLj•=I“A{Ò*m†n©Þ4ÏÐ'+ì)”«†ø DÚ¡úñÝDLðÜr–ÝiÁçS, SžJr—ÚÖò¸®r¹/È4"qi’Ð,(W«€â …²Ë'yRÜç³X¬ôXRCÜÈÊa@ûKlùO/²|‚ÕVýÅ”ôƒlJM’ÍDLñ{„ðùLõ%;ŒB\Ï<”ZÒ1Ä“ü<í¸»yä^QÑã2(ûÓª™E`†8å³>‰(œ¥ e6§–ˆHí²9lj+ LÑð.VwdS‹5Ö,YäÔ×Ä“ 8ë°Ó e³¼=ÉLæèy0ñ‚»l×qÛÐÓŽ1üm°l?ÙÐmF=ÇFZ¢Å'À³‚øÁ§b>éˆjÝ[æócêÓà¢Ößd£ …»ØÆÚËä‡n8Òàv¡7à0áJD\»†„p©— 1"=gÖÈÁ𕇂$š<£iDiU¡×„òÙÑ2³Ä©¸{WnèI–4—OØ”=&cå˜oÖkvÌ÷‘aǪ¸î±O'¤‘iaÆ[ù{TýüŽFˆA`>jkòvÊ*âz °˜ÁT¿År;¶ ¼·ß¿W݇r£K²¢Ê+¿ûívúÙ™ 9éä iÑ1bû–<øŠ”†¯ñwÊ·A/t÷ŸšÆ¡X¾—F8$rwJ–ÌäâÝ`jt.ê°x:æhüSRP™HÎHê%U5Sð^h$ûé𺠿 îÛð$J/Â4Ù€¦C‰=pZÂäÁ®Ïÿi³lOÑüÌÌ擎¨Æ;Чä%Ýè/ñpzŒ#±ÝY‘ÂÓ¥»4u£_¸r®-Äœ£[ µZ³ØþHІâU>…ïyØ“å* Ü©é2»žËµÒÈ´B<Ó« ë‚ñ;,Sùv ¤ØêLµhm3MÑ"g‹f÷,'W“ÜîÜàò²€hÝ v±0KûÖáÍ}‘•2ͧ޲áÁ–ÐáÖÇb‘ ¯ËŠ“$3y·€’É|wã9¦`X^LK²3ÙBë­9_Å‘æñ ¤ÌP Nü•Ž‹yÊ«â1}÷ ðl¨Þª N鈈~;l@D«FÛ•"!6ŒD©þ¥j6Ã.)Åœö­¸4^Œ±^r…fÿ‚wvê ºËW¡p“¯#µ]¢#>žw4 iVK¤}DçHnËð9Ôj?*e‚» eÃî}ÐÉòù²Z¶4 •]’¼O³‡ûˆ¼6KòÂÑ“ ÇW F%´Aè -N ³2ÉSé:Þp$ŸoéÔêÇaåÚ†8¤Ë¡œßW?|O î=bø—¥}…òGÌF¿¼œô6ôÃÒ:†H)‹@¶òˆ3 _yѰ¼?jiaE#^…Éðǹ3ÜqõtÅËÕüt;ûÛîiŒ­ ¹?³˜²+„uá»Aø€0O‚²e'¨-Åœúµ@I-Wl«Ýáé­v\Zh½HLÒñæ:Ü)Æ v߃Hg(o3h›oFÙ )™ì*ÆÞŒx‹ýE-—HHbžÖ]!Ȇs‡Ë$KCñĵ–)"yMw’&«¾VÃ@-†³ä𲡷RðÔµ–©ëA^IÞ×…n†—ih-ÓP\7jaHQ1Fó¥6[ã¹ nÛ·$€„ª Pt´¤°Øü0¡¸{BFè>²ê lz†ò}LÜä* ël€ÔchªÅº@¬Iñµ³¦xxùêĨªw z´<ÍVïÑ8ô1ߌ¢€®¯uJ_KUã\ZPÛò™ö• yl†ƒ ÔÓ15€1Ÿ aÑb?'AÖr£ãö2S>ÓK¿;8°DìÛ¸fëàŒ#î „Ö6{á 8‚û`"GÈÄÙƒE¹ ±ißá迉8ňaÑíºŸq³"Ué°:È+”ËŒÏmÖ“YuÜРʾeÒíÕèˆoÖ$Ü dMÍÒ <^“¸í¹VßJÖÚÖË÷_G‘lwùÙþ3fóÐÊ8LZº½¿«ˆÍ#g+ˆaq)gÑ=<Âr§‘JÁb¦ÂÉ‚`.àa›A%`:Y²›‘\‚nîàpiAEx8Q,RJˆJ!L¨—#‰s˽r@ª?’c•˜3å6£_ ÑD–¡®2¦ŒnH ¸( E-)9lZ£íd¤5”°¸ˆxÙ¨A)¨GŠ*ÆSã µzP&¡†‰qÁ½×çÀÃZf‚Òe‡OªÉ6ê8ºb7ªoìÀHãGþŒëÖ i;ór×2M_©¦Vay«æõ”2U‚3øb÷?—¡¯Ù[›!·VCî«g2\9õâLÕ‹3Q/Π^œÍú3Q/ÎX½8õâLô‰3Ñ'Îtä;"6gg\¥gJc/¸ëŒå%.·¢¢ž¹¬ŸM²~¶LÒLËÀ>†€f²†h4)2‡Á•Â|îQwoVÒæâºEGÆlô>ãª<³ª<Óªl6S‘ ‡|iWl#µÑhu6RrÍ•ÊAìq²¯É´|BaNv: n“ñŠæ·Á]7¥¸Ý;ÒdrÑ úá›Wu[»eŠ7Ñdå$áM^˜ÍتJë¡0.G‚¸ÐP˜dÓ%~­ŒÓ‰aðÀ÷[½¹*( qn3ëá܆9·Îm„sáÜÆ-È4Êà ?>¬¨Ý˜Ç›ÝÇã!-²G[ÂìéH1 8G ~"ûÖc«ÆØêCuxkW2ËÆªï <ÃíT8hê,\|rTNwœìÄv+;êËÖ¨Lç”Éq!C‚¾bve…×Z9’;<ê¶Ž+åM¥™ê“Ú„ÝàuA¡ãÉýQ¢W,Ý®=+6{ÇÆ‚îòæ°pz"á9ÜlÊš”²z+p‡ï+2Lc*ˆØ’5å½ju!*‘\)£é²‡QÙAïà~4J0ó5¸ lò9Á“ü ý¤F£MöÉ­áÎiØËp0j4¶ù”–Ñ 0Α«ÛA«ð²° ÅÐzS  9´],WÈ©î !f‹–0 U‡ßÂ*›ÃÂ'¢8×*I>†…PðW ÕMxk®z‚¿ É í AŽÂѾ]Öíb‰cÏX2³Í-Ã]-Ãí,¢m@ûàN(j»¾¦õ§§u1*oè¹/…ptOÁ ¢` WÜÄGMT¯“—ÛõI®øö ¾‚¦e˵x6‡0L'†:>èhµ¨ku}Àà¹Sª Ž¡ù¦×eÍן‹ÜU£¸Õ­‹á§õî ÞS‚7rYr“Ý9<|3¢osY/ûslì8çRƒ‰rÀÂA`GBU9¦AŒ¼ü!\[£váLDs7È Èv³Ê€nW‰¬#G±ø!Ü Ïê’ÔaÜ!(© JÚ*!\x­m>Ì‹S¼ÌW4ˆ^‘#8r"·Ø¨jĪöç¶5õÿ/8g(Nø‹»¤^ãûÉvyhÒÈÅíüyÝ­ruãož›äÖ›U„\C¥Q$Yó]ܺq…_¿Ïè íóÒ¾môè5¡ÂèHcÄF*ÛhIÖvÞçÌÆ0|P¶©Ãð7ýƒÚíadZ^ò°‰ñ‘¯ŒP²]£ãí±Ü›? §Á%¦ƒGuÕ­çðrºž~Ž}]ç3s8¦ªàþâ‡ÃÃØ¯ÆË¬=–O _+~S£î•Vá·…}´«föõ%9b)zzrN %"×´l¸%BYoB‹§ãjÙ)BÒ¹[jŸ±\7ãÉ­¸c»îV¾†ˆð½¸¯Ð®l“å¬Ã×Ͱ\Ä7 zÄÔñ®Þ@S“e‡/¦›—ó,}ÈÕw͵Û‡[õ#ƒòj{‘óie!à™¬OMq#œÇIGY¸+ÙÈ»‡4eV>¤çî4â›D ë.q–fŽ;$ØÜ·˜È¡Wî ù¼ ¦ > Ø`&‡b`X9ªNù‚¤%[¼ä\ r4Ž|ö ¦¡V¾Ò§Ÿä“ ¬vÓ‘ôÊ¥ryvÕ•4ëe-铯ÒÉI;W‹/mÍ3¾áaQõ$gùr6½У.W80ëîd$3gÇN´CG ¶‹15Nb¼ßÓñç`å.^\¹¼ÙqÅ õ±n}â™8è9ú€æÂYÓdé€.ßFÑb[{RÙv*ëÎíx²"©®Ñ²›iùã¯3û¢™tSpÊ'7*–cx²‹]¹”÷å,î³g«`§fãbÜ@Ïr]˜KüÂþê?ÖVØ#Tº÷t‡”JXC]1‚ci÷²ì¢§ÿý1>Î1–¹ùmWmðŠÈrÁžì+ðþ¾;,g„QÚ-ë°Áߣٹ?êg,ÆúñG>ýkc¶-¹^(Ÿÿâ& %=ñŠs3ÑǸöÚ‡9̓qÂŽ°?•Ĉ£{óàôî’÷§i 9Ò`⣸ ‡dí"oùªÖ޶ñJqfz­£Ú÷·*±w(Úȹå£X à¢ÑÍæR¿»õê‘Ø-%'šOH °u%Øed¡íG;Þ,¨v%A,\Q³ƒÎ¶ÌxÏ0½˜Zž÷{ _¥E5p"aÁ;Äð<Íê® i¤µ_ð­|ç²K$/Ý9l=iˆ ¥d¡(ÉcµBâœÎùkI¤ƒf|ÔÏÉZ³l;×Ó4'aqø3-´Ø¢â/ë¬ ñÀJ.w¯ÊôXfSR×`›ŽøØpG¿¬á3¸,Ÿù¾IÝ•ce" þ¢Pš@yä‘QFÐ ,åï“ä¹Ü&=\–µÇ<ÊnÙ˜}TÕà{ûÄ ÒaÜ·iŠ¿”}4cHò±Ü‡-ëލÇg¹?nJ–+š7È™iþn‹k$Èý&KXe[è'W4}Z?‡¾0{±ƒ¯–asËU5,k”ÖUJx+}œô0Á¸Š}à>‚L T\ª1÷ù £vEµoƒ˜ŒUüA>áKsôé@ñrB-ÅhyxôV†T7.9š+³6øE(?Ý7=¨je|ÂýžcÜß=uµÆ(z³R˜ÝÜâU A=8?üpð Jl×J0’ÄúˆZ-þˆÿàÈ  •¨­¦W sèbŽ\O~DD{Ôpµg]ÄNè3®µá. ÁÅØ¼ñ/;ÏäÆ#>e,Þàƒ/Jòk.„ó¸# ~KI»ª¢™rê×Ùµ:€IÆt8¼}žùo]ÈÜ•0ù4ˆhõ¢ùœ™[O`4 «•¦ôRþš…ërŒ Ð Š£>4ঢþËdâŽEðí"x&â2àÃŽWSh I‡hºU WµÚC²ÁϽÿ0/±n« cÖ±þ¬È‡|Þñ³ß>Y–§PC©BÙ¥u\ºO ßB>„-5Oy¢¬\&7ãiðw#x!JãüTý‰,ÛX¬à¼8*I¯MûKÏKûë!áׯ8£n÷|õÍP÷wŽvuÇ4õçÉÄ@L oO,Ѫ…¾&”·EÞN)ƒ_t =ñ ñ§XnívûÇïïï÷·èÿX¿ë;L²¹`@¿6,°Ù{Ç=uþqò8ÈÈwÕw°›‚¢LüÐeâÎÍËþé­îÜþ—äölëöÃßÌ}d7‡‘Ùyq÷u›$.‡'¶ž¡ˆRxÓ¥€¸?~óxãÞ¸ùÎ[7³~÷ÖÍã7ûÛ·„øæ­w‚T_{qªëRü¹¥¸!qþ¯%ô¼ÊÛ÷±ÿóµ±K_[u?òòÎ[ƒÚ»$ðó%°.ò<'ó/Q33š/w׿ü¿°Ñ}‚?}~‚ëûÙ˵÷ÿ(çI«·¬“¼óÖñ¤¿ùÎýã[·n¢É’Û϶nÿÛÆøc…('„¼ÑúÑ'Ÿ~üæ§·®Û/\#l­3ÛJd m‡¯ü|¨lå"òyšvcBŠý_ENï©ÿ ÊñÒ~ûíwn÷÷|羄0ª‹ý›êã>¯ ¬×Ö1³|džeòsªèÕWcÑ®¨Â­—‰»óúÚyõ•Alß[—×ÛP?(Ãú쟮CmB¹Å #Á_ +øŽg­Ö-¯}ãþGŸÜÿøÖ0oŽo\jw¿ê’¹ÿÖ•&ÖÀ—׆øÕó £ŠÃâ9°&:¾õ¼!ÀÇØ¾ØÈ«7yüÑ˲ðkA »—®• _ ÿäÅ÷s+ùì±~Ÿ‘l‘8Œ Øßp¥žÚ‰ªé-e>“(f0ÏÛgõÓZòm™¼<—¾ÜÂr?îa/“ÚëV7Ç·{’¥ÇoôÇ¿î_?þõëýëôÿø r*ú]¾ÞrëÅ ÷ì.p—F”ˆeäæýþíÛýÛô»ý{úÿû[Yoõ~ÏEx¿ÿEúûþíž~÷ûßßqœ²`—·¬Çú8MþÞüYÿÏÿ~÷W›ÿÑÔÌ€‹òÇ×E©úGñ}`ñ½ž—¯÷oÝï_ŸdÝE–òúô´×‹ü4C-¿ÉŽ~Γà·è—VìPNÉÿ=ýÞ†sçøµ×]–~t]–ªîd ¾ãšzÿúã×ú·úãÿ×ÿáŠHv‘]‰ãyÝ컞qMü½ôàw-«þõ‡¾¯¬+È+Aǖϯ‰¤þF&Œäﯡëú·¯¡ÿàú¯¡ÿÃ5ô¿»†þÝkè?¼†þÍkèß¹†þý—•ÁV¹ŸÜüÅ/Á.àusÏŸ®iè릃ëšùk¯¼lÖžz¾õ—PèŒ×]¥3E¯ w¯W¬Ê—<ìcúíÒ&¹€@qü¢Zãé97`ëøoªn_XÇØ?¿1ö×Ô©˜õÂþ³6_e]"¿üë&ò7ÿñø<Rd (R Documentation)rdtext.tex.latex.rdHxÚÝXÝNÛ0N …mü Ø`HH“Æ&5lö£q±b»#¬rS"ò‡ãl Ê‹Mšö»Ý-iìÄ>ÄiÓ Qš‹ºµ¿Úß÷ùøø´›Zö,³vùß±ñ¹ßy{ ÉÏ’„‘ :kŸJ¾t‘ÛîÔÃQn°vU“v/°qš«B½ã¨ù*Ô{ŽjV¡>pÔk7e”ÝŽhÜ£1È-Ž„æ €Ù;9>}&ìt"ŠåÀÌtcÀvp£„!¾›+¬•6â ®±ÖE_´ñyŒ¨ø9lPÙ¯! h@/CÌøÌr>º”þqÈ0š‡)2Ob¿—r6S{Lb—‚°ÿÍ!ïaŸš¢§º¦C–ydêLïsöù·x 8Ⱥæë\~Ê#³/¡râøÎðmŸqhÍOXØ Álþõ'¥Z-‘¦—–sRóUðzSW¶\C4Ælu$¥a*ØÏ#5 b’,ALìu±mc»LÊÜ­X,MmY¯ä>®ò#ë|Tn•ªŒðEHf_f¡þLíæNyƸ@^èâh–”®‰J#œ -ômó»Ï§½4}äáÂbL4üRkY×FžtÀabÆÊ? …cçÊ;”Ÿ2®:¸‡TsÀˆMò75“—,•3CtmÔ£ ®À«ßáëV˲ŒÖá§´¾0Œ–uU8=§pšr‡a@è¥ð{Õ;ÓE½³ÈEÑiòU¸äëñ7µ‹ûŽÌ­Ò&¶jX5¾SÛ*§¦Ù(}b£òÄzŻͺ´ŠbªŒZ£µ†âx.)ú—oÌ9âØ–-º¨˜|CÑ¿®è_ý¼Æý£èÿ¡èÿ¥˜¥ò@”Ïõ³†ùóU¹&­@ÿ5×°*v:Tnhû@þç´45Òw-ë(m޾ZÇÇû‰!džq(ÙÒTز£²…—½ÿÑ—ö¸¾œaš;3?©¹é$Ùýܼ½ý‘¢37“ïϰ¦Îâ3ùôr0:J•ÛÁËóé Ó¦dÃ.¼æXÍ]ˉ]åWTðÓiÆ‚6ÁÝ"åê¡qi^/µáËï±Í€žb"”ÉЦÕZ…ß·èÒ¢dB¹ŠvÐû’üQ6`ÂÉï·n¾¿W¦ðÿAµ¿ô K HTML (Rails)railsrhtmlerbhtml.erbtext.html.ruby?xÚ•RÛN„0¥‹»¾x‰ñÙ˜•lÝã‡C¸Tm„bJIôï•nJSâ2/§0§çÌLgåìãD¡—²š%UJYrÿèŒÃÂyšæl³P¸R˜È2P¿º4„m±Ð?@äysçAå7 ¿Z–‹6´f¸ o”QyÌëª"L`³QÔ9„}œ&~¼Ž‚—p÷emqkH.‘T) R`Þf?“f}C¼P•feöõ*"²ÍdéZaS·<'²ÌSZ6C‰¢*u}×6æ0ÞDó^ìL¡ïø6öã]'€â•ÑwIÁ¬ýÓâaCß™TCȘ wسw.ÜëúzR÷Î'ö ^úÓ--\½OA¾…œl¿Èù/l+â:³ŒÐl£KuÞBNw‡ø¯Ã;JavaScript (Rails)js.erbsource.js.rails-xÚ•QËNÃ0´  âÀ q(Q¥ nÑæCŠò0È8ÈN|ÿ qwi²J¤v/“xwvÆž9ÛÖ) ŸêZ'UªtrÿȆ52ó€3ð0q}ìÎOþ»¶IMƒmð°Oų9ºÌ몒ºYYçŸBšŒõyß>šXm†G8t hëÖäR˜6û&U¥¥[½þVôÅt¯«sÀÀÅmÄën.DÉkr‰Ri)t[eÒDV½kg‚sruDð«ÕyÓ¦ªµ(ä›ÒÊ}âÒn‡‡¼Îîðl¼8Ñê84F¼,†÷a·OÇh“‚ŒÍØaJ“Á<¯î|äÞì÷b˜÷˜¯aíD‚x¹ _¢õkŒ´åˆš•¹Cù—qQÈÂ¥3)Ɖá þ˜©j0 Ruby Hamlhamlsass text.hamlúxÚ­V]oÓ0MÚ1ö ƒ!1°”-éT/›TõGðØtSš˜-¬qªÄÕ˜føí8ŽØ^Ò–?ôFöõñ9÷^ûvÛ(Æ·]%è2ö#tùñÌPGÏ©ð1›}> ŸV³ÏgáÓnöù"|Ö¸ÝS|Òùän!Xñ~Äí:·— çL›}\®fØOñ™6-ˆ šû8JJˆ ¿©ùzb}‹Ûm-€ÏËóâ" &Ó$¸×~<5*O³%¥ÅG]8ÃŽwjYn¹ÔÈ9C™>LI5ÜÚ$¤K¼{âÈ€ôÉ/r¢£¨õÀȻ텪×ÜRE¾È!Àþ¦~–êÚ%ˆ ÑU1^6`D¡°/XÜ;Ãèy? ý!^ֳ݊ -:-Å£DHã?@jË‹òÂVÝÎñqÈílŽ\ÔÀ0#äã$eŠ+¹bÓQû ƒÛåcœF“9†™^?R¬¤’£q²I^D5*…tÎ'Ÿ6èÛФÔ‘K&ßé×ŠÄÆÿ—X]å·ê’b/¾I[šû¾,4¿ì ¿õL£pyÅm–ÌÓ€¯ÃxÆ¥ãšÌåˆ[Ç z]ÇòÈ肌=â]»)2åajv1Oõ·7ðî6IC¿„i2ì¹ìïSŽREPð-PÞjï šÓƒÓ~]!Qõ¿¦ÓlسYã+Ïcø£*JÓX6êîýº±/E€CS™'¯t4rwTó6dpæ§ìi[ÓÐ^I©©s~Rö“N§ã:6-,ÐsÅþ=¹Èg´’âAj$ý¾†t¿E(bŸDÅ÷™ `õœ“<6ÞWZKêÍ@)§Œv“ëÅd¬ÚO’ÀR©ì”ѰznAæa¢ZyLS ©ã @Ïv†çŽóÁuho<».í̓¼7»ÕÍo7hß•3'úˆÎüpq¶Ä6ýŒÜêÍy‘HõzmÊ"=¸KoƒR‰0 üÔr·«nÀþ¸,oÜk+_`ñ“/ÅÞÆof_] Ruby on Railsrxmlbuildersource.ruby.rails®xÚ½W[oÛ6¶Ýôº®MötÀ¬5ÖÝgt º¾ìaíC°·8åhéÈJ“ I%ñ¦ì_îÏì©Gi“²l«E#1y?ò;ä¹ÞíTŸÏMû„rÁ £žÂE*A©DpE¾vüÏü3‹ï¶Ãcñ½vøo-þF;üw¿Óÿ½Åßl‡ÿÁâoµÃÿhñ·Ûá²ø;íð?[üÝš]„ÌhÂí轚„(M¥¶ÃŸ˜ö‘iJ6wy,ð¾i[àl QQöSÓîš¶n»Å=¨y̵ûam e_X,h:ˆ3j\‘2¢Aé¤ SåŒnωç®Ý›ѳþá/À£`4^Œö,IaL}#–ü3—<\KÁÈ+ç}äòN¥×͉ž¹Ž}îzœ"vå”=Êd"iP«´;ïGëepÿÍHíˆ §”O€h:fàNq r½ÕX—ËIÀÌj¿Ümw°éPê“÷šÇÝFuRÑ1mmpöþÑmh ŽŒ'úzÊŒ—zRdHzeœ†cï® “‡k\díU"“!z#Ï—öv;Û>M¡zoø†«øßLûcˆ…Ò¦Aæ´¼‚\½MR²iŒÆ¨ZZ£EðhEmĪ!)•‡=&&“„OrFçèÇ\Âi– ¤è$àáUØ‘¦!ÕzVÒp¡m—†¥~–—ª•¹Ðӂň¡˜¥‚_Ì=OôéÉ f@b)fy&Á“A]„†…áÂíãVôÔSà„b$ˆ lu™†à¦§"ÊËÒ‹±y†ƒØ$”%C®BÇ‚E9ª“xžO“ìžiZœ 9Kà¼bÅ÷BM³è),{LJ{à ôz¥PY𠩝ƒAEÒð­ Ëeý×[DG—ED…"…<‚˜fL©ú®â¡ª;Fˆ°H17’¢gv K£%ê ÷Ñj5Á?oEÈ,cb×d¹X’›¾?Í¡_Ñ8ücf¥2 žŽˆÇŸ¨Ò÷T!ÊvFù¼ìPôØSéÍ¢°è8¼V¥Ïf!Êz^0¹`cÈLÃRMy.õJ‰0Ánä(ñ©'rf¶å†SGÄ#@”IxÈ2µ:ó¢QÍ€OôÔ×_X±TaBø¼aN3àøJöô9ÕkŠS÷UŠÅþñ5·_%ãaF‚³ySb<Ù”˜‰ ­¤FÒY¤ZR¸¸Ln‚·‚‘\ª êdŒf ƒI+ŽyXWf¾2t3M‚Î$ÇÚå˜ûåfs­ºnïšK¢~‰Ý¯é5ò_kð6\Dw\Åë•çY±×‘:è÷£ôŸ?.ñëõ%ž¼\ütø³¸øçø_G‡Al½)ýÏé‡^oBÞÞ8‘68±DÆÛíôßúxed JCûÇUvy2:߃ýÀ‘ƒßË‹¦ aÏC¼l0ö0^”Q÷ªüé3þF m—ø1Ù_Ç<8xQôQ™ †­Ëïxˆ§m—eßÎm8nzˆ×›±¬ï–_o[öÒ±ó•gtåÌ¥qÃá>…°ðTP[W¿ÛT6>ß§ ÕËM½<™ö±•7Ñ SQL (Rails)erbsqlsql.erbsource.sql.rubyÖxÚRÝ ‚0ÝR "ð "-]W*=‰ø3Bp“6½èí3ýÛ*êÜðxv¾óm.±Þd¼á)Ë*žNÈÄ8t¥bàÙK•m&Z%O€]`ÝêXš:j,›N”ˆ.¿‘Uµ$”å´,iIä­FšËÑçT‘~üö ¡¹*J¶ID~ªÔ%pÑ0FyKêŠS»>QìeuåÃc†¡`ñÐg`­”òØå‘UÞ3Ë÷EÇ`í—ïÀÚFí ú7 ûÒVvöwA²ŽÃ(ù™iˆOáb½³ø=5„Regular Expressionre source.regexp char_class<\\(?:[wWsSdDhHvVXR]|[pP](?:\{[a-zA-Z_]+\}|(L&|[A-Z][a-z]?))) char_escape\\.character_quantifier[?*+]invalid_char_escape\\[xcCM]known_char_escape/\\(?:[tnrfae]|[0-7]{3}|x\{\h{1,7}\}|x\h\h|c\d+)lazy_or_possessive[?+]?ranged_quantifier\{\d+(,\d*)?\} xÚíZûSÛ6O”B¡ÚR¥-ÐCpÖn»öÆrŒÒ•ëcŒvë®±Ë)ŽI|8vf;ŠùeùdÇ’eÙŠó‚uþ!²•¯¤ïã£ïCöb¢yÝðÚE éÚ¾T†)[ûOr‰àMö‘%[’}‡ÈR^; “–¬•ä_–%šé/?àµwʆ^¯ñ’^­ÊÁë ×^ñÚýý*P4ôï×ãM VŽtÍk‹@:4U`Vd3Gœ&H,þ(Zr£Y†®òG²QD®RŒ)£ÿFB뙲+’Ž9õÚq’)+G%‰\!Š1¯½¢M6N qIU¨ˆæ:e’&4á ªu$HËKP·X³7) {ÀAߢؒM Ô ^2D3Aц@•£Ô€ðÐÕJ›M5õÒIŽûvˆ"$ü$¥ÕlÑ=J­Ñ†™¢¬Ý¤ xšRABáj†–¤¤ž¥,Cá>…prÃÍQH×kp¤¥Ø(¡þ¬ÍRÙ'yH±jÖdIqp€G”…êšÜ€ä$ógFÄó”Ö"‰ùšŽ‘±€<ÃãUe d!f³†\†S%2äÜë£×®qÀ”ŪV¯ÂßZØEh‡¶‰j—”²bÙeÔ*¶ªˆ]3ͲkuM²l³$Ù®× JícÝ(Ù —>½–¤äƒn V³²ºU‘lM7•Fsï!F0kÈ; b’BÊ¡|⬒õœ)g ÿËk¹ü:'\~­`iÆE»ð„.ž~f7„S¡rútõù™à ¢˜æ»š¢96MêÊ(®Üò›ŒþGŒþ Fÿ-’¤¢¥%´îcJ¯hkd¡…!ú!] ˆà|6Ú¾Ðʲ70IÄÏNå xHhP>à J§©.X$‡ E‰Éã_ ß"˜v$%:f ǤlÓ«„‘}¯XhH[oñöXöZE;ªRÊ*ª*—ÚÆŒxÆl|¡¡Ù Ô’”óô"NVU49 ½Mz6S)kFHFáqpú…q×ó¹1Ä›p†Z·¨êÒa€‚¹$vAØ\x®ß«wc”äESÜ[´ ZaýP²$ Ÿ‹ %ã¶©× ‰„l2wEm¡VădÇ„·âO›Ÿ¾ü¼‘ƒ>?ÆÈ{ÀpÌ@“*0Â’jŽbe!°þ°¿Ü¯Û¯ñ“Œ5:š{ÝŸû°, ËåÒ\áó†˜Isi›[vž–§eø$œ:gΣpŸù¼³s1Vh·é:' 7äh%Þ¥ºaúÎ39JµÏb`jVÝ@i²ªr¶(—4mŠš-ãµGÀP@Q•Ûàl€šâ‡Žò!?ØWá†zîJ…î«pW{n¤ÂöH~ycá)ÿ£(”VzÙ:IÆÖé‰G†Kv¯UÄ?'¬p»{¿½Û¶ß¿ÞÙµ?¼Ú~goýòöíÎûåæÎû¥½¹µµ½û!퇉Y†³rÊñÈDŠä"Å wý£-ùƘN3ËaF\ÆI÷?hÁ++;œbôßîBhŒ”3JHÓSQ“^?Io´1)=f„Ñ¿‹¹®u1W`äü=“ßãæûÒ‹Ê«£ßÿ؃Bm׉°Âið_6ùOûb¦ÀÜ›%»ŸD§W̧ýpºÄØ3Ô!Mìö 0ˆ´Å 0aɧÅ<¦dù“6ŠÌDtªÁ¼B\õ’oǺ€4‹è曘°à%®1ÙTpq,†™¡3A7 ‡I½nÀ#Œã <¦qÏb…`ù€{ŒþÀaN×¹$dÚ˜¡ì?JØé(Iç*5Bfð ˆØ2¥-V#½ÈƒÍ™ðRè<­}~ã'éžññv÷Ë6¬_¤ ¢Ét‹iêÁV[÷kÂälÛX$ ò\®°>/Úöº½fϧÅzà¤ú^Ù O‚Hô<Þè –a Ø+ç JÕW¥á´0^ðnO&‡E—?“)†»FÚ4áy€'9U½ä–:72£>jÇ,áÆc…›Ãúe覅 ûLEOÆòrÏ·5ŒÏM>øt¾y—éñæž'¹hQqcr”štŠxÆN0ÈXWèèo]ýÈk¡[Q¬—Ÿl;ÿžbº]‰úYAw£5Œ#‹=»qá÷8§è´÷–8áÜøõÙ³H€E׌Ð;”\±:lJŽ\Ü.q.î§ vÎá즋)ºßMcÄnz±ýrçݶ¿?2‘ûƒÜ „¢{Ž£D|Xwr¼ÐÛ6],>–`$n3‰VW÷òQ“ŠŸû~*¢ÿÙ$ȯ &6 ^lž„˜`0×ùYß98ÂΤ½åK»Ä„c^üo Û~¥Hâ÷b«‰ø$wηV3ãæqâ]mÀöë,$ÆbåšÂª뢲÷IÂ;TÿJˆx_–rñ,!âqtYB\–‰Ë¢­"~7]T ÏÉ9–Q‹“ùPï%D¼|Ô$ƒŒå’„øè¿dšŠÔÐNZ|}z?G^VתÀ’*0®ÈW<ø»0tƒ^ܺé¦÷ oËÏ #?}jõbs>wE®_oEýa˜_´ÑªEßPÕùÞ0g­¿ÐnNaâV•Î ùŒ˜OR“…ò?(Šù•Œx¾Kµý¢¾·ôدï-úeÚUæNŒøj<¼:Û=NÌ«³ÍéŽú}xÚ²reStructuredTextrstresttext.restructuredtextïxÚíYmo£F6vÞNj{mO•*õš8u®c8;é—Zu­þ†~ôÚ›M‚bƒ˹iH{̲°ÇXŠNåCÖÝÙ™gž™Ù—7µÍóUÔ¶t˶4ÓZ˜ÔºƒZúÉíÕ#½„¢^פW½¨× éÕˆÚ/R½–ºi%ZEíIÔjáwòõ8jOã¯.Ò4`‘v£À€D¦ ŸEí›ZþƒaêôÿƉ8¼½Q ±Tc0ÛÀ"DS¾‹^^3½.ˆ:骣¯ÕÙž?¨t‘ãÍ‘ç@Á¿W“/MX“ pÇ2G•Ô/U&ˆq¼U¨Cfö-­ÌJF’L?Æ]„,Øá#Gíʳ°`™¶¥ðÖ´ÌðgÞ´uz¼µs{¹„R2¨†íÍP1lT^çS⿤ZTž?Wº£ß9úê>3Y‘1£631S*±ŒÎak¬;æŒöwQè–‹ŒPÛöT€±›Ûù{úÅElMmI T ¸ØÑb¿/IÍ{´\ÄãŒrñ7LΑù fLj0ÃzÅdã :bus¹0 ²õ>*Ÿô… 1¦L?MÂí›ÑŸÊ?ãàOWùMÑÆrpÛWDÒ ÝC§ÀÅropêÓˆø–¥‰ÚŠ!=bfÔ9Ì(‘¶û§ žÓñCtë÷ÉûsÚSaYã'âðù&¦B´¥Ñ¤½þ$ß§íÙ £¼ËÕbËM¤/ÌùV¿LJ®X‡6‚µHÙxž¶‘#ð•[yÁµ,j’8ë°”‹ýðšØ,ÒLÁE-X,ÜBZsL›µþ˜c}§XïHô^¶ãÁ¦u·5ΈIQ÷M¢ çG&Z.é²Èüœ¦“gÐ — ¹X$|{ÐÇ‘è‘èkOÝÎõ³Ä•íz3[ém2 ë;ã»_·à^$4Ñ›,cÁLkÌ5M3±)‡fÜxÚÕõ ™Xó5ÑbJ…ÏT“ÊXÔ8`ŒìŠJ£RTÎsP 2ÊïN*CIü#…Ñe£Í.*ËÌ“WŒXw‹ö\ÏŒ£½òÁqEZœTêÿN¼bŠË‹Fxy-¶†8Yǘ>.©"Kl©ù%Æ[ÛF–8•æœP¢vn[xy„÷sVÄ ÂPÒ%±ìm.y©œÓŠäœqˆš ˜š…+ Äo"‚Ò…y &AæsÀò–ÐÉ[oqxð¾„ëAT•ë*Ö'Ù÷ ·¤h÷¦Û,ò"yÝCöÿ°ïû[šë ƒöG>ÚîãïžvýEùêó÷§ÑI$l-Gs¼¹"J¼Šr+tÐrT•[Ž+’sR¦ÅÐðÉñcªQ”ДlzlñÙ°o{ñóÒÞÒÓÃé#²Ôy:½›M¦x]‚÷/ÃËÄýÒkóÈqø¬_·v8çº)Vß´tVDÐØJƒ=D%È“R}hþ7›à,ú1ͨŗ&zT-} U¤ß•7^)ÖøÖ„ £t"ÜIHb0YÉYÉÊXÎD7í^¤Ïrv\nnQ-_Zžjƒ‘=]))?path_lookahead+(::)?({{identifier}}(\.|::))*{{identifier}} xÚí=ézÛ¶–²Ý-iÓ=Mº¤õšˆv¤8éîZVö4½iÚ&é** %Ñ6šTHÊKçn½½¿æ)æ1æÏü™¿óó÷  €.2e§ý®Ú„ x€³àœƒƒ5ÿ,E¿ãø9c8®ÓjÛnçA¥gxƆ˜žßZ\)ñ¿ø³~ ?ßæà;¶áûËY7=+0œŽ#ÏX€b˜ÀÏWùîÆ†é åÏàçkœãà YÀgS)æçðóM°kFÅ7;_h¥Ï§ÃÒz_ÀÏ£¬ixöNÅ<ËYc¨=”˜Ö|8ð9übà ðK€?"ÀG2L€_Îü ~%ð§+‚Æœà€­.ÔkÕ‚j\1:Ó÷]Ö^ËQˆÊýu©R[´•žkÙ­xýöNŒå ©º ÈA x3–rT*–VüVzÅTYŽ¥ÃR]9žKUåítXª)ï¤ÃREy7–êÉ{é°Ÿ­j‘û9}_xF°Ðƒ®»ÝJÛðL©þ O)Úð“yJÑVÊSжï´@)W*.bxAÌØŒÔHŠÅf3 B˜ËX€ò2cÊú©Œ¨~—/Lj9Õ ÇPn·o›•® {GÏàû›yi¯è˜~P1l;†[H†£¢;-Ø9×öŒÎ3€Ýs\m%¸ƒW¥n‰ÏHM,îô‘£g*^ü)kkKòÙP¦ÖsÒ‚Æ€ªù‚Ê`:œÌ>JfHøXMmƒ~"¥Öí™Pg¸®íS) g®™Û¿ßŽ?K¤Zó¹Ð-3€&ƒx)ŒÖöE"5ÚåD0jªµD0j +R^ª™¨K7 Ï2Ú6Ëíy©1o™¶]yà¸[N%²~¦Äü$g«µaXùz?Ÿ§_CÇJ>_,ÜX…¨,î2~áà˜;[®×%@Ww]"PW”âð€À]ø áè×/ñ“Äãá€|¼.H; 0®~%dFðOøy˜t Éâ~’øœŒ1È÷¯ñóýއ à&~’`™ ÿ Ì7B3p±+úV¨Èô;F‘uƒ6ÂwøIÂxs»çÁ¸¢¢ÕÜZÊÄìº dÜZ£Ý*"P¸5îôõ`Ã&0ß ò%0÷i-?¬ˆžÍhû T(~&0?)(öRj~ÚƒPZ~œ±4À'À AÇ{¨ ¦j9›†mQëj Daã£xî ¼³a%iá'â~¾E¿í´ÍŠÊ: Á:#·D¾¶Åº¤A!`?©+œs3EÈ|]ÅÏ×¹¯2/±&('2{„4¶Ýu¡mHˆD¾[‚-‘ïÐÕ8±“½/¨8â BÏ$DYÌN£(7DÖh D ¡)™PJâ4\ü|/šg»'(.S†²óPh,†¯Íº’…óÕX)L ølÄ€¾àK˜Ø‘€l*A(š-H¨m™j(‘í$Qdžh¨G 4r#@ðS8*"Ÿw…¦Š\òÓsݵ»q<*œÕŸ…– <òQUظ¿àç \Åq+æFÛìva&)ôWüœÉRˆw+,b (ýwAœ48$¿ 4($ÿ: ÈßðóŸ%þGæY˱ß4ª¡g¯Æ¾³Ú5W¾T`¯Ó7«¨gcÊrÕHb’D›ªQ”€" °¦[ê}Ä)àBh`+"ò,×kÓ:hj -×Xöƒ¥È¿¥ ý–ö0T¤$޳ð×bËKKZ½¬·zïñÝV3z¿n—y½]Ö«‚hójt9ùÐnb×oÇ…9 Ç“9"S@(ü vªnM ŠÃgqJY¥¸^Jú³‚%ꆃk¬Ðæúè5ì´#u“"ü‘áÂÝšétÇÐë; ÕÌr¬0I…Ët”ÄòXþÎFÛµ«>ô 0 xØw¡,È—)Î)’˜M# #Œiâ<©®7Néz“Ôö¾H' hIÕhpÕ3‘·®Ûo«y›ñ6=ój`;ÇyvØ1a¶V»·ßÜä¥úY7¢ïd#<,œæA²cÎÎÊA²³Y8;ÚA²³3<;c¬ÅQvÎî';%IW:¡(ó HwBÙúR£>Õµr}ª±RkjZ–ž()ª öré÷K2ùHœ}·ïu¢þ, ¢LW ß:%Ñ<‘,RÕp2»%}’×hÜ%Ga¢ ãϰ«ýþ͵h枪ž" s¶»5ÈÜØxñž‰3"]¯òy£j§ª«;!eŽ n«pr:§§*¸ºÁž†Þ/ÑÛïœ ©µ+úmÏÖ~ˆZ»®6bÜ1Û+E²½RÛý³Ý,’ífal?1Û»E²½[ÛN‰ÿ‘:ÉôU8?»ŠHEÄíqr_6Q—{‚²T,É\s‘‰=8k7 §¿È0Éß))ÜfÞIþ"E¾DïHDR$óDAOÿQ}"~©h©%—éDg²%¯yn¿Wm›k–“,ènIñË0´™ËBƒÄ™½PQÅ9f²Œ Šq+œ|OçP¾‰AÞæÅAìÀZ §Ü±ü¨×¤Šš¬Žëä(í‰_œÔ2˜S÷ê·ÊP9¿.%ŸPù,[„ŒÊ¾i¯jp©W+çš‹µZ­VÐ[,×VÀrc%s'ïKß@Ÿ×ç!Tý hTšçë@oèÍZJclB ž<ß½‰m8k}c-÷¸ý¶D È~¸°À„¢^?F«E%k%“9Ù›<¤2SSÊFÎ÷Té–ÚQƒKþ6µVÏÕÖÙE7®hS²7ˇÃo×# »¨¿gt†lÙl’#Kv<Ïv„WYÛŠ6î…T“…ù¼Ç]2G5Qx?¬ßI§j`?€l‚Øð ^—$ŽªŠ ÉÄ+4ÌZúlp)³ê¿HE\ކ4…U…É“ÍÐAÈ¢£·¦ËRgH-Dœsä­ú$æßˆ™{ M]Ö –ú‘W&¼ž “Ô—r)Cõ*6¿*)¬þi=Æu£$ó¹Ió¦y9"ðËIÁMlÛÌ… É^i<7å)ÍNÖ'Ø ß"N©øSf“ !ÀÝZ¸¤<ÌY3•Âr³,ñ׌VŸÕº¸nNê´-Ǭ:ý6Ô¢%ÐHD*ß”ƒÐ •@±Ç6ª|·©oÍkÈh £8 ÿ°Ùóð=\õ¨é+pÙƒˆ–[TãNŠÉÖCø£d1™§R»C´êR'Ó¢ “‰K”f®3o¥,]ú{±8Ë×7Áªaûfè{§š¸ŠGÑp«xŒ`âJ[­òÕë7®€×o^Wn^úæòõ›×´V „k”jò•BǽÇbcû§¦¾^nÕõumè]”êjóÐK¢êï6–©¥&j˜înSÃß¡‹m˜Wšh¯N ÁeÐÅFûb³±x¶¹ ÅÍQ‘yhÐ[uTÉÒ©aMÚjÏJûè¥éB‘p‘gé©_Ý^:<9 Õý ÿLNæ[V‹„‹ªa ¯¬†i¼´¥áRk˜  ­®pµ5ª.¹FѺkô=\|ÒçÏ'¬‚Bíð~[a¬ä2vìzy[_|öô¹]½ Õm±òióñbôÖ¸»½øõ¥&:. á0YÑô-ôŨ<ºPùe±òy«ômK,ç뾮Ƕ”Ue×-Ümµ®Ü¼ÜjÍ*fSûÞ+ÙóÜ5ê a§TÝžOê_3B++Nž;`va©h8T’á™.Ïa)ž{…ãy‘ÃCºø¹í8š/ ÕK*TÂQQ¡Z.ÕË*TåÂQ½" Àæ¶Ë»úVlÆ…á{5ÉÞ8«'QtTП‡îéìéwÁvCï•Õ •«ÍÐ{ª6ÌvdþW˜4KôuEþª"ÿ¦"¿©ÈÿR‘W‘ÿ›"ÿŠü¶"ÿÏŠü¯ùß(òQä?Vä7˜|ô{OáÇñ-4É'Rèè­÷}8{ÇR¦ôÓŠf‡~ô¾t{úÈeD,>£dñ\!,’¾à¿,fe}:õðn–÷”›#öƒyÙ Ã0?™Æü}¾Ù²¬ß?€V'“ÿ±GÆ‹3Øsb°©ZžTTj-¨y¿oØí#·òz+ÿ¡­öVèã¾³~—}iH½•uö\ä?‰ŸåååFåIsº^FAG †@ - }yçëp>]ß[+£l6²5Ûmö(H bLæõ¶ }tÁZÜů‡¨zžÙ‰ïšR¢à&oQå‹W®]¿ —.KV~Þú.²ô.`Š÷ Dkú :˜3|…sq…aÏ` ÿø}Ïœºêï¡îy†XÃ7’1©{ÕõĵÀA5Fë¶Vü¿ïØÐ/‚-X1ü˲M˜Xv^$*gq¥$ U`å”›ãÀõ˜e³ªˆÄv׬ޑ ÑÕ©pò$Ðá@¿[ ¢«¢ S¶eø üÿ‹9  möpà€  7ü+ðvÐß}Ï~â…‡V v,Óî2bz;4V³«×a:\!i­Y›¦£×ÅѱØ$=ßìw]|SsŠõ½(ëñæßýx®s?ýf) _ñ‹Gñ¿"p,_ñë*Ç¥JáÕÒÀÛN¢@s!:ݯã; ©>Üò­æ´ôÝD|ÅkÍ{‰øŠ·Š‰øŠ×Ò÷9|/óøF¥¦o•$îŽÕX&’NÚ ›´GZ¾×;ÇöÛÓÉÜ2Ðn ¹&s´+ Ùçn¤OÝÜÌéÚbj®2{"ÕW WôJ°|rƒiªË|Ëó2ÒÃûc¾32Öÿ½I™Ì·Iù®¡˜²Kée§öÜ·¤fGwìeªç)¹Gµ¤û{V¥½ßƒ¤r³*µË ²s{PÙS*•M¾q…‹ºÙ­Çåt”3¥¼ÎìH ƒUs>ÏY©}ÁKq_@ÇÑi·c¼«è ec¯©„®B6Ð#_Œ%’¶K~ÞÓùù’ª­ogès¥‡Ø—–†™Ñ¤Æ7Ô|(Ѻ —ÈPú÷õÒ—‰Ž˜‚*G¿òSù…»­…’Ï0‡fd+÷%y†e#ç},*ŽN—¼Æ¯óæ*˜±á%‘áÄÒ™Ò¡®êj~ÔEi»ŸªíûJN//9#´Ž´kô÷_:^^é<3:é {½¸ŒÌñÑ‘éìKcÉŒz1¿-„úÃC}öàPŸËº\êOõG‡úã$Ô¯ÊP×V’ÖSã±7à0—‚* à׎H\¸¼\s5p²ôùZxe$ü{þ©À?wáî ¯eªyd¼‘´{Ç诡gÚŠ>O *ÂË,ájÔ2¨i`%J€ @RWjèöO€þ¦j`êIêž¢Ž»%eù®“‡2áPž'C±ôÿ” 8£¥ïc‚KåëpŒhuòàþVßlõÓ/€'`e%ujFø·ÒP£©ç¿ C…áSÃ^¯ÜÈÉÇI7[ÂÙ´ ˉ&±#0ó6Ç0Sl9é/jÌ¥¨¾ðѪOÞàF2%‘÷6PIC^s:1hUô_=ÛÜf6Q jõ“ν šL,–õÇšÞ](Ÿ†¡ ¬xinþ6%Ãk[g„ÿâsú¾ô»y“©¬p¢àz˜ ÆF¹¾¤ß­ëÍøîáaîÎSµÚg)†”ý<†Ï9 $à\ݺ¯•g4ÝoÄGtOW'õ >UiÂEºíÇ‹‹»øøôên³9?ûôܬð‚Lhgj{HbTÌô6:p&ýºåo&x3.&ZìÜÒ˺~úT3oUô§7‚…ð%ªâ×ø¿P¡*~»Ä² Uñ;%j*ºsÁÕ&‚•$ÏUþEUp[›;\nÌ,ê•É}¾ ÊÐu볚6?)ÿÍL®ÚÆš¸\©‡N~2ÃofF=ÖFcrm›Ü²ºÁúat‰EXE†Jf&ÑþLˇò8ÜèZnû§Ëß|o^Y½ºv͸йäßî9›ÁöÅŸ×¿ÜøúÑ/sM\Æs›pœ vz&‘ÂÔCq—$À•ÅŽ¹îÚ]3móµêÎüV‘¿«Èo©šlŒõ\Šë‡„kâ3Ϥ•8…(´nQÕ!ØÿZ*¼Ê¿$à¸&û@С”3èV›ÆüÂãÝzL¨2.~ ÓwϨ¯‹Ì~+¤Ê¾ë‰BP/Øq;Mè&øóîÔŸÂMðçåÄ=›àÑx e¸ þ*CZy œ‡³÷À©pæ¡»‡í5pè:8 Wâõ*X+ ÎL̽–À4¨4îUëºÝÛŒ;¥ÅŒ A¿\Á{GÁ³¥ëÊÍ4½¡4Dq!W <Ó Rç9Ó!ˆÜj[€Ÿv¶Ú¦ ÖÌ -^¶Ï~Õ»½B)/p-ò?D)£»« áýPÛ‚£U@Ó4Õ¡)ÀèË*M­þzüBS–Äi7NÒ}\·GS°‹Ó;1B]R^U…Úgª^k2WVtœîMj÷-; aoÜ´õ:!0ê[îê@1ðV|#ð[I?€2e‹Öì™~Î~¶w0§µaÁ@ÆY#_ÃBCcòÚw¯ï‡üedy[öóq)ÿÑ(œt3JF\¶]¶¸9Ç}´Ð>AlÝ~/J #h¡JÑ[ä¦ÂôªgšL’v™æ-6(gh¶Jèk¦ò“¯ü„¹²tm Ö;†‹(Üö}ˆ¾eáoØåµ8ê…ìÐ_râ²x0ŸJÅ37ÜM³5@66 ·ÓTò†s}F£H·V¨TTÃb¬nEº”%¹áýÀµ]#¶¤ š("ïæ¶LíMåÿO®òÐÌr„ä\²‰Wº ÉÁbø’jæuhŒk&Öê[F´~½ÝÇQºÕê¶mš­yïZ^üµy7Úzœ ZˆQÀ‰$zkCwBëGµw:qšP¥[¶Û I#–¼ù¢Ib ›„psÛìÄBƆézhjƒÈ®2 JE㊽»ml´»¸sŒy@t ‚S‚Øå÷¨¹ý “«Ôà:Äx‚8…kñŒØ’Œ.šåß2Ø—8ÒÀ¶fSßÝI NOw¢€çÁvÅ”ú=c‹tW,©~L •ˆ¿ã£Ö¡/pQ ÛžIL/ÂÅC_{±rŸ¶ Ï)Ò(ÿUR÷ÊÎ. kzÀ(0è1± "ùØ„¼£üÊ{Üײַ? ~s¯Ýçô„Ü‹AV}èµ°¶=•·VM#è{&íW‘PcóÃïÔ¡ÓÎNÈ÷åù>Û6qÙð‡l–ÏAÀ1ŠÏõølwõá­¨od³LIÇŽÕ Ë¿µ¢Ñ…/éåq«]ZçD#ŸŽE­‹s£1K,R’Aeж%2%m‚sM¡ÃDËõåä Ÿ+j»¨·Šï‘ÞJá<®(S¨*éu}«ŒW £ ^uøO)—Ã" €ÏAšUKúŠãECargo Build Resultssource.build_resultsÅxÚ…‘Ë E‹5>îü]´6·²áCJÛЊ†¤Ðè¿÷Qhø¸›3É̘84³¬*A¹ÄÑ»æcVªŒKË©¥oXÆÑgÏlÐsÖ–ºëUÃ`Ýóö\)¦ûÖh¿î»üñ¿¢_ã@ø´­e™@˜—ˆÈbŸ¢$?NE–"ì"Œð&ìϤáæ% ^xËž×|iIj¦T§Ðè_¹ogZÓ+ƒ¯´g\¸•H3Rì@pͦâ1{pÜw¦7uRustrs source.rust escaped_byte\\(x\h{2}|n|r|t|0|"|'|\\) escaped_char&\\(x\h{2}|n|r|t|0|"|'|\\|u\{\h{1,6}\}) identifier1(?:(?:[[:alpha:]][_[:alnum:]]*|_[_[:alnum:]]+)\b) int_suffixes)i8|i16|i32|i64|isize|u8|u16|u32|u64|usize,xÚíÓÆUI€¶P ¥-”ØIœð5ÊLˆ¡|t]iéÖmµL&Ûr¢!KF–ŒcíþÝIºOÝY'YÐMð‹léÝÝ{ïÞ½÷îÝ»óK#¾N%÷yËó½-+ §= íZÇrÝ­Ëw þ:!‡RÈ©,È+r:¹Ÿá ÛÖÐéÔœ®í…Nϱ¦ê)Êm×ï<«uü~a è@d&÷Ïxè]ȉ!DÝÛ¦Jî§@)ÌR˜ÎŽP˜“ûIÆõ‡£À®µýî.…ý(¹Ÿ•¬ÀêÛ!Ǭú% Žè–¸zG î8_"ÕGÇà >IîÇ8¸ž'0¿þ\“ñá¸0AàS `Bý ©üöü o…µÀz™œÏäµÇD`,8àmÛ³8>,oÛµ‡P޽gõ繊ÂOå*FXp:W±k¸Øï¤òàôn rƒsF:(ûV'ðkÑ@¦ g3A ­_d‚ú¾î,(ì´ÎNÍØ²HŸÓ/CP:¯_†àvA*ML›AjVè° ©TÅÍI•¸L¦/J™Øá(ðjáî€Ñ‰óÒJ‡¡Ú‚¾XÈ‚$Œû* ’°ëR$‘ÎÅ,Èë²’ù{ YÍ‚¼!—]ˆ!y¶/K„uÂZǵ†ÐˆRèhÂÓšT¯%ÐÔ0ÓêW¥†,)Ž.#kÙ°‘Ë€a‘PAÕ²+EåŠvÒÊUí"D–® žÀvއß^|€-ÔÏAˆ_ÿ^è`«Í ßê†Å9fêkÁØS7 CÜ,[ʽ€HîØŠ4!~YÚ‰½(d•1Ä-_ÞÏÂPëÉûfHùàw·“ûæ]¢n0ȆPùSø]CÀ½#íÞº$qjðã»Éýcþ5Gà7‚ºÅ0ö«ëtœ¾' ÷´…!ï |ñÅP’;vE¾>°‡k`wk,¿UÀ°Lü£ Ø=×·h+ß \L3üúOÉý(}ݵ{Žç„ŽO(ù^$”¸ âQºš4Û~HîQ žc? ƒ/¡E$Üx,ð=ñÂb¦f~FOʹÀ‘f: ô³Ð&ï'a¨Íä~Z E¼) þDûíÀ ð˿܎^rö‹"´¢cþ*°:rÓØ*þ–ܱéžÿ»Ð#ØÝÃïä3z/ÈFSÖUf̈ŠÀ¸îo‰È@¦n3òõTPFŒwˆA¶’ûÉ4Hª“þ!…å=; k ¢Äyt¨-(˜È­VàXm—PÚt&k©ºÉ;ož‡Z¸#3¶€L¤&ê ÂõÛLÛ‚$ ?ôQ-`Gè^Á?Å`ŽÐ½éáøO¡ûƒ<*¡¾†p“ûñ/}Aiò¨xOâ·¤_À4ñ„Øñ5Ôï·a¨ç‚ªJùk0Æë{a˜¡€UìÖ› rÅòv$ȕę /’ûKƒ¿¦-ˆD{µ7ò:H¥D>Ðj0†SÆ”(<¤èT‚øZx’­Úò<ö/¬<ª—Ö•®ÿ‹'öæ*•Fþošƒ×Þ´š[ÑþùñMk lqß—«f»Z­˜•*ieZ‚:ºðDjM\GÆ.(H¢4*vŒ‹4~ôO»ˆÍ£¸äÐŽ8ž@µím‡2hŠÌ¥i®¯åŽ.å›ÛøöÔžÙ»/ý »Š­X£l¶pÉ‹™Œ°½n\ ¥‹EsÖ [ËäñŒL}AÚ§Ké?™°NËš1«åL^>eÈOØf%Ê‹ÓбnËÈ®×qCg$ˆ[Ž=bñ˜RÈwO·Ylgc—|52 «]¿3B_õ4 ×I¸kÌ¥5ÜÆ¼]ê`­â¦ÕŒ^>!Ezß¡y†³™«ÏG~hw!oGH°Ø¦°##¸4·¤…ñâú­zC9êãÑ#qq_৯8JÅ÷¾ge¶~5ñ;ò!Œ=Jã6²;onUÍ–éµÀBµÊ%âäü…qË¡rgä*wz|M…lÆnEd!_ ÒæÃ7±u>-Zgb6Ħ~»œè…!¿2EöC*²+ÀrúBÀû‚ Ñ]dzsZ¡)ìÖ/˜^# ºÎË[Dº¹6„s“²亻€Å:Dl¾ÑT¸ísRÕ$xIã0ù€©mè¡ CQQñc ’1òºòR_çSN€ñD¹R¯šÃ%­éKöšÛÃ™É C6ÚÌöÐv{f;¿J[/ª=÷`‰¹z5›ƒèLçf¸–Îú-½52ÆrõÚÿM^¶É•¥Üm·^оñ«¦§0.šWËt6Ì5·8 ëÕ‹{å ËÐŽ.㯘futߨ^C‘hÇKG&:-¦:tlƒµ[›2»¥ÙÇÞ ü¡:ž½Ék¤~¢7(Çá)œ“…pá[9F¡*8ñ;CÑ[O ù5ŽH±Ž§{@ü8Á‘…ÐJŽv7õµ°Cf¶áµÿØK AÃpÇÎຩâú‹q·Çì?&—veÛ­wØvu’¶ ðœúA¯éÝ’¹C„¢Cñ­aØ*C}Æ¡‚×ò*PšO—–[JþÍvÄõ1k» !¥®#ÔÛŸb'ÖeúSû™ó¬d’i9³Ú›)¨Yé`¢†p’f¾f;Ê€þ¿‘§ƒz½*ˆaÚJlfY‰è*8;!åg¤JSeZ³ìëûÝQÞ¸pÊyùBÒ™pnÔw¼lï冊Cýqú( ,'Ô5eUÍ9¶7êO\³¡§LeUPTýPñügÅó?³x(äBÕ)5&§c:ƒ®Þ•L”ª% 4ó.Xø˜yHçÿ¢¿kj- ˜ìÉÔšWÚåL¡'p3¨D*˵WLc£6Æ|NºÀ¬m)÷(íFœý]ÌÞIJ^%‡DÅâiSßFù_ãƒÌ5Cqeò ‡pW@n®aDêe…¾ð¨â,jœY•þ”òIÄ"—©-èm¨x+/6(AUei{Ý3Ô©*¢LX'^µ–qU1ûª‘“#y¸ýLʉãsåÏ7óЫr·º É!y•þ(èØ©¢lÑc¹žGWiŒÞ)#ç\!ÌÑþAy§aÝŸ‘XYæBÃD9’º‰ ª‰;ÞóDL&¾ÝõG¹x[Ä*’똕ƒ¨3ê¢ §oWæç°‹šÙÁ“ /N‘ÔŠK—Áü©<#—Kðʼnf» îèÍV+ù€Dµ ¿"aÅ àt‡¡å…l™ößuZig+ªÍ¥µäAÒ}³´2-ÑDïØÅ£áŽ™ôȋҠòŒ½z=ÛÉà‘®‘¶ò¹’uêFÊó?§¦b•Åid$qFñ!&ùE9òZ8fgš*s[ó!Ë–ª;:mÉâæk­3pãj„$”i nIž…¢T¾‹Ô ÜìDzf.5çÌ¥Vó©¹´Ö*’<«nzD†'l¯ÌFE žêUà¨_Œ†Zóé¢i¶€iV^™;¯¯¾@.ƒ‹`>­Võ÷Hpz0 ÈÌIe<’’Ù&åƒÂ|8Äðáâþ%ðPa±ÙYÔèc02_ÃçWVn¼Cvø$dHéø0ªùTCñüvªÎøÊÎeÎä"Q¨`\&V¨L."Ó)…V} yv¿ŸRêóuöôæž¡*¬Mý(?§uäVì׺ð~âÐÃ,ÍÚééÅæ o7g”#ó½Ï=bŒ‹zRâ-MžŠwãÊ?…E’Ô(x ÀÊ»HFU±ýc©J½”wcßQÂãJ‚ÀîUóGÈoR[–3D>g.2íWµç:=;túö˜üÑbÆd’РJû~cä°ªE¶ukk͹r½á£ÒÁ»¶VfŸäágÝñÄPéû¦÷Y$t`‡ÕA£.>­"gF'‡Å¥ ,xïl¯PâÐQ Ç›Ùmš]ú¨6Ì®¹ ÃMÉw4í­ær­ÕˆŸPÈj¥wí*èݸ^%;I¦f:í ‘¸æ-ÎDGŸHõšF±µ3Âà\x\Œ-@k—“•Êj5" kOÓŠI­„Qf;Sûà”Ùbê¥ÌS,[oŸF8d:ä˜82'cÄØ…Ï w?àE§8„»«èðA•áxdäP”tH™dA”µz•l«÷ƒ¡a2§'ïB­Äåô¥ÖÜ$¯«ªâņ™Jñ9ªªËŽ—3.ê05ç öOŽ2…Ó ƒª: Ä´—n'ãË¡=çKþ{j­>"e†ê–»¸\8ïCGkq–ˆàÿ¥‘¾¡éã¹}§ÿLá.xU•^ó³›»3Û üþìNêkk]?6°5ׂA2?Ø^†Ýµ^?\;l¾><; ]€ewâØ@£ë <âc϶†®í:}Ò•¨¬6šëO[Õ_¢Ùì9®Û²\gÛkE‘K'©»9$ æ|CÚ|sq~1†¸Ü#ؼ¿‡ô› j#õþ¥Ó w0Ìj LäT6h+«‹³ƒÀî8C(.¶‘ŸQeÈ'Bu@îR!¹ I,å×êØ;¾ÛµƒIœ~²Ó<¨Væ—ª Ð~‹@f(®LS‰„¥E“OŠMJíÒ2J˜­µñ™6X]¥—áÿÄñic\DK²ÙnL:ézñ}{z8ŸcS<ÉËñ^@EÒ]…ÅÞ¶\à úP§O»d¿‚ºÍÓ2L*º>çpªP[»šOgÍÐôÌ…Ûë[Ë‹•êÊ¥ºÙ„AbªDÆEŠ÷ NÉû Y4KCÚÈiCÑ%Zq‚úrÞxbû¿·[·ÓnwnöËV…~‘<¿Ö¾Ç»ùÞ¿½rùw«ÚšRÞ>Xuf¢LB~•ö"ˆÁ ÝÿXƒK!«S¢KÎMà\¹¸ràܸà$ø_6Ý#øpŽàÃzjöªþÔªBr"7ôV;N?ñå‹­/D×7””˯šæZ0Ú‰ïe“TÍ"iÇ~e•DÖ· Y~óríkHºµ’ÏeÓ6ŸE›ß Ë¥ª )¹Su¥•|.›ª…,ªÚŽg»%¬qqlth{¾ê{»À…›‚Íêd{K÷h©ì¬!eF¹“Ð/äTJmäKCqM¾.T.¢m»øºeˆ¸å³,ÙÛ…Oë.&Y*£®ÌNW5r¾LñU5rA쫌Isª'š$«°²8ÒIÚ\Ð;?û£Ü C³†bÌu ýqË…¤{”æÜûàêÐ⡟Nh_ °_ î¢/`öCI9€k-}€:„!å¨*ñeoN–4ÒqñÔþ$iŠ›dŸfž`IáM4ž[A‰˜Ì&µq-¥%‚F:ÂT1‚rYÍ9KÈ@7k©@|þ¶ÂòΓٻPƒN_‰D~§xþtL£ÜhÄg_çŒâF?áȃ –åȾÊö~_—›3Š*Á÷féñbaÓ«vz‰ÐR4æó ±Æà8Ne±ÐùÄÙ&ëG6æZmÛÐ~¼Ã”ëGT“Ö£vƒ(žæwÑçü¹ötò©2ÄcsÓ:Ã9¹Klä´¤“„ƒ¾db·ÀÉ;)"K·ã·™3í•B•™`˜ët=yw9ò¾WözÏ‹:=ÿžàì̬LOWKÎÊÄ!•&cÁ÷ ÎÊYP‰O°A_¤GÆ1Ü”CJÛãVTÔ:ZAµí‹Q|JFfÊ?·æ q¦©¨Fäí ²OKÉ&ç÷Íhþ´?™(|eÈü ³–ÒÎ=‡ ¿â «üïZr†Î Ü¿rFN5Ô‘3îDG.q9E9âÚ!ˆâ©ýn¢ÓÉyrÅ!RSɱÑÐw´ ºr™DëÈ2¡L trë ŒJXE53©Ê*@½‘Qí0Y$£YgÐu¬hü¥w+*F4SÅ9*hm0ò†VÏ}ÿ…]p­òKZiZ}Ä9Y0òoƒhÅ-ïTü ­°ØÖ3`»°*¸ðœp}¢ßa…•;® ’ƒÙVN ­ ÀwÕ‚ŸU«YjÞàá1J„5ŽÚþ+ s³­Ïi5/œúì.~D©º~´íŽß·ßë í~Πد к |€„Þ`7Ãï]°ëØnt}`¡ÑduBge°RØýA£[ Z‘ðRšÕGñÖíÉI=±.GëSkNDÆGƒ„ã½\™)äWdb±e0Õ脎|Åó;,;æ;”çÅÛj´(e:ròZÍ8•I•—üu½êœö6òB£”[oqûø"7.Ïqô½ `¼Dß?Â*†|€(%b.ÉÒ2+í‡h¦§HizØ0ÚaÝ=° 6ázØŒÔÊæ®×÷¨šzðÿи<ô{|ã¿OüÇ/=uÏõ=üd¡c¹žãOƒ.€ßÐíîðg»ÿ¢ ¾óB< ü>¸o÷¬‘ Ÿ„±’ …m#òì~t²í¯kw8¨á†äÉãb1ØDJóG„ÍÏöUýøx`Óu:ö=ßëX!llF*ˆòá[êA%LŒ¶*$,>¿©x¾Íö®"{F%uCU¸’]ø/Ä­ï.©Ôâ3Yãº+”z¶9çÁ}ù*Íu »^ÕxѶY_i•Îä+'›ÏWÑ?ýiÖn¯o\sÿ¾ÓX^ZûêéâüB ˜í­üþ Ç I×Ô3'¦é°æ-í¤Y΃“jKð†â¹£xî)žÿS Wç*‚ãC ¨Z7ºXUø9W˜YÁ»¥óƒšT¿ÿðWò"GîuÂҼǧ¯WÇ…èYÖ«:w•Cµ¤Ÿ5Ì‹DêÀðò$¨ð ¾šr³¡0›§Ø‡—‹Š‰«ˆë#J~ßUªƒ‰ÏõžD–…–Òxóùx›8tç7m·´³9Ar^ iø.@;§at1ÈZÌ`Ê-ï&ÿcZ ZŠjç:@M#}‹Å+»ßÙÂî]ÊÈäìæØZÂùàM2uM‡tÐùÀãûUJŸ²³”%TiÆÊs„)±ûð fÉ޼›Ã–ËÉgÚ#ãrÅ@Žî¨ËŒ%}É/—JF•éݲ.Ϊ氛#„{xLj"⤕†T‹Ú›7Š¢ý¢Rí^äSS÷É¢úÆywÊkÄÊ2¿I"Ža4\x Ç´Ô‹‹êÃávÓ+‰°x jß7›•jGü„u‘w ̀ANÓ@¯á«}–&š‘|6?ÿC}6ÿ#„ªá³ÔY™ò.}‚9ûÿ›h …ë☻5ÒèÚÉ¢„z¹‹'Ã~š¢Èãö âÊhYY1½^c]?´ªØW ¸p…ÊfÑ­:KWÈc²1²§& ³Ìô÷"IJ³µNþâ°%ǵ<ŠÇÖ:Ü.GÇò°½nÃ…º](1@!`öžbÊ@zá#Ž\İð#ÙA‰ŽTR¾èÒ(‰€%!y“`°×Ièãs °› .QŒ)âmzPßX~+byØO(4 °`Þ1î!Á0À„À0ÈŽ,Fò%Ý.¦‚_ÄX$ ®N >“2ÛÀßrΖm±¨N‹b^çÅku~m›=IsÔJ ¡¬9mÜ̉'øâ,¢:•÷Nôs•ô@x£B‚ð‹Vˆz¸¥*é§Æ¤¿9&ýô˜ôý)ü¯KåÓ(þÞ¡s½Á’½b HTL^Wô[ÒÌŒ}#*%Ô• ] .<5Ó‡ùé¸C䟺"ùYI¯$»Š`þUµ8©še3ýûR´¡ÚˆŸH¸ÉÜ4a´[ÊcJ‰+ ¹]Öh|tC[ôœØ33·á·Ð #ÚCA“ñ¤ÓyÜ„ƒîÍ5õ¶ FwI–´N A\Á]…p>îÇHxħp XÇ—Ž‘NzÒ²tXL±G”£`¥É…•kei;¹öÃ]ÑC€Ô‹B|!àõ9ñEŒø±ˆ#9ÖÖ]@{"“‰ |É.˜âg‹BØŽ›+›ô`€×d ,9ï«û¤¹Ü|J‘P:s‡"z=™ÈX‡A±ÉžÚë‚“ðB²„'“D¢D(UŠž¢Àv,Ëñ—m'7uËpc׉ñ ˆñi_ š.ÉElÔ=œ]‚"{âøP½]YÔ5?{]sd1ØÂÃ}66$pøSŸW&’ða@O _@|<.kþùqsíc‡µW†», $·3Âáa”pHoLÒ9ì-¸RÝ0>kO€ÇSøûD2û´ÌŒ£^¬Ú&ø[[¦ÎK¬-É[ȃän2Ï[°Ùš ú _7DRIKNýª‰YGg&Q½ƒ”¯™2gT%Ð:Ì›c`Nˆyk Ì÷Æ ½="ÿ™10ywDº{#ÒÝCÆÙ1ã£Ñ8/Ö@ׂ@Ž)LO˜üˆbØ¥“uò>$æ²@A% æãC£_ì Ôó$–Ù±ü œw"”¼É„K”2mÚ¦VZRØ‚"’Ö±ÂOŒãÂdsÜQlRý~YYN,:ÊB•$9VVŠ ¬§%,öð¸ÔÛò Lwh ‡® Ô'!Ôôجš-dx/S{‰Ôœ¢C£T.ΠÀâ´­p˜{!"YÂN°p1?Ã8(ôUv2oIêPpyÀ Œ€5¾€%SJžP¶€Í1:••Š·¬2TY‹„!¤~FŒIG õO¨ƒrU÷˜©;+À.¨| ºFHjÐ'­ë!‚¬‰¥b5eN[´ôû•mÅ‹ÝÃÔ e·Ae¶,”ȧç$ŠÐUC¿ØÑ]Îö¶Ád¶Äªk‚YðƒZY/!í—Åu1´7Ò0î\¡>1À-8d(íåžð‚@nêõ 7ÜÎáW†$«eIºÀ‘guÑaêÎaiË YâÓè7"J ¨Qòé¼ÀðN‰! `ÍJ0ÙQ¯¨&ÊöÏKýy¶Ñ!ã*Ì×3`½ éÁœ(¶ìyª©kÙÓf=oÊ«[ñbç®ñ€kki]ÍeVjÁVê¹ßBZXÑ_Ž gú ‚Ý7Úý„VÝq£€ ãg% ëÅV{Sl´7íaX*XùnãRíj*³WKF±1Zª¯>{þÍúgâÙsñL<¯ &¶‰%ìR0é&bE8Ëbu¨D=hà ÝÚ8µ~êËzØØ}“è°½µo «½Õno¿Üí¿·¶ví#õ¸ï‘_ëb—ÄqDya=ë¡à’]_æ¾ñåbóåáÞØÝÞ»íÃ]hG?“SÄÊãñ·u<òib°ùÜPòåÞ&¨·'U„ë/·öÄÎ˯¶öÝçíƒýí½/ÄÁþÆ^{Ga{W¾z5¢šé^t™ÿ\^Úåæä»–Ú¤pܼ[®[Î6ÍŠÝÏ-rꯨ=ƒŠîùÃêq*©äƒòÏeÅ]Фâó{ÂO7¬xÅrìêÅzúárÐb]W¿âÞ/Ã:^ |[ªÂT)øpèÐìs@i½Q@)íëtµ*ƒ­ÝZZµsÒº‹\þ(‘+PZ´kY>=­Qç»ë’`ªQó«ÿÔì´¾ï'«AðzšX Îw¶õõ?œwß,Ax½³ÍtŸiÖÿo쌳1 e.1ÇúüT«êÔ þÏ|³üõu±Ÿ®Ÿ¿.ö·Uaüèúæ˜N˜ÿ怜©Scalascalasbt source.scalaalphaid!(?:{{upper}}{{idrest}}|{{varid}}) alphaplainid!(?:{{upper}}{{idrest}}|{{varid}}) boundvarid(?:`{{varid}}`|{{varid}})disallowed_as_operator[^\w\[\]\(\)\{\}'";,.`_\s] escaped_char-\\[btnfr"'\\]|{{unicode_char}}|{{octal_char}}id(?:{{plainid}}|`[^`\n]+`)idcont%[$\p{Lu}\p{Ll}\p{Lt}\p{Lo}\p{Nl}0-9'] idorunder (?:{{id}}|_)idrestO(?:(?:{{idcont}}|_(?=[^{{operator_character}}]))*(?:_{{operator_character}}+)?) nonopchar[[[:alpha:]]0-9\s\(\)\[\]\{\}'] octal_char \\[0-7]{1,3}opF(?x: [[^:=<@\x{2190}\x{21D2}#]&&{{operator_character}}]{{operator_character}}*| =[[^>]&&{{operator_character}}]{{operator_character}}*| =>{{operator_character}}+| <(?!{{operator_character}}|[[:alpha:]])| <[[^\-]&&{{operator_character}}]+| <-{{operator_character}}+| [:@\x{2190}\x{21D2}#]{{operator_character}}+ )operator_character;[\p{Sm}\p{So}[{{disallowed_as_operator}}&&[\x{20}-\x{7E}]]]plainid(?:{{alphaplainid}}|{{op}}) rightarrow =>|\x{21D2}typeid(?:{{typeplainid}}|`[^`\n]+`)typeop“(?x: [[^:=<@\x{2190}\x{21D2}#+\-]&&{{operator_character}}]{{operator_character}}*| =[[^>]&&{{operator_character}}]{{operator_character}}*| =>{{operator_character}}+| <(?!{{operator_character}}|[[:alpha:]])| <[[^\-%:]&&{{operator_character}}]+| <[:%\-]{{operator_character}}+| :[[^<]&&{{operator_character}}]+| :<{{operator_character}}+| [@\x{2190}\x{21D2}#+\-]{{operator_character}}+ ) typeplainid,(?:{{upper}}{{idrest}}|{{varid}}|{{typeop}}) typeprefix(:)\s* unicode_char\\u[0-9a-fA-F]{4}upper [$\p{Lu}]upperid(?:(\b\p{Lu}|\$){{idrest}})varid)(?:(?:\p{Ll}|_+(?={{idcont}})){{idrest}})withinbrackets2(?:\[(?:[^\[\]]|\[(?:[^\[\]]|\[[^\[\]]*\])*\])*\]) withinparens2(?:\((?:[^\(\)]|\((?:[^\(\)]|\([^\(\)]*\))*\))*\))xml_name[[:alpha:]:_][[:alnum:]:_.-]*xml_qualified_nameB(?:([[:alpha:]_][[:alnum:]_.-]*)(:))?([[:alpha:]_][[:alnum:]_.-]*)k xÚí]É{ÜÆ•‡DÙ–d+^dË‹lK¢(±ÑT7eÙ‰mŠ‹vÛ‰â$¦8i´(t7š„…Úš"M0q'“Õ;›³/vNs˜Ãdæ›Éeæ0ßÜçðanùòLa©BU¡ K/)UÛ"Hô«ªW¯^ýê½Z^ýY ?ODÏ£ªi™KªiZ®êê–Y骶ÚÑ\Ív–Nž“ÈOžDOÁD;¢çœDqö;£çceCu4± r5+Õm®Ä)Æò¦@Ü슞'S¸ë]­¢­umÍq¾îÈŸ•sgþ4§`š»¢ç2a5¯UšV§£™.Ö»óP#~öDÏOÔ¶ÚÔ°<÷¦Q¡¼îN£Bµ¹'z>LP5} 4¬Öz¥­Û޽/z䃿è$°ü“I¢ÖiïͦEõ»/›Õòþè9EÒªãTtsE³uW5› ½UÛXotWW ý-ÍŽYƒ£’•Åš«™-§âZ×4³¢¶]<“ýd‚*+^(*m²P2¤% #Ãdz§kÙø€#§’!&ÊÌq ujÌŸ¢©—]ËP]­UYUm/1ŽNô‘ñYa ËP;–ZÁÔ«âÚq™UJ-¹É€´5œÙi¦­’L§8Éx˜Ëø)æÈijŽ[iö|(RÍVÅÑŒvœäý$@d[ëéüiŒŸ¡F†0 §€OR½2$vtsÙHMWÕ8é§ 'E,>˲ãÚ 1&äçRÉPnϧ’¡7“J†à÷t*BÞÙT2ºsL uíõJKwºd[ÌgÓ¢:/PƒEH»ª¤V€Ÿ:¦ÜgФBeep"U\̹œ P ç™ Ö:FÐÛz£çjT0Ý»3*ábÎH[.1ÃOô ^ˆžû´†ª‹3þbô¼/AÚ±Zâ½=¡K³´ä· üöÓÑó.ô­ãª¶ ¿þLô„žEì÷AŠËF0ÝIHüY:;§ië]<»—£'t—« g.ÊçsÑóœŠÐHùyJø,Ò~âÑ¢r_¡¹#Ü5HµHI<4^à·¯FOèÒ! ¼FáåsA²/RªÂðµ é—¢ç=8i$.Hó:M³¢ÚPé Í—)œÎá'Á¤_¡ †I+¦vÝÐM fQ£:×3 j¬ç»2TIuʶÈð`²+”=“Ë}ƒ‰—(»&Wbšñ«Ñs2g&Tr5zà&¿®»¨k5¨!€MM—Ѥ:$Ëqƒ´-ÊfaÑÒùkLd:y0y;zNKNs±Ì”¤°îÞÌ5-Œ¦f(ÅŒÎÔlFš¯7¢'œ}¢¡ë N4ò«¾å ©´¬^XlÍ­y &èP¸‚{~ÆLdjèÝ7L9HmQ£–æ4Õ®Ö‚_w©Z¶#k ~ÿ&…°”‡ Éìèy?FF8ŠÐaäúD~.ŸÌ¯"$ëEOès@H¾J‡œÖ„ë¼d¶æöÀ(H¾¥µ%«ºFu¯Œdt©ëTK£ä¼®ñq~ïØˆž9ÒÐ z”fEþ1üz“2H¿R}5z>¨R\Z˜èk”Ò^ÓÖ¯[v<š½MÙ²\¥- Å”¼ {!Ó!³ÞÒ”ÏVž Èòv¬-ø””ªŒÔbÕ¶ðïÇú¨6CáX‘†Äퟡ*MØVšÛúQ4ÊÙº üÝ$¨îÀ4G™ÏJpN/_lW³îM v&ª;` ¤"a©&_eiñäQ0òl¦`R Œ&qBÓ¦L*W[V3Åp½ÂîÂK†Ø¢”§a¦éZË¢UZ@¥3Êõ)ÅAJW…#7®j¹`2ŒÅ#x•°, Y¬lœVë5Å™½o³^V6aöÓE²÷óÀË å»HÉw?S¾ ‰Žq$šÞ˜‹xªÇQ/]“÷îÙ³§´päð´RF¿ƒÜd²zw]`g,kÀ¶Ö›4‹…¤RºÀbršF0×ûVm«×í—Q¤]GS¬¹°„œ–%“Gf{çîËyx KØ^<òƨ/JÊl3þ¿”Å¿DÕƒèz‘×Ê7ê Ü…h©4Jz[V(ëT´™qøè®mÕ¶a]‡e²«uÁû½hæææ=ß\yê©M™¨+—ûy¹(›žÒð—•FÆøû®ÔçðMŒán"ø¦´€+gCÁoðïàtÇ çÔÿ<„«^°†Sõ§wîGiý(X罫.ça&œW¾óÇ3$ã/=á®Åp(²]¢ÕB0‰¶kf“î`2^Íï`jØ÷×`<]oðzeóz›Q)Y‘=1ƒ DÅ4ºGÓ¿Uj4a þ‡˜œÙ®“3`èrÊ3ræÈ w#§-Æ]“¥Çðô¸(}î *ÍÈ€uIʲ• tNûð@@I~£)ò‰¹z¶°žär@z`vÕ¡g´P•@kȬ¯>ÈÄ8_w¢ö®¸ÜV¯8å­3ÈPøP\o¿Ó*æieô™º?-Ä?b¾F•“T·Ç%¦€gg¼ù9Ó jX½Ì‘á &sôlHÒÂk}Ë&6kÁ+àƒ"=fŒÙÈSD¿ÂØFh׃tƒrÛshER:4W Ì_Sm÷ ÞÃL€ª`u´©õÝÁÒ ŽGå> ¾B$¼ àsݽ#Dûu÷Æy¹lcw;?±åܽ/Jýâ;ך…ÆiͺACµP«g+aµž?¹éõ²©Z1|O-£÷Û¡ïnÆò|„ƒ! JLJCèKƒ8%©@AÂÁ ¡C`y„ûE³mŸ;YØqbBJb 6lGÆ>ÏÌÿ§Ýrý/Ðf¡ ¨ïÚÌÞÇAÚ™¹Ù3p؆VÉÑ eÿl¶ì¶æ@šù›ÍÃü Rös˜+±äáùi/oÖå /?me@‘„\U­Wm†¡0ƒdº(äÕÚ»ÉÔUY©ÊSUªT¨2Í8ôÇFI;>ÝPáÁöu¬ž ·ùUµNCkµ´V¸ä†×üí±™±1çC>©’^ð7 ¤#÷ž„„pF¶ ô…¸Z[`ÈSœ ÿû8àc@pÑRèFÅeŠõ7²;â`À/Âb²ôõáuÉCÌÖmFg—-tì$U» ó±kÀŠ|¦>òãóüp+@çq™‡B9`ü}œÀÿl³Û¹ØM;ÆöêI~ü«ê›=ËÕZUðG× ör'؇; ¥W° VÚg+—êÏ$úŒÛVõ£ËªMs\º11¬#½¶ú‘ñ¼ñ."öG/ø• ãV&+É„óñ!²š }8Ý\U ½ÓFa¾Ò‚t©,3+ˆ ä·%÷›,Y€öJKL¦©[:¿cÛO÷p±~mM6–§É¶ŽÆö[Í]Û«²Z¹È0Uh©èôŠ˜ Û3XQßðîA5œó_à$ÖYâ,FÆ·šS¿,bÎÝx¯¡ìYœB!Ca<.åjknu­c@¡v’«.ûïa‚B4ƒïÓ˜äaà8ï?$kMɱÜ`â³Å³¶>’†&„0Öé Â䈄пªmæäH7|ÎÍQVPhM±¢2Ú€?Ø •Ê|ZÐ F,.X ÂLz”ÔžiG³¥ꇱz}¾¿æf£GÆ|ÏP›w`ß‘¡4 ~ŒMu%Ë)=©…Ÿî»_ü;\”ù'Zjôå&{­òÌtìew€RÚzyÓEžRîæt³<¥„ §”{ú1¶<ž 3É[£{]bimž­Á¼Õˆ¥Ø >3Õànôœ÷¶ *\^m÷áÌâ_¼Æ©Ì!NeÐeï7¹BŸÈ[¡ÜXº7ÆR¿¦:¢!<¼.(¾°6ƒ×{¥~y‚÷N–¥ÖpͶ=>©(u/±û ¼/ž­ovcš}ÀÉÇå"‚E˵ï‚Ù+»+3a!º‘ì…Æ•{Ä"óÃ1—`]uUë³]Ûr–j-ŒYx[!\ˆíX­pj¸I+Õ£.íu}·Çv„Ä7Šuțбt‰«\Ô²º'hzZ®–'’¡ÂÅðà0[x¸µâçe%Z³ãm,²Æ^xSHÑáÁçvÜ‚Èë‚?'D­ˆÙ01&fÃÄlØ(¦úk yJ*$A+Ý/”6¾ƱŒ¯"nðy;Xý°~< /Ú¶á³t¶<à‹ƒ¶çÚªîzVã `ly ãËkÛÞõÝÐ<½íÁ¤r4Õß计7AZ;œ†•ô¬UͶõ–&³/íM$¹m bÙ•]È^u‘gJ*P/ ^@ýH•ïä¸)”ŒwÉ<þ§Q¢U?Ä8•‚7œû¶7b öt: ?•BtÇ݇Ž: t2:ÊÌÝá20}6œ{ÕÃ#,Å–’w¤§Ëy˜·øJu®É¦¥kýò„¹)UªÔnn>À?&L`À^LÍC½ƒÇÇóôè Р·5|ìU?FµnpÐï!ú£—æàŒbp˜±D¼ð–e°«ñêYÈú$¬Y£‹µt¬íÕ÷cã^ÎŒŽÄ-Ð'ò’Çßì¨öµÄ>öý¨î—ÕN£¥* ?¨ìɧÏÛ¤Eš ëÏ1VŒ ÷–X´EÜÏ”bJúè ^þsæÉج5¥z´ž?¨<ûåw8-2¬KAˆ MöÅõo[ö¢ÕÑúÁPΛŸ[òtÔFtº …³Foâï>&޶ «iûè@–Ñ45ð-ì¦ÑØMÇf†b9ÕfŽ&´z3 Íì0ø™™Ø’c+ñðcO=@Á&¶—9v~¡€åCœ@;‡¯…û¿ÛÙS ÌãHô„±rtÃЖU£jX¦Váä’Q¿Ýœñ?×]éТ9V;fÖ¹ m*`8tT×õo©¥Y„ñ¨þ/]¨5έ¼è,ßn,¿Zóü9•ñœÜWëµ_ºf|vñòËÝ·¾â|á\cå¬zþËëotZÚ+¯Ú.5ë ý—u SÝäèá“JéD½ ŒE [àÙÖ..¿ ž 2² hYk¯k‘þó¿Èh[“@\c/x>\ ~‚À.ˆs>L×£¯¼ÙÀE…M×®L—Ñ_ã¥Ú•ñ°+*U¹<ލ”2ø¦ Þƒ!úÈ4©•òtð¥<^˜Ìô$–oD¨ ØÉ+PG_6s\»A–Ø”˜ï!s$|·€X™7•øáY䴳ܧÉïÑ~v$«ìdÇ™3E®ñá…YcfPçºÄæV ¨³*õÛ2ù¥°Nd|!f0LpØÚ|ÐDü/3.!±¶ºð×ú~°ToIÌ„õtÙ #¸×<Ñ”ŠêeßÕE(P°-F§¤ù”1çòŠèÐ(”x£Dˆ.̸‡¤ŒÛQ á€,c(•ûfèþ˜!S»š÷° &\“'m~™ÃæT? |þ^ž΃ŠÙ¿m´fJ/J¡pLc¸Zƺ >‡ò¢–šPС‰8hƵÞÚZ×kÙËK'Šh11 <w6[s{¶é¹+¶u=åN)Âv£×é&œÔãqžšáÑŠZV¹Èa´®kFË.ns¥˜©lúù„áŒuϵ×sð®­5µ.sÍ$Ž\ê¨MÛ*¼z¥«,øÿK‹¹OÚ›XÉéÔб þdŽ23¾WI¥MêÙI‰3t}£€þ±/Ìö,ª…¸dClZ‹/bÓÊè.Ù(p¯øpî<!pO¸ +ý@ü‹÷# ÞNµ0,`xë°·»£,X° X€É&Ë[¶lØ2uI“& LÚ˜$—…÷%ÐH ‘@£z_J)Ä¡Rp/ùGô[Yñ7‡ÿ¼âI"ô››÷`e¨ÍÅ2¨ÆfŽ„ž’ Ì”ïÆ R®ã…+åôu¼-°Z`èæ2u/k¥˜¼‰÷hV†>yÊ¢wtà°¿ó†Øº›è2 Æ]q Yáë°îB´´vry<åê¦è|º8~Dg&`e'ƒ20*– vÀEuiä:ò,¾ÌP¬•‹Ñ\Œæb4Ñh.%7õ@ ëãXưÔÑæ¢jÑ'Š^ÈÐÄNò‡â!¡­ú{æÌža€³§1Îëg_Qø_pw@xô+ýS“õ)¥>ýÚÅzÍ?#º¾’jíK­ õP¤¯:AL ÜÔX,êBÄQÖXÕ§«nö:š­7ýÝjR}žÄ-‘“µµ×ëØ™Ñ©šq9à„VŠDæ+ÚZzÖ~î^í)ÀtÀyY¦³~’—µnºÚ²ÆT˜nÌv¬ž"¥¤ì§£·v|Ÿóþ[œ÷ß“ò¸; –Y$oÞ=ÌïpÞœ÷¼ ¯rÞ»wsòø)ç½ÉyïpÞ¿Íy¿ÉyÏ ,òGÎûqÞ•óþeÎûË}è Íô^]\¡ oá¦0´S‡Ç"§Þx}éóx‚{¯ž–˜ÏÞðúŒÔ¯t?؉ð_XŽÂrÜ*–cß6¿+ôYèóÖÓg‰6_xãnÑ¡ã“Rʇg¼]ã¼_,0 {„/F>Τ˜u³NkÖ2ëDOÂPAsœõN£ø4ù>œ`ÐÀ•ÏÅé_3ÁRÇ9Ë24Õôέ»šw~Eµ½ÅËv½—L×»äÏ[x—-sÙ»`õÀ„c²ƒXMèÚzGwõU-#HÆûDE,É›K2³¥Fm4øˆX•"V¥ŒE¬J«²ÈøùB͹39…#pS81ƒ`Tv '®UHÄѽÑ`FÕ9JßTêõ>ªÝ%ÐN @;v7í>ET¿wvðr9í­Ô m™‘5~kY3ƒ½ mY73Šz–( ‹ª\aR †]æ¤L¾Êþ_ åÉ…Ç/°\xü·´ÇŸ=Ô¼GÙÂá';´ëOˆtòþB*°v:Џ°ï÷Ã1¢ù§l}Uu5Ð6‹SJÝëÚ–«5]­¿¾¿Àž 3:VKoë`õ$Ã˧âbÕ†ãú—v„Á=C}kÝs4ÕÐZžÞézÓ?N²ªÙ¶ÞJ[>A%²Wm2dBDË„©ÆÇÇairº jàß〛§©žc*è zž(ž‡)µå¨Wl¡ð.å;@Mª‘'mèT}±Íâz†àúß`ô]aÚl/'uk+Ùi6Øû]cËò;ãÍÏx³Ç˜ÛH÷øÏòúx>DÝ.vÐGªòmæU û2ï‰ä¯¯ÅîïÒm©9@mF#ÆÛN‡*Æ[rô£=|tÌÿ Æí¥BE­¾ g qèT8@ÛãÐ)Ôå3¼M$qÈ$ŽÀß–”2µ$‘|UµU{ÙQ¸žáÅÛÁ½=Úâþ=çý8ï?d¡ÆxN ˜b]ëÜ©® Lpšv1%¦ïš÷BBÝ4tSËQÎ%)åCÌÔÁɳÙ#• ü¢”ÎEÓêA£b6x€þ‚TÀã&Ø‚ËÐ¥ãÁåž¼Ì,ÕÃ_üqüU­ø;Æ,òŽ®)+Sré´L/|£¼¹¢ú«ÙÀY‹†,À9w¢ÿh–¢LA;ûOÚ_8Á»Q“)µóξz6ÞQWTOy ÷"ÁÑXà´o±„m@´EÐ2˜×‘ø_Ï/ð¢dꆡ-Ó¡¡¶*MÃrü@™®ºp‹Z¥Y¹4Ù«<éRôYC"¤óØÏ0‹`]8Âþˆ6ŒÇ9«,€Y2,ؼX-׿'êþFº©i!Úš£Ù«Z«Òµ­fEÊfS‚¼„©,ñYoaibDp£…«­¹0ƒ~©!Á7¯/¸ˆÚkz@Í/ÍË;9Ò€ÑÎ:š«Bï»±Mz'=Êg£å"XHÞ9¿¥üƒséï8Z‘djXmŽòǰ²féZÒ™tt'@Âx´bä2ßo.Eô—ÁžAz Ì¢ÏŰ¼‹Ó‡e²†›óTXž«U‚~éÿpºjSÃ;2|Ê‘HÆ2‡b'‚(a¬ ¸!°,º®ée÷ª:K/HÊk¨ß 5žh(Ú"¢åϧaGBŠ;û¯ÙXþ?ISµBourne Again Shell (bash)shbashzshfish .bash_aliases.bash_completions.bash_functions .bash_login .bash_logout .bash_profile.bash_variables.bashrc.profile.textmate_initsource.shell.bash(?x) # ignore whitespace in this regex ^ # assert start of the line \#! # shebang token .* # any characters \b(bash|zsh|sh|tcsh)\b # "bash" or "zsh" or "sh" or "tcsh" | # ... or ... ^ # assert start of the line \# # literal "#" character \s* # any whitespace -\*- # literal "-*-" string [^*]* # any characters except "*" mode: # literal "mode:" string \s* # any whitespace shell-script # literal "shell-script" string [^*]* # any characters except "*" -\*- # literal "-*-" string  call_token\./ cmd_boundary(?=\s|;|$|>|<) extension\.sh identifier[[:alpha:]_][[:alnum:]_]*identifier_non_posix![^{{metachar}}\d][^{{metachar}}]* is_command \s*(?=\S)is_end_of_interpolation\)is_end_of_option [^\w$-]|$ is_function<\s*\b(function)\s+|(?=\s*{{identifier_non_posix}}\s*\(\s*\))is_path_component (?=[^\s/]*/)is_start_of_arguments [`=|&;()<>\s] is_variable*(?=\s*{{nbc}}(?:[({]{{nbc}}[)}])?{{nbc}}=)keyword_boundary_end(?!=)(?=[^\w_-])metachar[/$`=|&;()<>\s]nbc [^{}()=\s]* reset_and\s*(&&) reset_job\s*(&)reset_or \s*(\|\|) reset_pipe\s*(\|)reset_semicolon\s*(;)(?![;&])start_of_option(?:\s+|^)--?(?=[\w$]) varassign[+\-?]?=xÚí= {ÓÆ¶NZ(¥ì !‰±ä°µ¥I‡öv¹·{{×Z ȶâ¨8’‘d’…»÷îûú ßûo$kVÍh$Û ‡û•éÌÌÙæœ3gý·Ðû½—†íØw ×òW×Lßjܽönþa ]cÄå1 ¨ax¦Zwšà¨ð:‹Ëñ$ å›kêŠåz¾ÚX5\£á›.îa_\^¤+®5UÃmy «mº¶áƒ}\m\ž—VÃu^ˆËã‚:Dó¤ ˆòƒRÐôP\¾ÂŽ¿˜‡º~)õ{8._NÀ‘4IƒB}¾œ…z<*dŠm¬Ñ’|EHDŠáŽ á:ŽG´‡Èë 8ß*X h&}MV W9ÁHUÁ '… ˆŸ§„ ˆ™§¦Æ ÎÚši$œá s£cØžåØ*ÏZœeº`ëDtcðsL5<Äɰ ¼–±bDþš B@ƒéFR›• ƒµƒðy}°v /ÖÎMØÎ¥ÁÚ¹õ.c§ûlç ØÎåÁÚy¶31X;oÁv&¹ã˜ÓV•)‰Žv ÀÛ¸B1c¤DWD£Ì5½¨Fhcpû%®³ÇàR‘A"¦eHSg¸vvÅqów•1ƒ1\×n4ÍÆv«Œ±£aLL›h¹ÌåïªéšM§á©ec­Þ&šŸåVh[¶ Œí[v×ð)¾]ãj hßr͆ÉÐu€3¸ÊuƤ÷ªx¾kÙ-5¼J˜ÕiÀm§aØßd˜D?è:¾ÙT›NP¬š^Ãè˜<{w‹küyà:od¨ã¿“uÞä²ú¡á†‚4Ú–á1¢‹ ÄhÐÛ\ŠAí.û¶éþœiÿ¼Ùâ…¸„qåÝ»k†e÷•¸<€Þz¾áúðõb\ÂXϰ7cñBˆ* ü7„XŠËýDùð帄A' Ú!À;qù2 Eìê]^3$ÀwÆü°Â{ ‹q…U«µÚÿû„}Ÿ1FÖC®‰xõA\!á ¡€@Æ%œ«€ ¾ún\į"sßÅ™3Ñ€°1Ö^0—àÇåK pòI\eAÂðÉA÷)£½ ¾ýŒQ§ð-]ÿs ßÁÁ4ç!È—L#º§¯8=…~¾ÿ>c48q8ýãZø>„þa\žc¡c›lÿGqyAZƒèæÇÌØcuøú'‰×¶ï:møúkÆ{˜vSuVT§z&Vè5f|¢0hŒêÐnÏÚCX] ›0>ËŒ¨™I»—Ç`qìï1C~ãÔ!Á('°ƒ uFÔ¼X’fe£@GÜè³ÛÁ*͸,¥Uᬰ¾)äÓÑJ\Ž‹Ùn`Å–PL¾ÕÆt•±82„V²!2|…`ß0CŽðý}F÷ã ¾nÇåaú5å¸ÖLHbÚ I A8‚ÎH£×a¼$´B¨Œò¢`•ÄÛË3< <µuÕ7ê¨Q/.§$ðªí¨‰aïÇå·rOñÕu0¨“U»ÌÈ¡«ò:{Ȩq"V‡€ë `"F‡€qyQ¨:áÈꨆ¯šØˆlÆ%Ì*’Ù#FóÂw„2l1¶/z1(ÙMÀ¨Vb›1Ë`>á;þ&Žî3Δ˜|@ŸÆåÙ$ˆr¸ F—ô+?‹ËÓ¢ ´µÿ9# ܲ.j÷©€ øË¸|•Ú# ÅrÎÜ ‚þ:.aXCñ-3ò¨ú ¨7ƒ@¿e€7y‚°¿c\w¶F{—ß3£9ÓVþC*n½I„ý#ïÞä¾ý#ËÄÔ þ™é’Œcû†¿¸‡bÀ_ãò Ô4m`KÙ&ÿÆ8¼ØÜ.­p¤+@€mÕk8x`ý=.O27:Žë³½üƒÏ5c³nªkŽ‹Zý'3\‰ ,ù3úb`›ŽÝÞd»þ7ã|È9&„ùO\þ7.Gµ†Qn¹N·SÆZÙ[5ÛЂ*#¬ÉA«:”©ÔMíÃp¦²¹goË^ot’{w6 ± [c#öÇCiŒ€øi:Dh2¡(ÜôXd(ÚjÓK¨© ˜ß–Æ\¹mØ­®Ñ2ËÑô9nclP‚(áXªV´’BÔÃ"%û¡˜AUþJ^ùÝB,G¸l/ÁÇÐûÞ77×·YŽ'*åpz]§á1·ö.£t?½ßerÀPÆH½9Q¯W_*ËýX÷_V_j ª‡ÍQòzËßK=f{û˜$ì$âÉœæÍËŠªVjÚú¤ŽŒJ‘3†Å³l+ú+š08ñtê ˇ‹ì€Æ-õL®œÈ1€+òávˆ’ðQ\·¶ ¨Wõ`2©‰Þï ÿ¨°vŽà]ÃwÜrχ"§y2º{ óÑ“R˜—ö–¦d|„£0{\]²ô;ʵåH²JºdAàÜqºÀŸcŸ>B´C2ãûœgŸ*øˆaıÂç‹¡ Mš B'-ï}‡ˆ‘Û‚k™ˆ‘†ÂÏ-/?O³Âäd÷)bÐÜ«Åù’²°¨yz )RcûÕÂù„çŒí=Nbeÿ@nZ6¼@¶³Yš7]šWJÕñÚ|QGxŒŒ0]ÁòŠÈ`´–xVŽ34f Ì€CDZ ò®Æe]9.Ûɪy².:VÇLë¤X”wrYÖ‰Ç$îã²!tèl‰ßDc³A…Ž˜Ÿ3%-ƒ Bçíu;á„Ç0 w$}#`ÜÎùÑ“&³ÿ²KŽú{ëvÌQ³ù„gÄCKÉÒ·µÅ “å0½^¶»ku°^†~Ð"ÈÉ|íÐÆeŠf/y…†›ÆJËõÖo²¦°`‹—ÒpD˜sîT5i¶/^Î µx•ÍÒ-†“:Q~¾Kg¨WÒ¨—s!cóIrÝŠÜ<æ‘lŠÓ#›$ ÿ.ûòjÊëFã>PÜûy‰G»ÇF&<òâÞÓõvK@ädÌ„Z:Ÿ„«_¥ÚÒ´®TK³Xn£¹%¢i”|¥D%мnÝó-¿‹qÑtûõÂX‘œò×f'¦ô y,$6V%ÙÒ¦\Q3UÛa£~®ZSg*U]¨I„tº»B41¥% ªsCWÕbªª†«uåºÙ²$Ú:¾S¬%¬æä «Ë$€È9¦ÉsGÄ ÿ1Ƕž":¸âÑ:±SüÝ#<•ôÇ>_’õä=ãÒ)¬e£}Ñ™nr;ņœÙzÈlŸMq…¬Áá-ÝP;½’f!i—$]Ê·Õ2ZÊ_Ö3'>lGæ{Z|­Qsb—YZ<ÀðwŒP®Ù£)ã‚$¹>ìe\;€½Âc! oçùðÔ`îfº`$X¶ppË«æ†Ñ4ÖšÑoN¼ÖR} ~­³“Ë~h´­fÙj·ÍVOVª¡‚þðî—„“¤~È!•"B’œ†Ÿ›¤}·ßÖÙ9—[ºI¡åELKmùšú–. çtÒÒö5ņ1‘MO$q]qÜÁShìó%žþkuËÖêlʈÝ.#0ÚÒÂZh³0Hcû›åp{“ð—&GÈá8]+m%Wô²XÍ‘aË.ÑéÙMy³èGæöé-*¤hIñœg©i­$ÃÑàr~Fïø a“™ÐõÆAio_¹·‡¯ÜÛ·H’TKWØuA’1þrñüÙ<¨i¥šQ_±]ÿá•ËU=¨]Soë[ׯÞÜ6´Uð—ÛÛA£f¨ð²ýEÖcØÛÞÈb¦ôvE–{û4“Lí„ù}Aüá™FoGy&‹Yn”Ò[•@Ø*­£ƒ‰ŸmûRšé‹v}b¼^P¹)x^%;<†™^›ÑÔª^­ p $9ù;dû°Í‘TûV (m4½wüU ¡ánÍu0!0“é‹Aé>'¢;Ü4@­¿î(ÒláÏ>jYö—†™íû&Xx#Ò%”äHâæ Îç™ ð=€ž¶ )¬<µ0?tTûy²§â².Ÿ¤ÍT׆†ŠµPû$Äõ5b#Fóæõ¨¬ cÐ8yN×…‹9 ±ï­’@âOð•4`ªI8ü4­Ü—3ÍÃ臶”´`ry&\=SØÉ¡dx–qšÂ°¬¡o-ëx4³™Ž‘<(Qì=Œmoi~¾X æ‹Ù÷³X)®Yv4B£]Ì©©aZå`´zÉôŒ†¢Õ¥H¼Îjuú¦‚Gýr æ´zˆ%ž eÃ…çF”amO§ °ïç V2ȵm}hxä±ú«­¬XÝȪ9ÜX'ÈÓYÌãHŸìJKl‘Ͼ(äT鑨ÈÌ¿˜§‹1ͲýÊŸ’£Šè G$Fe÷ƒ%ì>}ï…Ä—¿Ð7mIÚ¤ûÇŸ uûw^9äéb?wŒV+Û £13!aáOÉÊľø0ž®ózP,UÇ%ÇZoj™…Ž=àœŽ sú_‡¡;§—)Þì=çôãß ]QÑZ!)•Ôâ'›ð<g1Á2!±Í䂸÷0‘ÄœÀt›í)Oé;l{8„Ÿ@¯X,²°Íó)ˆ vž)úB(˜mÏ!‘Ê ˜\'$q渢FÏ Å»šòuŸ" s¶éˆúíbj: zNÍÙB.6h› ê4Ba}Õj qxM€CT)‘åÅvmßjçm4ª”h3+ÌvŠÚ¼$h3Ê’æZz–=ïpž}‡óì=γ)ÖžÃÇG¬EH ×U¨£Ù\×]Ó¸Ÿ—ÁQ¥UGâ;DS *•ðr›•š²=_ ô]È ´±"x.Š«ï ž;ÞÎB“è€h® åh{„gKÚ$pÀ ^…–º?˜Y„1hcOêqì+E¼øçl¡_ÊQNi >žMÁˆ=÷™%¯t.nÜÛ±Tž I¼Vàr÷^Šô‰Ê,<=ßÍŠ~(U4¥”jS3*1åK´Erît¥ƒ()'“EâNÖÎ'Ͻ¡*ɰ8$KkÎìY¢¤çàGH«UðÇ:Aè¾½E¨ðJ§øHɃ. ÞZ±à„1ÚÂm‘ sÐøÍEwn:³opÚ'6e[rýÌw¾nˆfðf&ó1È`§ bV4÷0+òêài’²ÚäÄÒøãéjo2=®­ïaB%GŒ1¾ç) µÎÖÇÛwõ^ þøücú’gß8K.½ÂwmŒöÑüõœT²«g·òîÃæ(WL³}\Ø ¿ ß3ÊýH7›ŽòrH‚mô#û-MëÕYùž¼ Mä©2xƒ¼‹TpKÕ ÿ/qkkáj®Í±Rñ} Ú„6Q ¦¦ª¶¬-Wƒ«W«C¿vá’Há°¤SwÕNR4ž!)‘Þ°¶_¼÷ù#ô%Ñ#c»‹=Û]Æ›F¸G·ïCå /ÈŽ(ÌHHöplŒ«ÅµêôÌÒ¸žmz™7¦Ý™f‘"ß,ŽoBÉ‹'o+kMtŸL·Á£á¦ŸiÆz¥ øI½%6Ysj8˜õì·2¥à̹• º¥#£±¼ƒë¹%­¬Ôjs!Ìœ®‡ÿ’j–ÂÕ x3VÃi‡ßêJ[Fº’©D4F-ñUHœ+r”o¦öh>èZ¶i7LµÑ6øøÓϾüJg7wŽ2¼ì+%Ÿ%À¢TüA”f®¶8~`>l3hûAÛ Z~Ð2•=JšV+š‡ {æã‹‚+PÐ¥5pÿ\¥R ÆÁÿ ÁbÏL‹}Û‰<1§í«…zOuoÏé…;Ö”ð¤B|9Írmv’¼Œ^kê‰gútX¿þ‘ábVüA4Ç¢™ÍïÊ|Þ^ä5γœg–Xê"ü>¯çOÞÛÿ“S²‹_ö*ž[ÿOÌΫ`¹2†Rk5O/|¶ /¸ÝlõyòžºIâ’}“Dü©ÐÄ#¢SÄ]毖µ›¥p—ì¤Tà5É[ÛT¯’Ðû°ªÙT•pâã§úÎ}“™ƒâÅ_Ðý¤(“ œ†vƒC‡Š`|=&"0(i73tŸƒ…ƒqpTÈ©[OžS·v€SYl µ€ŽvÊkµ{“—5-‘ì_L¯CO»GtÕ®Á%Žù}ëÉZ[ý[Ü>ŠSƒï fÓ*ŒrÝž6™þœÅrîRHwLרþQ~KË(µª@jæ†ï¶ét=$½Hj‰MsV¨³xkV{·Ï78 ÂˈòܺÑ<ÿw˜sïpLýDB†ˆpsv·Ïòà&–膪<áð?žR`»NüDüú‰DRoÓ’à*ºÛîç‚ç?<ÿµàù/Ï%xþ‹¸S‡"a" $„§•Ò‚æJW„gÀ+Ôöþß‚¼—ÒlêŠÕ6Õ&ð€®ÕñÁ‚$4ŽiÙSâƒèü”±$çœüæÀ>¦®†eKÞ ' üc>çÙzA.ËËbY^~.˽*K…+KM“ïhÛ÷ôHr"7•aÿB˜â !ë–§HpÑ“rqšáâs³G­ÒÃþDùÜÁ<¢,ñDùÜ¿ Ñ2Êe0É“Ás÷B2Ì•2‘øIg•‡†‡G€£»ÂXáž)¤Fö·Rzˆ¦pQÙeòÒ›|¤ž¥I-V•pm?ˆ¶6)Ur‰|›,µó“EÜ|Ìõƒ‘ÑóoPÌ_\¯‹ÅjP\ ŠÕÅð^Ž XT”ÞK‘D ›§F*cCE‰%ôjºŒ‡(¥£””j ‹Ì&òÝñ%oäAÇu@zÙã‹b8ûÓ¯r¸Ñ} ¿<ÿ£àùoÏÛ¯;CK “WúŽ] "Ý( ŽÖåá£u³o´Ðý`õF¬ö§c5Ôïíæ>Bþ­aZmò¹šÿ# œ³¬ˆäukp-Ú!÷fßZÃ†Þæ¢èD‰Û²Pc¢•?ØHâÚ6ÁHÔÿÎyöOγÿpžý•óìÏœg¡xr•"9ÜÙä™~Sx ú V~À«Žà†©5§IžAÚ%âÿÅyö7Šø ñæF(¯g‰ÚPÔ^¤¨ ™:v{óY¢÷ß½ÐÀ}[Û%üMn+-méÄ“š²­+UâAEþEÁ¼ˆæ7’y¶ö½•§ÁÅ”Óá̯³ç¶lóØ \ÆE™™>þ„¾+mø¹Ê- ´tBÕ5߲ڶëw7ô™ £<=cïäܯšþ!Â!qõx’«+öSÆKÞOø‘oZvCþGdUÁ•ÞO‡)¼Ý·)<ÁlÏš^ ¼—[Äø·©>÷c**rÅò\€ÿKh§ÅShell-Unix-Generic source.shellexÚ…ŽA €0 S+zñ-~Âþ£)(T…¶^|½W‰%â^†°Ùd5]j@k7¯†Þj7eóm+°y´5ÉR,¯p£ÌRñ§Ó¶ÇÑ÷iò!pÿ[¼©ù[’ÞHuÌx¼4þcommands-builtin-shell-bashcommands.builtin.shell.bashboundary_begin boundary_end(?=\s|;|$|>|<|\|)xÚí]÷ÜDWÂAè-@I b‚Mo¡@B‰Cwµ¶â]I‘´v ¦ýèGï½÷^Þ{ï½ÝÿÅI+=i4ž7rÄN4÷Yí/âgÞwÞûÎHúŽ$þT‚ߦáq’j˜Æ’R­Ü®ÚÝN{Ww{—êhKv˜¥$›àx7F£1t 7C ºQ¦¨¬’B½Ñ‚ ó·ð¸1ŽÁ«†Ç ¸®W]Ý ­Ç¥4"HJDÐ$Ưdzñ%µZÕlŠÖüÔB‚Õšáq ¯E _‹?ˆ]¹µù"*%ë¶_D%¢jë†Ç±Ô¬šÉô¯—ÂÄo£×ç‹¢dÖjê™nÀEÔˆ`µaJ>ƒ&1~4_eÝ1ûi­nÄ´!XmÌEÐ"†o’7ÝDïc(^Cá1vS>w­ÔcR£ËÏhЂˆ°­ðñ1x?ýš¡vU5ŠÐø”!„mJøù ZÄðÍSFܧVÝo‘2bƒ'¦°_®•¨ñn™B§Ñ‚ ³U ƒ'¥u®'µ69­sOáw^¡Ï[ó—”Jò ¹ q«gÈ©üÕ§[sMËu(6müÕ'jDPÚ–?à°IŒŸÆCêôP¤¶ãGZŒÚùõòñ1¸#…ŽVµ(:Û§Ði´ èìBÇÃÇàùt–š]tÉvâÓ ZtvæÓññ1x>^½Z¥èìʧ´ èìÆ§ããcðîü¥³jv›u—"´І ´'é ZÄðéü‰VS­Š>dAß‹?Ñ¢FDœ½ù™ ›Äø}øÉ²lÝp+­}ùÉ‚6«üd-bø~üK.«Ÿ¾Ú?¥ÿþäµÐüëcgòkk*Mæ@~ ‚›Y|qûø|uje€UÛV(NóåG4#ˆÍNz£QÜâ´nÝN^ʯ\Ð"†Ïá+ÃÑè‰=—ߣAç0¾2>/I¡3`ÑZ:1…N£AGM¡ãácp_Üõª^ÓéùVâÚ”Ê|q-b¸ÆQ½¦:½§ _Da"F7_D1º‡?Ýê†ZÕUZØzÊ0 Áj)¿Öa“ß›bè©¡š’)ƒ>9ÔR2e$N_ýê9™ü1-ˆ_ß>>/ à'.YRSuþj‡ÇQÑ_Wµ]ø³Á”#ÜV€¸áqý¡Æ0Wë²pQÀ¾ð¸Î”稨?+^ì±ô\¬x‹ °ó°â–*`ÿ/²Ry~x\{ÒŒ0 ¾)À.ÄæžïPè"ŒYd”òb¬,¡A ¸K0v °K±ô–(`ÿ‰’+—¡cöwÚ™ç0èJ”€¼ œ€»«G kðÎtR×b‹A%Zñ¯Ãºª$Wüë±i^!Wü°ÞBop7b³—ô*|6{c 7cÙó@Ý‚-2$y+6œÐˆÜmhXÏñÐíhX0y60w'Öwöt62y764wÖwðt/62y64w?¶´.ÀÀ–Â2ìƒÉÈ*äCÉЋÜØ°IoÀ`ÂŽ=A€>Š >pÝö6xÂìãØà#ëO`§%ÏcÌ“Ø |>>…ޤŸ<?‰Ì7¬ô 6„ÈÐä³XýB#pÏñzlød€|><ŽA‘ ÿ„Aºv~ËQà¤ìEœlhÑò%¬‚ÞÍ`^Æ*7]|cÜjìUìŒÑ°Èõ5tÞø:ÞwÔØ”Š6€¾‰G6¾…Ž·ábìmlî–`ßÁ*Yi€|nèUî=L_¤wà÷Ñ,Ež@?ÀÒÞð¥õ!Öaìô#,íàŒðclð(}‚%22Âù)–ÈÐÜghXÏiÐçhX0¼ù60º÷%&²ÀMØW˜Èk °_c$#K ß`EnøF€ú+rì`ô;¬Èà\ð{,=¡7¸0y“^€D‰F@BGnKãÏx‡ôâø :r#¹<þŠéÌw|ôVÂÈxäïX"Cà p„GxæôþG#šþ'<ÂSc–mº&9+þÿT’?xØݨi®ÚQ©%W÷îý} £Ã£Z¯i†ët8ÞEnu„2‚î4zpDÈöô#ÿ>9zÌ{ø,æRÿN;e+‡ÅœEEb1ߊ,/*¢ÐÞj¾9¹¨ˆBûÍùVäÔ¢" mÆç[1,F #â£Í)Ô¦Ð&ùªíœ¢" ½‰”oEİ(æ¿lj»X µ]\TD¡wAó­ˆÅü—MmWI¡61, µÉ¦¶ë¥PÛõEEú‘‹|+rSQ…~%ߊÜZTD¡ŸÒÉ·"wQè˜ò­ÈÝEEúÙ®|+r_Q…~ä-ߊ-*¢ÐïGå[‘/ŠŠ(ôkcùVäë¢" ý6]¾ù®¨ˆB¿a˜oE~,*¢Ðï]æ[‘_ŠŠ(ô©ùVäw…ýŽC¿Kãà3uáW¤œŽð[`Á(:ºT§‡„ã?@Am%s¼{Vˆ‘™CÀ‹ÐSgLït¦ žÐÖÞ>uÆ>Îàä6ÀM ½Ú@¿i—;LK³U×´;üï ˜•vÓòëÇ(*â³0B|ˆUW$ÄÈ\½J‚׎tØ©SÛÛÕ–ÕíÊòŃ‹ª–Ó7oþÂcOk Øì58yðÄÁζ¶h`#sÊÿÁ'ûT[÷?ßÕa©¶ê- šÝ xÒÍáÛù–¿nÔÕ°¬UtCoügÜI£õ*bËù7ñŠY]þ©¹šø,Œb-ù½†ø,¬)>ĺò¯k'xMb®sçiû-nÉUoñY_|ˆõć-¿Ò7†Ò­…}-z~ßP¼F6‘_#%xmÍÔHw1¨Ú-*“ÅËdSñ!ƈ1N~±Æ‚hh³ZT雉×Èæòkd|‚WS#jÅ[ˆ崨R&ˆWÊDñ!¶b’üzß2Á‹} zr/U[Tì[‰—Éñ!&‹15sˆ•&ö­Ågañ!¦ÉŸè6ñYØV|ˆŽ ‘Ïò½]‚×T:lcù¶­ª½â¶èÞ.^(;Ê/”í¼Ø÷>åZ«^Ñî ^#»È¯‘¼Ø÷>Aò[U);‹WÊîò+e×a¬&ŽQÛš›(»‰×ÈôÌ!VšFöŸ…=ŇØGþɸW‚×6ÌÉX6ŽpÜúÌRkNȽÅëd?ùu²o‚×D¦NúZS 3Ä d¦üÙ?Ák+¦@æÎkÑ ¿ÄKä ù%r`‚û Bµ¬éÆáÞ-‚[÷n´–½U˜%^1‡È¯˜ƒ Å »œ³Å+fŽø‡Šq¸üºŸ›à5c¨î;Û;}™O_dúØti•žÞša¹õ¾åÌœ5{Þo´ä,8L¼~æ‰q„øóåŸG&x±÷'|ù[Ëœz‹.úG‰ÊÂÌ!VšPˆÏÂÑâC'ÿŒ<&Ák"sFVZÓ8V¼@:埉NjÏÂ"ñ!–È?'x±í–ªÕ¢gÅÄK¤K~‰œ˜à5…)µb¹­jÊ©âU¢É¯’R‚×îL•Ìž¯v•ü:õV½›Ìe¾ÕÒ·¼qÙŠº)‹×Müº©$xmÉÔ5¿5¯»Å+¤W~…è ^™ Q[S KÅ Ä_ Õ/öƒ@£Uß1­‰×È2ù5bc1Zs±X@ÿ7Œ¯±X$ÞÁ€w{Ís»ïàÞƒƒmx÷”ñ½¦F$x)Щ[–i»¤Ãë”(ûHblð ÃÆx_N Þ­õº±23‡1ô{Í@ñöÅ(ºjUôª–™åæ˰ã DfíÖ\OýNó‰†g z£ÂZvJåÌÇbKå ôNgæÑ©;–·Ê5?aLj¾— ß/˜ž™âx4fVÏ"xf‚ ¼snÙºáV2³œ€± úÍ@ó1ö"ä-©!¯× oaf²^ÕkºÛüLýf ùU‚&|î¢^SÞæ«²Ñm’ß2sé˜u»¤5?—A¿h¾Í\†ÂÓ~ó—¡ÄõÄ =‰9}´åA™èôñ{Í@ñ&EwÀÒšOÑï5ÅÏ™'Å®îæŸ»º3Ðs™“ÆÖܺmüå© ·%Ópm³Út›å‹ˆµ’)j¥ ¯dR´5µÜ|Š~¯(>ìµfø7UÍ_ ƒ~3м4Ann¬þróon¼N3|’™ÇªÙmÖœ´ƒ~3Ð|€=iúÔª€IãõšâåÌű"`q¬dY¯cº¬;f¿ÑüBýf y»Ð¥S@¡½^3P¼ˆYèÎŽæOé²™e®\ÀLa¿*âZÇï5Åߘ—š]Nó)ú½f x“b—n8ú½f ØÏœÒ~<Ínþ”úÍ@ó”M¸árõšæ4ÿ†«Ñm’&HBøº¡VuU€1vœèL¢¡åÚ|¢aLjžÍœ@®­ °Mý^3Pü„©L§G¯¸ÍWf£Û $_cæ±W¯ ¸ôñ{Í@ñÞE8ùWöªm«™yNÄxF]g ûRíò\ˤ(Õ.Ï—Ì“¢4»<}ÌI#Û.ÏKˆ%Ú幚IQª]žç˜µ–n—ç²M wyžfæQº]ž‡Ø“F¦]ž+˜‹£4»<70 -Ý.ÏùìBË´Ës ³Ðòìò\ÈL¡T»<0)JµËs“¢T»<Ì)-Ý.Ïi š’îò|œ )ñ.ÏOL¢îòœËœ@Ríò|ÆT¦d»<¯3ó(Õ.Ïý Š’ïò¼€]ª]ž·˜$%ÛåùUáüèÿ19ttjxüô¥¯ HTML (Tcl)adp text.html.tcl¬xÚV½¯ä4ßå Š‰A³BW#J¨éOŠœx’˜ul?{¼ûötü=ž$»÷¡K‘™ß8ÏwüêÀÏ÷þ¢œwÝ¢Œëþüçpÿ|ÛhW×eõØèwëjBQ–¿iôU£û­Ok¢ê§F“Ïq€öKZƒ>͸ØÃîû§½…rØë¿EÕ¯†ìÌ w§C¥«Npº²n?þkÞ¼íwyïR§tèTœ†¿Ê{ãt¤UAhèó´W6/Ax¸(»ò/„b ŒlÖ 0¨˜6q=5ÂdBD5m"ÌqU”ìZ!ØõLŒŸ (¾©Gx1È\š3ju ™É±½ƒfèF›Ó¼A§HLæì*¶˜ÀpΑÕ̋וñNèh¦k)ûHšDVÜÐAP¢Ì6ÔÞ Eƒ¤Ù[¨Nêžß¬?(œCŒ>2;ú¸P¢2<@JKž³G(îïà¶,PvüµI8\ÀÕÍðRÉH¥DŸô7Sã0.ˆ†Õ5G””&À!]Wìhl·d‹†*»"Õ U[i‘žÌ(ù˜Q=eH o¡‚Ù'ìoJëêôa¬Až©Öp‹ãFÏ4Q6Gÿ0ɉgÃgMU¼1ëj£X?(›žmÑE%ÂQ…¢Ýú©‘èY͢♼ä¸VÁ¹µ×rF`TWÙ‚dsÉTÓ…qeÉ,Y¡qgÔîšAiˆÜ9YÏØü Rº’ µ˜«8…ÖÅšÆà½Õ¨ìÖÆ–Æ­ª¨ÑÒ¶8 ¯ØÝZMeü7Šô|éâÖ÷«h4Ù‹U¢îÕ,‘ºÅ=ÊAÆÙÇ–¹)x9QF s(èÔU²´”Ññ¼÷Jy¬ÁI¦’ŽN+cow1l\Îí›­÷,Š©Óô#±ÌÇ {™8lDà%M©!RƒI¢cV˜ÙfZ²µ^™ª†2€õÅzã&ÁT’¶WÍ¡‚%õÅ(È–»Ç ôƒ}ÔIATZ€´VáÕ6‡–f· ’ýt[¤qp–½R¡¸ǵ¼ŸÙÉŽì>Š: ‡7’.â5 ^ äÝBÞäWš¦CóÛL«¸NÜKù‰Å?Þöò_þ¹Ñ3ÜJÿœ<ÎOÊ[Ngý?É?¾Üþm~;|ú9îî²çñžqx¸güÐ(Õ Ö‹E=v÷ÁçŸãîêòxúºsŽ»ûÊÝåå¯×Ç_¿xyé©•þI»îì) ?6ü¦ÑƒNcÈTcltcl source.tcl end_chars [;\n\}\]]inline_end_chars [;\s\}\]\\] special_chars [;{}\[\]"\\]unquoted_string.[^\s{{special_chars}}][^\s${{special_chars}}]*var_unquoted_string&(?:\$\{[^ \}]+\}|{{unquoted_string}})+ xÚåksÛÆ‘”,'N;–ü’c%ÖÃ6!š´ä¤M#7ÕÄÓN§3&3éLgJP*IT ã¡Guê_o÷Üáîˆ Jr5 >Àaooß»·Ç7ôº“Ý× ×s÷a¢pë ñº/@™Þdb¸VÇ5&(‡mVÃnSعjØ7v¾ök {£ö »P û+ {³ö×ö£jØo)ìÇÕ°¿¡°·ªa¿£°Ÿd÷‡¬ÙnŒ¬Žc»œæ>­Ítw;»ß Ñ±tžu’£ý,»/M¢0´=—³³;…øgv|#Ö"äÐwë@3z?¯ͬí^hfo‹ÙýQ 4ÇæR-pFùýZàŒôÒ=ÐDÞ‘=û¡$Ë8ŒÛq`JÁ¥KÁ…Ë’;íïO Û¥_ŸH´Œ ¢Ÿ¿&§ѯO%ëäý‚¬H^—Á0_Jþ`ÙXªáP¯$£â@:IJ)Ü3ɰEg¢P«K(4 Ÿ}]“‚] Ìý(À†Ä çv乄Ÿ×Å In<€±ÑÏ/¥å=Fäå- 71ZúM“&'ÍÓ¾) O´x Õ–lNò öJŠF‚?P ŽÄnf¹ôsW2®0„‘ÅDñæµ@x»-É À6Sûvv#åU* `ÏèÏ<èF¦Óà nHÏ2wBthégZ«·×{«‡ú™Þ×õ~ScØæ¤Å›’Yù±kF±A˜ëZhh»‰dd!×"¤É8hô³ÝCñ­®í8hd87Ï>oP\/ Xɰé»YE“³Ð+SI³ MrÝ!A–Máy“Ík›ÇFyííéaïíéä†þÉXd`CÙ,àmêºÞörûŠíeîÛÄù Át~A…JKá µ‹ˆieçÚ<2ìܪ:^çn³œ{rÚÉ&ryLtLm¡*WQù¬ØáäÎ;Ö«ÓÕÇÂÜ·ùÜ‹æåŠB’=_(óJÓÂ^"ÙM ¨§Ÿö«ëוBˆ·M©"ãƒ>˜ÛÂQVäTc–+Éç uÙ!´;Ïw:·”[‚xq“£JdÏy<ͳwqÊUr;W~+=–5¯î^B'ú×L®ëÒŸžŸÝÈo‰n¾^íàŸÎâ†BɹÂÄÖÒ­ÓíW_Ÿác}ÜÆ±>†·oÎp»Ú ¢,ZøêÏÿ…¥¯loõ™Jê³Ø‹p–~µ½”;*ºŸ*Æ_+Æ«z/òøKÅx·@äšn;”5/ʤ+´¼³˜»6¾™„Yþ|}º‰š™94PQ`›]Rþ޲J(7µ'9ÚAok»iˆ¿È{½­Î·—‡y•aNÿ¢w³» ÿþ!”ö‘„}YÆ~IT—…ZLöþ½ºùúùo÷b¿»Óîôëôr¸51Ú[è=vly°kO¥äe¶ä­>Ù¿Ï—#{í"Ý ¹®›èĉ.Üæ Ä·9ä8EžW‚òfQÚnªÛ,*ýWÍ4·ñŸ¶$ãÜm1Ú‡Ã*²Ñ®¿éê”$œzT–´÷²®à@uÆ&º¬vJ¶+ͦq‰ÍY•;, äæåvOS+tî2:W7¨8xÐ(½æj¿‚?ª,í¡¬[¹©\lê¼ëe…àÒó®jß|4³LÙçB©¾ÈÜ^>ɺ°svs· ÆVdq^ô4v®žKÿD¥¬ß0ŸÜÐHBîýÐù;”3û}¼³£AçvƺùYÓv1ÉÖ¬7¹ƒªE9²å>¥ŠÍëål2Lôé¿'ƒTextiletextiletext.html.textiletextilelxÚíYioÛ6¶“¬«}Ùº£»•¤DËVÓv¶\J[lHbìËDÙ eÚ"SŽDÃͪô'ï7Œ:(K´;JÚh‰$ŒÄ÷xøò}x©V‰Ê'q½‰ˆC:#d‘ÎÖa%[rdr™j±Ì#.³R,ó˜Ë¬ËüÌeÖâúV\wÂvÞúQ\œ´z¹ôPPâµEl‹àCA‰»H¾×5¡Ë_&²îñd¬1êYd RüŠZ6®¤¤WÓÑäÑhß«£¦j C„Æß߉Ÿ ÚŸgáœLН Ì÷Y0bWí;%׉ê›[ÆzM®d:»G¨4BǬJ“±dõ™)fœõ4’bn£x)-x c¦°˜…OºÞ†{4€VçðžÙÈ󚬧6ëÀ † l’$_:×@ÖW}ÄN3²1'ÈZÏ1Ù‰ÎÌÅLaÃP4À…-rDØ=-ƒ—ã`ªC¶4Zl ÆÈÄõ$`‘[ pÇÛ³Áýô‹2œê-8í PKytq?lÕöXߦðÁŽÑÐä]zŒ: 1¢æP2mÇcÛi|àï„Tb"ÿõâ°íîÛ¢SÅ ¦š°1ŸvCÈùûO \OçåÉ1rDCÁ¼çÃ} ÕæÙÖ€ŒØZÏP1eȸ/LÅ"&–"bKѰˆ…Q{ ¡ê³$¥Š0$õˆ¬Ð“צ‰bσqåDb¼•„27 ƒ#³¿Ì¸ áèa?¦t ŸR Sv>¿ž1vâT‚iÛa磿¹ÌŸQ¿˜û‹È4N–¯Óüa\dêæ¹4‹L-X <ÿHtAzs˜Ð/ÚÚCèû*P /N]9ghÛön¦8¸§2lÀó0úm"Ö¼Þj>>c§Ü#µ¡Á#@ >åžïd‘w{~ë¿Zínm9¬ïé¯ ÒÖÅa¶f(…û¯¶1Í9M­”º…J‰€*3¨_e¡ZÄÃîÕbýƒß¹° ©Ëæй8âN¢Ìý!à¦l5¯õ~*i5¨•I[¦&Î\Y´ã¡‹<(ýàºpo§¢Þ.óö ˆø›ÀßÜÜ÷Kà¾]¸ë·®³«;Å€†8£‰wŸóx•%®#[i •Ogí¡þ°õ‹±Ü=râoѹGD-|;¹ìÅð’nÒ*é+Öli$¡èž\Q6 ðumÇ<Î|¸¹l$–÷TŒì-õVŒ>ÑÃÛä+ ‰TTüftÙ€,ë§(+™p´’p„;à÷,™9&ùžÒf/6gVò& ´öZº1ïÌÿì‚òŽXMLxmlxsdxslttlddtmlrssopmlsvgtext.xmlt(?x) ^(?: <\?xml\s | \s*<([\w-]+):Envelope\s+xmlns:\1\s*=\s*"http://schemas.xmlsoap.org/soap/envelope/"\s*> )name[[:alpha:]:_][[:alnum:]:_.-]*qualified_nameB(?:([[:alpha:]_][[:alnum:]_.-]*)(:))?([[:alpha:]_][[:alnum:]_.-]*)wxÚíYiSÛFö¹ï499"…È$ô˜)<”ðÁS0ÌàΔ±l/XYr%9‰ùï]I»òîë]YÆ@ùP}`ôh÷=ž÷ØÕt*¼~ ãœnÙVM÷<Óp=­‰fíC!Å_w9lÃn·‘åõai2¾à`M»[7‘öO×öPSs=ǰûïd„b ùS1²d|,ÄvtYn=AƇ<Úò ïLRÌ59f‰b®Ë1?QÌ 9ægй)ÇüRϘ_)æ6qËötϰ-`×;BB¸˜rBÜF®Ч÷€yk5×Ó>¾4`éL1À„Æ@JH} C—ci[†º0!] €ÒTë¦ÀË›ÜSn™§À|€¼6‚ƒµí3àbΩô8«¡·^KãE~pnËîšM­Žî%0¥ˆû Ä„§bD÷à€^“q:%¾ÒL‰nø×ý1KÕêZ ¯¨Ÿk¢Ã2‚ŸxŲ𹣶f®4±%d¼ÿ ,xŸ'_®nÚ/Á´ 0ÊJåÖ´HØùxaéÜœÀ\¾Ó¾/½?¡³}ˆ˜óU7fÎ0Mt¨›9­ãN YÚ7Ãk–FçöçͲŠQ†žË…~$s@ý„®˜¥?ÞÄkGˆõƉ7^^?¸˜¬Ô•ÍíÝÒ~o½¸¯Vêi¶…“6ªíµÃ›–•þqŒô“ì š–”Šª*åwù…ªšÀ bÄŽDÃCÇîv|Ùàû”ù_Ðñ7ÛiæìrtÏvXl?éÎín|Z/­'5ÇÚ@“$Ë2ïÒ|W~ß‹^hê"?¡qïbþË‘\(íq^Ös´„u†àUV`ê¦J•¿×{(‘ã©äþ#Éý’ûÏ%÷_=§X=}ëuÔqìr]â@0Ñ@2­äÇ‹ì :» ä—•r¥ó}ë¤V Gü§xRËiÕwª²¬ªù˜Ç«L`NHS%cX?I„àÇ1ê]i.Ã9ÿÛшº ¨Žqà׿bÂ[!{ q¡ÓMºÔ5~mã®MÝþÚ§渇m¿Ò5¼ãŠ-ÃW"¿SÖÔ––8-9«„‘6¦»åNÒ1,æÏ,½¾äòŒ”2gœÎT¸ô9Ç AÚ§®E:´FSÇR%¢Z]£E»¼USܹ†û‘DëÛÿ¸sMKÞy&Àú=~ðÐQÔ¤SÃ.Š`W¸—J VpýIFeeFUÖK¥­Â^Iõ«gX—¹â¸VÇ!‡Î‡¨Ž KÔÕÒV‡¶—ä@ATü(Ͼꎡû»²ÓÕ¹ç;X†e¶N%¶5]teFÓè%ÞÑv”ÚCêòtb16vo…Çp2‰EXdY·¹µ¹½YLºh¾ì0‹aË(Ì’'›Ø8QׯŒº”zf"ñâKÔ3ó*n åîèÍ•?h¿UzsG•Ö‚ªü®¦AFŒ¶ŽnxÓ“#m(–TºÛdRGx5›È[K‹¥Bi? éü'Ú=¹ª„û½ý½Òævo÷¯?¶ jðV´Øä9Pø¤pdoÈà™øUú/NH¢¤Oý 5z,”†mèET=Nʧ`€4T®ˆÖUgÿþMx/¢K%¯*#hµâöëaæ³qCP¬˜¾_¤!wÄúÈ’üÓÎFiwÓý!Ù˜aòE$cf'—›‚ŒÄØ®ŸÛŽÍÈ×X‹ŽS‚«ß -æÕ±ÎÊŸ×*.Û Gx)!„ðœ 3œE#œ>L$…;q€6˜&#<õ®ëMÍÿ¾0¬»Î±{–óžï“bó»#¦k=(W©œR*L4ø£Ë±‰ÜB^Ïÿ·m7É>=¼E½tˆK›©*§Ž’Ÿ)ý]-··«es«:VÈ]bÜ’%Ÿ'¬i¨¡Vf*åà|¾_ëΪi¿ÍùBp¦0+ánÛpý½¸ÖoÄÇóIvÈÁ¥±•¨¸SZ/vЉ7›çQ…à· úVT†Á2Ä‚eÆ¿“Jjœijœ7ªÜLNé!èÂáâËÜgà ÿš‡]¬(­êmüáÉÕÉ™Nv`’•Óò{¨«ŽŸÎ*TïÆ±eBØ´}\ïóXYÔ?Y_~ªóÿçÁÏ!|9î´±,çã?`©Ì˜Òzpû/Á›H®YAMLyamlymlsublime-syntax source.yaml^%YAML( ?1.\d+)?_flow_scalar_end_plain_in|(?x: (?= \s* $ | \s+ \# | \s* : (\s|$) | \s* : {{c_flow_indicator}} | \s* {{c_flow_indicator}} ) )_flow_scalar_end_plain_out<(?x: (?= \s* $ | \s+ \# | \s* : (\s|$) ) ) _type_all¡(?x: ({{_type_null}}) | ({{_type_bool}}) | ({{_type_int}}) | ({{_type_float}}) | ({{_type_timestamp}}) | ({{_type_value}}) | ({{_type_merge}}) ) _type_boolb(?x: y|Y|yes|Yes|YES|n|N|no|No|NO |true|True|TRUE|false|False|FALSE |on|On|ON|off|Off|OFF ) _type_floatî(?x: [-+]? (?: [0-9] [0-9_]*)? \. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10) | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \. [0-9_]* # (base 60) | [-+]? \. (?: inf|Inf|INF) # (infinity) | \. (?: nan|NaN|NAN) # (not a number) ) _type_intÎ(?x: [-+]? 0b [0-1_]+ # (base 2) | [-+]? 0 [0-7_]+ # (base 8) | [-+]? (?: 0|[1-9][0-9_]*) # (base 10) | [-+]? 0x [0-9a-fA-F_]+ # (base 16) | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60) ) _type_merge<< _type_null(?:null|Null|NULL|~)_type_timestampê(?x: \d{4} - \d{2} - \d{2} # (y-m-d) | \d{4} # (year) - \d{1,2} # (month) - \d{1,2} # (day) (?: [Tt] | [ \t]+) \d{1,2} # (hour) : \d{2} # (minute) : \d{2} # (second) (?: \.\d*)? # (fraction) (?: (?:[ \t]*) Z | [-+] \d{1,2} (?: :\d{1,2})? )? # (time zone) ) _type_value=c_flow_indicator [\[\]{},] c_indicator[-?:,\[\]{}#&*!|>'"%@`] c_ns_esc_char,\\([0abtnvfre "/\\N_Lp]|x\d\d|u\d{4}|U\d{8})c_ns_tag_propertyM(?x: ! < {{ns_uri_char}}+ > | {{c_tag_handle}} {{ns_tag_char}}+ | ! ) c_tag_handle(?:!(?:{{ns_word_char}}*!)?)ns_anchor_char[^\s\[\]/{/},]ns_anchor_name{{ns_anchor_char}}+ns_plain_first_plain_inC(?x: [^\s{{c_indicator}}] | [?:-] [^\s{{c_flow_indicator}}] )ns_plain_first_plain_out,(?x: [^\s{{c_indicator}}] | [?:-] \S ) ns_tag_char7(?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\-#;/?:@&=+$_.~*'()] ) ns_tag_prefixN(?x: ! {{ns_uri_char}}* | (?![,!\[\]{}]) {{ns_uri_char}}+ ) ns_uri_char=(?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\-#;/?:@&=+$,_.!~*'()\[\]] ) ns_word_char [0-9A-Za-z\-]s_sep[ \t]+E xÚí[ërÛÆ&%ÛJ˜‹ãÄ©ã;(ê$¹iš°–iÿ°;õ¸òLeÿpH…HP”- Êôú }€¾@¨ÐÝv±»Ü%@Jž&3ÂX¹øöàì¹ï¼^JŽ/ÓsÍöoß :?éÛ ÷6ž—ØCŠÜÄÈròFÎ¥çëä°c{6uÿù|,áàRz¾Ê`;A¿ïøQFòòD¡v%=_c`]7t:‘{ädô„,ö¼à­Þ·×?Ȱ ‰",+÷s€„ÍJHý“ô\&‚Ô»ÁhßsôŸGAät3V>MÏw¤žíúºëgs>KÏwsæ#J1Ÿçr8Âpˆ5ùµ`¢óóÈñ;”º¾àÎ x'ŒŽ3Ü5Îööú€ã眕/«ÃÈ#|ù+î&‰ÁvσÖ2×9y%¸Ôlžs˪0 ?è:ñ;!ê#npʤ=c¾áôbR bÔMnå©ãàË·8&ƒ·9Ñ€Þs}wxøœ37¼&¤NÛsíásθ®Òˆqßã–N{&ÆÜç¸FZŠ@ ¸*bô#Û:‹œ7RÖ!5NÐRÅ–8c¹&Æ.s|ˆ°ºÛxnÇôèx@8_á¬Qè̼ʭEßG°|Æÿñó!Æï1¨ÎåÚ—Ü5Zïk\àÆq_×9»×£€^Ž‘ž×¹4‰²ïD¶Á¸½ql÷½—yJ„O&<©­-³¥‘á¹1À®RW›P.sü”¹F~'ÙБŒ¡3°C; Bã'ç8±gƒf6»¦Ò,söæú`šÛ5\à¶g8ïÀK®î;o=×w’EÏap‰|pã‘hæ)>h*=ñ!Ù»fEQ€äÀ'<Ìa]YBßc𽡘5ò£®4ÕÆKÒ*"AË’U”ö®9lë­æšÙ6­“ÓÚJ½?Z]\~üw˪@²íVS·s‡"W¦„H/`Ž¿ŽjÃ(„jù‰SÈ» à]H¢8$€íFdžo÷#²Y£õö!åÃŒãØ¼«¶«¡©­ª’/†ÉG»Ðv8x{¸EÏÄ, |—<«M“ž„¬ÏÓ¼%Qòv^eZåL­ª¹ù.刴Ìkÿ¨•9û¤=»ëÀ¤‹¾¦K2ÐbüQßñöÀO•éà ;œ”'““1Uº›ïÇ5¯è¸Ij‡éb&Ž(ê›'}¡µ3²ªÙm˜øÈBäœ$DâT‚áÛ ìAtè„/L\,sI·ø ZÂrqB·ƒÀú‘¡"à™¸ï0:ÿoæ¨ZE}õäÏà³ÕLÖSQTð½ oè?<Ñ´õ÷¦nÕ«ZK>Jp–Æ«ªÂp\YNf?³õžuòà-Š\íOë­æã•­ÆÒÚžQý¥¾ªj0ÖYŠVGXo{­š„?K;ÅFEÓ­Uÿˆ†æ%Rr4„C ¯ ;ÄcƒÐ>8È!X?´ý®—hv^6g4a”Í„À¹ÞM¡ÎuJ ˜¾mh´šD¿µH®4–9yi„ÎÐ @`‰¤& bYÙŽ’ŠH2jîTXVGÜ—ÒÄÈ'œVæÜ…z=æEéÂ<Å„W'GV|ÇïReÃÚ"ÄåÃï¼(±U%Ö™­îI`"C•÷tq³B t«}º¼2'ËÒÌÐã Mô&ÌÛ €ˆÛI¼X³´³Ô¤R³XäeC,"@¶°]ð \¡ØËÜz¶r*"¢¡Fé1qáõ˜e paŠ`˜ºU Hý„¿÷]IHŠTן½Fý 3r“]Žnh‹>Æ=B°A›¦ÚÞ°÷#ÿ¨:Êâºinï½Xñ;³kvã‘Ù=ùö4~ NߟŽ9)":‡À:0ˆ:`› ’Ó$ bÇi.ñ…aQŠã/[å”9/„ÅTllT,Oc9¿jë(¶A“.áü7a“Í6i­Œñ4'ú±ºZÜ™–ÌdVÏÃdÆã8nM—åH~·øBFƾM‘_›˜ËXŽs3¼(©òÏa8pÛjl÷Å„%¼aUW4hæë'ëÀÐÁ–ÜÜiL¨5ñŠq/WÞÀ0¢0ð2l¿s$õÞâd±RH¾(½+HIUKMâY”µ¢2“ܱTú7Ÿ=«ÊÃ3îd”GéîH²?›Žüžˆ£-$[­h°”Rb3‘`š­ e·$Mì¦È}‰üäD˜Ø6îue‰%7Ææ²åÅ0…”S—Ky‡¨VùRçtNÂéMÉø×SЖIáÆ4.Ih|#¿._͉-Exï•ZeN¹§ÏŠù}ç€Nó"²Ç?2G…}­JÒ˜¶ §¥©ÎjâÄß„W³´ [5sh¡T » ý‚O”«“¬Ur5]ü ï„ζÿ™ŸÖÑq›±©š±«4 6õ,­¥¶õ†Eå€K ¦)ó9ædƒ~𚃠ìÚâf™^˜J/ðºimÁÇ|lmc7×ï‚äD žxuÝ%$Á¯Jåg?èº=d +úPÜÜ|™®çK3Æ.T6ÆAo_]ŸìKIŸ™”@Öý‰¦ÁÝv‰õ§¦²« ÞSºKÒ„B~fÖ Xúå™Wíbw¹`É[BÈÂ,i׈x¶@Ï"é!/Å5M´dS\ÆñÙtäîƒß}?^.O#6¢=³.(æÐ€¾›;õUÝýI¾ˆžÉ#V«““y_ÇyôÈ]îžÓbŽL8S-7?­~ùôW—Œß?«M›'xX›,:Ù XôGÓX´¬uW2~O2^›âžâÍÖ)>f˜ùÐf)ø–_,P×pÕÀM9ç ¢R’hD¡gNè±Îq® Å;Sù!cxqÜDØÀ1N÷Xfõymë³8Ê’d\“Œ/Ï2ƺkyM‰¤URÀI>-Í'v¼gŽv> g럕fç.1± å>2õGžo£×/^Ä¿À§¥p³ŽAÇñ›øØÆoàßÓØ·c?ˆ·Á¿—…#'~…>þöúiܳ½¡?K>Ÿ¼Øy 1¿ÿ¶ã ×‹_¿gÏ*üXn·”}¸ïßÜåVMQ÷í¡£2¡’½Ç<3vÿc:˜(ž,ÙLúCk!ŒäFô#·ï(ïßɾ•ž>_H\ùÀ²`‹tøŒ7õdìÙþÁnfa°Vä÷¤SöƒÀsl_X–ßågeÛíÈ9pÄìÛ²I °“§$—óî“ì FÀïþMºÂMº#]RVc,žX+testdata/Packages/Rust/Cargo.sublime-syntax?*testdata/Packages/Rust/Rust.sublime-syntax@(testdata/Packages/SQL/SQL.sublime-syntaxA,testdata/Packages/Scala/Scala.sublime-syntaxB1testdata/Packages/ShellScript/Bash.sublime-syntaxC?testdata/Packages/ShellScript/Shell-Unix-Generic.sublime-syntaxDHtestdata/Packages/ShellScript/commands-builtin-shell-bash.sublime-syntaxE/testdata/Packages/TCL/HTML (Tcl).sublime-syntaxF(testdata/Packages/TCL/Tcl.sublime-syntaxG0testdata/Packages/Textile/Textile.sublime-syntaxH(testdata/Packages/XML/XML.sublime-syntaxI*testdata/Packages/YAML/YAML.sublime-syntaxJsyntect-no-panic-6.0.0/examples/gendata.rs000064400000000000000000000052121046102023000166110ustar 00000000000000//! This program is mainly intended for generating the dumps that are compiled in to //! syntect, not as a helpful example for beginners. //! Although it is a valid example for serializing syntaxes, you probably won't need //! to do this yourself unless you want to cache your own compiled grammars. //! //! An example of how this script is used to generate the pack files included //! with syntect can be found under `make packs` in the Makefile. use std::env; use syntect::dumps::*; use syntect::highlighting::ThemeSet; use syntect::parsing::SyntaxSetBuilder; fn usage_and_exit() -> ! { println!( "USAGE: gendata synpack source-dir \ newlines.packdump nonewlines.packdump \ [metadata.packdump] [metadata extra-source-dir]\n \ gendata themepack source-dir themepack.themedump" ); ::std::process::exit(2); } fn main() { let mut a = env::args().skip(1); match (a.next(), a.next(), a.next(), a.next(), a.next(), a.next()) { ( Some(ref cmd), Some(ref package_dir), Some(ref packpath_newlines), Some(ref packpath_nonewlines), ref _option_metapath, ref _option_metasource, ) if cmd == "synpack" => { let mut builder = SyntaxSetBuilder::new(); builder.add_plain_text_syntax(); builder.add_from_folder(package_dir, true).unwrap(); let ss = builder.build(); dump_to_uncompressed_file(&ss, packpath_newlines).unwrap(); let mut builder_nonewlines = SyntaxSetBuilder::new(); builder_nonewlines.add_plain_text_syntax(); builder_nonewlines .add_from_folder(package_dir, false) .unwrap(); #[cfg(feature = "metadata")] { if let Some(metasource) = _option_metasource { builder_nonewlines .add_from_folder(metasource, false) .unwrap(); } } let ss_nonewlines = builder_nonewlines.build(); dump_to_uncompressed_file(&ss_nonewlines, packpath_nonewlines).unwrap(); #[cfg(feature = "metadata")] { if let Some(metapath) = _option_metapath { dump_to_file(&ss_nonewlines.metadata(), metapath).unwrap(); } } } (Some(ref s), Some(ref theme_dir), Some(ref packpath), ..) if s == "themepack" => { let ts = ThemeSet::load_from_folder(theme_dir).unwrap(); dump_to_file(&ts, packpath).unwrap(); } _ => usage_and_exit(), } } syntect-no-panic-6.0.0/examples/latex-demo.rs000064400000000000000000000016271046102023000172530ustar 00000000000000use syntect::easy::{HighlightLines, HighlightOptions}; use syntect::highlighting::{Style, ThemeSet}; use syntect::parsing::SyntaxSet; use syntect::util::{as_latex_escaped, LinesWithEndings}; fn main() { // Load these once at the start of your program let ps = SyntaxSet::load_defaults_newlines(); let ts = ThemeSet::load_defaults(); let syntax = ps.find_syntax_by_extension("rs").unwrap(); let s = "pub struct Wow { hi: u64 }\nfn blah() -> u64 {}\n"; let mut h = HighlightLines::new( syntax, &ts.themes["InspiredGitHub"], HighlightOptions::default(), ); for line in LinesWithEndings::from(s) { // LinesWithEndings enables use of newlines mode let ranges: Vec<(Style, &str)> = h.highlight_line(line, &ps).unwrap(); let escaped = as_latex_escaped(&ranges[..]); println!("\n{:?}", line); println!("\n{}", escaped); } } syntect-no-panic-6.0.0/examples/parsyncat.rs000064400000000000000000000043621046102023000172170ustar 00000000000000//! Highlights the files given on the command line, in parallel. //! Prints the highlighted output to stdout. use rayon::prelude::*; use syntect::easy::{HighlightFile, HighlightOptions}; use syntect::highlighting::{Style, ThemeSet}; use syntect::parsing::SyntaxSet; use std::fs::File; use std::io::{BufRead, BufReader}; fn main() { let files: Vec = std::env::args().skip(1).collect(); if files.is_empty() { println!("Please provide some files to highlight."); return; } let syntax_set = SyntaxSet::load_defaults_newlines(); let theme_set = ThemeSet::load_defaults(); // We first collect the contents of the files... let contents: Vec> = files .par_iter() .map(|filename| { let mut lines = Vec::new(); // We use `String::new()` and `read_line()` instead of `BufRead::lines()` // in order to preserve the newlines and get better highlighting. let mut line = String::new(); let mut reader = BufReader::new(File::open(filename).unwrap()); while reader.read_line(&mut line).unwrap() > 0 { lines.push(line); line = String::new(); } lines }) .collect(); // ...so that the highlighted regions have valid lifetimes... let regions: Vec> = files .par_iter() .zip(&contents) .map(|(filename, contents)| { let mut regions = Vec::new(); let theme = &theme_set.themes["base16-ocean.dark"]; let mut highlighter = HighlightFile::new(filename, &syntax_set, theme, HighlightOptions::default()) .unwrap(); for line in contents { for region in highlighter .highlight_lines .highlight_line(line, &syntax_set) .unwrap() { regions.push(region); } } regions }) .collect(); // ...and then print them all out. for file_regions in regions { print!( "{}", syntect::util::as_24_bit_terminal_escaped(&file_regions[..], true) ); } } syntect-no-panic-6.0.0/examples/syncat.rs000064400000000000000000000113141046102023000165070ustar 00000000000000use getopts::Options; use std::borrow::Cow; use std::io::BufRead; use std::path::Path; use syntect::dumps::{dump_to_file, from_dump_file}; use syntect::easy::{HighlightFile, HighlightOptions}; use syntect::highlighting::{Style, Theme, ThemeSet}; use syntect::parsing::SyntaxSet; use syntect::util::as_24_bit_terminal_escaped; fn load_theme(tm_file: &str, enable_caching: bool) -> Theme { let tm_path = Path::new(tm_file); if enable_caching { let tm_cache = tm_path.with_extension("tmdump"); if tm_cache.exists() { from_dump_file(tm_cache).unwrap() } else { let theme = ThemeSet::get_theme(tm_path).unwrap(); dump_to_file(&theme, tm_cache).unwrap(); theme } } else { ThemeSet::get_theme(tm_path).unwrap() } } fn main() { let args: Vec = std::env::args().collect(); let mut opts = Options::new(); opts.optflag("l", "list-file-types", "Lists supported file types"); opts.optflag( "L", "list-embedded-themes", "Lists themes present in the executable", ); opts.optopt("t", "theme-file", "THEME_FILE", "Theme file to use. May be a path, or an embedded theme. Embedded themes will take precendence. Default: base16-ocean.dark"); opts.optopt( "s", "extra-syntaxes", "SYNTAX_FOLDER", "Additional folder to search for .sublime-syntax files in.", ); opts.optflag( "e", "no-default-syntaxes", "Doesn't load default syntaxes, intended for use with --extra-syntaxes.", ); opts.optflag( "n", "no-newlines", "Uses the no newlines versions of syntaxes and dumps.", ); opts.optflag("c", "cache-theme", "Cache the parsed theme file."); let matches = match opts.parse(&args[1..]) { Ok(m) => m, Err(f) => { panic!("{}", f.to_string()) } }; let no_newlines = matches.opt_present("no-newlines"); let mut ss = if matches.opt_present("no-default-syntaxes") { SyntaxSet::new() } else if no_newlines { SyntaxSet::load_defaults_nonewlines() } else { SyntaxSet::load_defaults_newlines() }; if let Some(folder) = matches.opt_str("extra-syntaxes") { let mut builder = ss.into_builder(); builder.add_from_folder(folder, !no_newlines).unwrap(); ss = builder.build(); } let ts = ThemeSet::load_defaults(); if matches.opt_present("list-file-types") { println!("Supported file types:"); for sd in ss.syntaxes() { println!("- {} (.{})", sd.name, sd.file_extensions.join(", .")); } } else if matches.opt_present("list-embedded-themes") { println!("Embedded themes:"); for t in ts.themes.keys() { println!("- {}", t); } } else if matches.free.is_empty() { let brief = format!("USAGE: {} [options] FILES", args[0]); println!("{}", opts.usage(&brief)); } else { let theme_file: String = matches .opt_str("theme-file") .unwrap_or_else(|| "base16-ocean.dark".to_string()); let theme = ts .themes .get(&theme_file) .map(Cow::Borrowed) .unwrap_or_else(|| { Cow::Owned(load_theme(&theme_file, matches.opt_present("cache-theme"))) }); for src in &matches.free[..] { if matches.free.len() > 1 { println!("==> {} <==", src); } let mut highlighter = HighlightFile::new(src, &ss, &theme, HighlightOptions::default()).unwrap(); // We use read_line instead of `for line in highlighter.reader.lines()` because that // doesn't return strings with a `\n`, and including the `\n` gets us more robust highlighting. // See the documentation for `SyntaxSetBuilder::add_from_folder`. // It also allows re-using the line buffer, which should be a tiny bit faster. let mut line = String::new(); while highlighter.reader.read_line(&mut line).unwrap() > 0 { if no_newlines && line.ends_with('\n') { let _ = line.pop(); } { let regions: Vec<(Style, &str)> = highlighter .highlight_lines .highlight_line(&line, &ss) .unwrap(); print!("{}", as_24_bit_terminal_escaped(®ions[..], true)); } line.clear(); if no_newlines { println!(); } } // Clear the formatting println!("\x1b[0m"); } } } syntect-no-panic-6.0.0/examples/synhtml-css-classes.rs000064400000000000000000000102711046102023000211260ustar 00000000000000//! Generates highlighted HTML with CSS classes for a Rust and a C++ source. //! Run with ```cargo run --example synhtml-css-classes``` //! //! will generate 4 files as usage example //! * synhtml-css-classes.html //! * synhtml-css-classes.css //! * theme-dark.css //! * theme-light.css //! //! You can open the html with a web browser and change between light and dark //! mode. use syntect::highlighting::ThemeSet; use syntect::html::css_for_theme_with_class_style; use syntect::html::{ClassStyle, ClassedHTMLGenerator}; use syntect::parsing::SyntaxSet; use syntect::util::LinesWithEndings; use std::fs::File; use std::io::{BufWriter, Write}; use std::path::Path; fn main() -> Result<(), std::io::Error> { // --------------------------------------------------------------------------------------------- // generate html let ss = SyntaxSet::load_defaults_newlines(); let html_file = File::create(Path::new("synhtml-css-classes.html"))?; let mut html = BufWriter::new(&html_file); // write html header writeln!(html, "")?; writeln!(html, "")?; writeln!(html, " ")?; writeln!(html, " synhtml-css-classes.rs")?; writeln!( html, " " )?; writeln!(html, " ")?; writeln!(html, " ")?; // Rust let code_rs = "// Rust source fn main() { println!(\"Hello World!\"); }"; let sr_rs = ss.find_syntax_by_extension("rs").unwrap(); let mut rs_html_generator = ClassedHTMLGenerator::new_with_class_style(sr_rs, &ss, ClassStyle::Spaced); for line in LinesWithEndings::from(code_rs) { rs_html_generator .parse_html_for_line_which_includes_newline(line) .unwrap(); } let html_rs = rs_html_generator.finalize(); writeln!(html, "
")?;
    writeln!(html, "{}", html_rs)?;
    writeln!(html, "
")?; // C++ let code_cpp = "/* C++ source */ #include int main() { std::cout << \"Hello World!\" << std::endl; }"; let sr_cpp = ss.find_syntax_by_extension("cpp").unwrap(); let mut cpp_html_generator = ClassedHTMLGenerator::new_with_class_style(sr_cpp, &ss, ClassStyle::Spaced); for line in LinesWithEndings::from(code_cpp) { cpp_html_generator .parse_html_for_line_which_includes_newline(line) .unwrap(); } let html_cpp = cpp_html_generator.finalize(); writeln!(html, "
")?;
    writeln!(html, "{}", html_cpp)?;
    writeln!(html, "
")?; // write html end writeln!(html, " ")?; writeln!(html, "")?; // --------------------------------------------------------------------------------------------- // generate css let css = "@import url(\"theme-light.css\") (prefers-color-scheme: light); @import url(\"theme-dark.css\") (prefers-color-scheme: dark); @media (prefers-color-scheme: dark) { body { background-color: gray; } } @media (prefers-color-scheme: light) { body { background-color: lightgray; } }"; let css_file = File::create(Path::new("synhtml-css-classes.css"))?; let mut css_writer = BufWriter::new(&css_file); writeln!(css_writer, "{}", css)?; // --------------------------------------------------------------------------------------------- // generate css files for themes let ts = ThemeSet::load_defaults(); // create dark color scheme css let dark_theme = &ts.themes["Solarized (dark)"]; let css_dark_file = File::create(Path::new("theme-dark.css"))?; let mut css_dark_writer = BufWriter::new(&css_dark_file); let css_dark = css_for_theme_with_class_style(dark_theme, ClassStyle::Spaced).unwrap(); writeln!(css_dark_writer, "{}", css_dark)?; // create light color scheme css let light_theme = &ts.themes["Solarized (light)"]; let css_light_file = File::create(Path::new("theme-light.css"))?; let mut css_light_writer = BufWriter::new(&css_light_file); let css_light = css_for_theme_with_class_style(light_theme, ClassStyle::Spaced).unwrap(); writeln!(css_light_writer, "{}", css_light)?; Ok(()) } syntect-no-panic-6.0.0/examples/synhtml.rs000064400000000000000000000021311046102023000167010ustar 00000000000000//! Prints highlighted HTML for a file to stdout. //! Basically just wraps a body around `highlighted_html_for_file` use syntect::highlighting::{Color, ThemeSet}; use syntect::html::highlighted_html_for_file; use syntect::parsing::SyntaxSet; fn main() { let ss = SyntaxSet::load_defaults_newlines(); let ts = ThemeSet::load_defaults(); let args: Vec = std::env::args().collect(); if args.len() < 2 { println!("Please pass in a file to highlight"); return; } let style = " pre { font-size:13px; font-family: Consolas, \"Liberation Mono\", Menlo, Courier, monospace; }"; println!( "{}", &args[1], style ); let theme = &ts.themes["base16-ocean.dark"]; let c = theme.settings.background.unwrap_or(Color::WHITE); println!( "\n", c.r, c.g, c.b ); let html = highlighted_html_for_file(&args[1], &ss, theme).unwrap(); println!("{}", html); println!(""); } syntect-no-panic-6.0.0/examples/synstats.rs000064400000000000000000000146661046102023000171130ustar 00000000000000//! An example of using syntect for code analysis. //! Basically a fancy lines of code count program that works //! for all languages Sublime Text supports and also counts things //! like number of functions and number of types defined. //! //! Another thing it does that other line count programs can't always //! do is properly count comments in embedded syntaxes. For example //! JS, CSS and Ruby comments embedded in ERB files. use syntect::easy::ScopeRegionIterator; use syntect::highlighting::{ScopeSelector, ScopeSelectors}; use syntect::parsing::{ParseState, ScopeStack, ScopeStackOp, SyntaxSet}; use std::fs::File; use std::io::{BufRead, BufReader}; use std::path::Path; use std::str::FromStr; use walkdir::{DirEntry, WalkDir}; #[derive(Debug)] struct Selectors { comment: ScopeSelector, doc_comment: ScopeSelectors, function: ScopeSelector, types: ScopeSelectors, } impl Default for Selectors { fn default() -> Selectors { Selectors { comment: ScopeSelector::from_str("comment - comment.block.attribute").unwrap(), doc_comment: ScopeSelectors::from_str( "comment.line.documentation, comment.block.documentation", ) .unwrap(), function: ScopeSelector::from_str("entity.name.function").unwrap(), types: ScopeSelectors::from_str( "entity.name.class, entity.name.struct, entity.name.enum, entity.name.type", ) .unwrap(), } } } #[derive(Debug, Default)] struct Stats { selectors: Selectors, files: usize, functions: usize, types: usize, lines: usize, chars: usize, code_lines: usize, comment_lines: usize, comment_chars: usize, comment_words: usize, doc_comment_lines: usize, doc_comment_words: usize, } fn print_stats(stats: &Stats) { println!(); println!("################## Stats ###################"); println!("File count: {:>6}", stats.files); println!("Total characters: {:>6}", stats.chars); println!(); println!( "Function count: {:>6}", stats.functions ); println!("Type count (structs, enums, classes): {:>6}", stats.types); println!(); println!( "Code lines (traditional SLOC): {:>6}", stats.code_lines ); println!("Total lines (w/ comments & blanks): {:>6}", stats.lines); println!( "Comment lines (comment but no code): {:>6}", stats.comment_lines ); println!( "Blank lines (lines-blank-comment): {:>6}", stats.lines - stats.code_lines - stats.comment_lines ); println!(); println!( "Lines with a documentation comment: {:>6}", stats.doc_comment_lines ); println!( "Total words written in doc comments: {:>6}", stats.doc_comment_words ); println!( "Total words written in all comments: {:>6}", stats.comment_words ); println!( "Characters of comment: {:>6}", stats.comment_chars ); } fn is_ignored(entry: &DirEntry) -> bool { entry .file_name() .to_str() .map(|s| s.starts_with('.') && s.len() > 1 || s.ends_with(".md")) .unwrap_or(false) } fn count_line( ops: &[(usize, ScopeStackOp)], line: &str, stack: &mut ScopeStack, stats: &mut Stats, ) { stats.lines += 1; let mut line_has_comment = false; let mut line_has_doc_comment = false; let mut line_has_code = false; for (s, op) in ScopeRegionIterator::new(ops, line) { stack.apply(op).unwrap(); if s.is_empty() { // in this case we don't care about blank tokens continue; } if stats .selectors .comment .does_match(stack.as_slice()) .is_some() { let words = s .split_whitespace() .filter(|w| { w.chars() .all(|c| c.is_alphanumeric() || c == '.' || c == '\'') }) .count(); if stats .selectors .doc_comment .does_match(stack.as_slice()) .is_some() { line_has_doc_comment = true; stats.doc_comment_words += words; } stats.comment_chars += s.len(); stats.comment_words += words; line_has_comment = true; } else if !s.chars().all(|c| c.is_whitespace()) { line_has_code = true; } if stats .selectors .function .does_match(stack.as_slice()) .is_some() { stats.functions += 1; } if stats.selectors.types.does_match(stack.as_slice()).is_some() { stats.types += 1; } } if line_has_comment && !line_has_code { stats.comment_lines += 1; } if line_has_doc_comment { stats.doc_comment_lines += 1; } if line_has_code { stats.code_lines += 1; } } fn count(ss: &SyntaxSet, path: &Path, stats: &mut Stats) { let syntax = match ss.find_syntax_for_file(path).unwrap_or(None) { Some(syntax) => syntax, None => return, }; stats.files += 1; let mut state = ParseState::new(syntax, false); let f = File::open(path).unwrap(); let mut reader = BufReader::new(f); let mut line = String::new(); let mut stack = ScopeStack::new(); while reader.read_line(&mut line).unwrap() > 0 { { let ops = state.parse_line(&line, ss).unwrap(); stats.chars += line.len(); count_line(&ops, &line, &mut stack, stats); } line.clear(); } } fn main() { let ss = SyntaxSet::load_defaults_newlines(); // note we load the version with newlines let args: Vec = std::env::args().collect(); let path = if args.len() < 2 { "." } else { &args[1] }; println!("################## Files ###################"); let mut stats = Stats::default(); let walker = WalkDir::new(path).into_iter(); for entry in walker.filter_entry(|e| !is_ignored(e)) { let entry = entry.unwrap(); if entry.file_type().is_file() { println!("{}", entry.path().display()); count(&ss, entry.path(), &mut stats); } } // println!("{:?}", stats); print_stats(&stats); } syntect-no-panic-6.0.0/examples/syntest.rs000064400000000000000000000373271046102023000167330ustar 00000000000000//! An example of using syntect for testing syntax definitions. //! Basically exactly the same as what Sublime Text can do, //! but without needing ST installed // To run tests only for a particular package, while showing the operations, you could use: // cargo run --example syntest -- --debug testdata/Packages/Makefile/ // to specify that the syntax definitions should be parsed instead of loaded from the dump file, // you can tell it where to parse them from - the following will execute only 1 syntax test after // parsing the sublime-syntax files in the JavaScript folder: // cargo run --example syntest testdata/Packages/JavaScript/syntax_test_json.json testdata/Packages/JavaScript/ use syntect::easy::ScopeRegionIterator; use syntect::highlighting::ScopeSelectors; use syntect::parsing::{ParseState, Scope, ScopeStack, SyntaxSet, SyntaxSetBuilder}; use std::cmp::{max, min}; use std::fs::File; use std::io::{BufRead, BufReader}; use std::path::Path; use std::str::FromStr; use std::time::Instant; use getopts::Options; use once_cell::sync::Lazy; use regex::Regex; use walkdir::{DirEntry, WalkDir}; #[derive(Debug, Clone, PartialEq, Eq)] pub enum SyntaxTestHeaderError { MalformedHeader, SyntaxDefinitionNotFound, } #[derive(Debug, Clone, PartialEq, Eq)] pub enum SyntaxTestFileResult { FailedAssertions(usize, usize), Success(usize), } pub static SYNTAX_TEST_HEADER_PATTERN: Lazy = Lazy::new(|| { Regex::new( r#"(?xm) ^(?P\s*\S+) \s+SYNTAX\sTEST\s+ "(?P[^"]+)" \s*(?P\S+)?$ "#, ) .unwrap() }); pub static SYNTAX_TEST_ASSERTION_PATTERN: Lazy = Lazy::new(|| { Regex::new( r#"(?xm) \s*(?: (?P<-)|(?P\^+) )(.*)$"#, ) .unwrap() }); #[derive(Clone, Copy)] struct OutputOptions { time: bool, debug: bool, summary: bool, } #[derive(Debug)] struct AssertionRange<'a> { begin_char: usize, end_char: usize, scope_selector_text: &'a str, is_pure_assertion_line: bool, } #[derive(Debug)] struct ScopedText { scope: Vec, char_start: usize, text_len: usize, } #[derive(Debug)] struct RangeTestResult { column_begin: usize, column_end: usize, success: bool, } fn get_line_assertion_details<'a>( testtoken_start: &str, testtoken_end: Option<&str>, line: &'a str, ) -> Option> { // if the test start token specified in the test file's header is on the line if let Some(index) = line.find(testtoken_start) { let (before_token_start, token_and_rest_of_line) = line.split_at(index); if let Some(captures) = SYNTAX_TEST_ASSERTION_PATTERN.captures(&token_and_rest_of_line[testtoken_start.len()..]) { let mut sst = captures.get(3).unwrap().as_str(); // get the scope selector text let mut only_whitespace_after_token_end = true; if let Some(token) = testtoken_end { // if there is an end token defined in the test file header if let Some(end_token_pos) = sst.find(token) { // and there is an end token in the line let (ss, after_token_end) = sst.split_at(end_token_pos); // the scope selector text ends at the end token sst = ss; only_whitespace_after_token_end = after_token_end.trim_end().is_empty(); } } return Some(AssertionRange { begin_char: index + if captures.get(2).is_some() { testtoken_start.len() + captures.get(2).unwrap().start() } else { 0 }, end_char: index + if captures.get(2).is_some() { testtoken_start.len() + captures.get(2).unwrap().end() } else { 1 }, scope_selector_text: sst, is_pure_assertion_line: before_token_start.trim_start().is_empty() && only_whitespace_after_token_end, // if only whitespace surrounds the test tokens on the line, then it is a pure assertion line }); } } None } fn process_assertions( assertion: &AssertionRange<'_>, test_against_line_scopes: &[ScopedText], ) -> Vec { // format the scope selector to include a space at the beginning, because, currently, ScopeSelector expects excludes to begin with " -" // and they are sometimes in the syntax test as ^^^-comment, for example let selector = ScopeSelectors::from_str(&format!(" {}", &assertion.scope_selector_text)).unwrap(); // find the scope at the specified start column, and start matching the selector through the rest of the tokens on the line from there until the end column is reached let mut results = Vec::new(); for scoped_text in test_against_line_scopes .iter() .skip_while(|s| s.char_start + s.text_len <= assertion.begin_char) .take_while(|s| s.char_start < assertion.end_char) { let match_value = selector.does_match(scoped_text.scope.as_slice()); let result = RangeTestResult { column_begin: max(scoped_text.char_start, assertion.begin_char), column_end: min( scoped_text.char_start + scoped_text.text_len, assertion.end_char, ), success: match_value.is_some(), }; results.push(result); } // don't ignore assertions after the newline, they should be treated as though they are asserting against the newline let last = test_against_line_scopes.last().unwrap(); if last.char_start + last.text_len < assertion.end_char { let match_value = selector.does_match(last.scope.as_slice()); let result = RangeTestResult { column_begin: max(last.char_start + last.text_len, assertion.begin_char), column_end: assertion.end_char, success: match_value.is_some(), }; results.push(result); } results } /// If `parse_test_lines` is `false` then lines that only contain assertions are not parsed fn test_file( ss: &SyntaxSet, path: &Path, parse_test_lines: bool, out_opts: OutputOptions, ) -> Result { use syntect::util::debug_print_ops; let f = File::open(path).unwrap(); let mut reader = BufReader::new(f); let mut line = String::new(); // read the first line from the file - if we have reached EOF already, it's an invalid file if reader.read_line(&mut line).unwrap() == 0 { return Err(SyntaxTestHeaderError::MalformedHeader); } line = line.replace('\r', ""); // parse the syntax test header in the first line of the file let header_line = line.clone(); let search_result = SYNTAX_TEST_HEADER_PATTERN.captures(&header_line); let captures = search_result.ok_or(SyntaxTestHeaderError::MalformedHeader)?; let testtoken_start = captures.name("testtoken_start").unwrap().as_str(); let testtoken_end = captures.name("testtoken_end").map(|c| c.as_str()); let syntax_file = captures.name("syntax_file").unwrap().as_str(); // find the relevant syntax definition to parse the file with - case is important! if !out_opts.summary { println!( "The test file references syntax definition file: {}", syntax_file ); } let syntax = ss .find_syntax_by_path(syntax_file) .ok_or(SyntaxTestHeaderError::SyntaxDefinitionNotFound)?; // iterate over the lines of the file, testing them let mut state = ParseState::new(syntax, false); let mut stack = ScopeStack::new(); let mut current_line_number = 1; let mut test_against_line_number = 1; let mut scopes_on_line_being_tested = Vec::new(); let mut previous_non_assertion_line = line.to_string(); let mut assertion_failures: usize = 0; let mut total_assertions: usize = 0; loop { // over lines of file, starting with the header line let mut line_only_has_assertion = false; let mut line_has_assertion = false; if let Some(assertion) = get_line_assertion_details(testtoken_start, testtoken_end, &line) { let result = process_assertions(&assertion, &scopes_on_line_being_tested); total_assertions += assertion.end_char - assertion.begin_char; for failure in result.iter().filter(|r| !r.success) { let length = failure.column_end - failure.column_begin; let text: String = previous_non_assertion_line .chars() .skip(failure.column_begin) .take(length) .collect(); if !out_opts.summary { println!( " Assertion selector {:?} \ from line {:?} failed against line {:?}, column range {:?}-{:?} \ (with text {:?}) \ has scope {:?}", assertion.scope_selector_text.trim(), current_line_number, test_against_line_number, failure.column_begin, failure.column_end, text, scopes_on_line_being_tested .iter() .find(|s| s.char_start + s.text_len > failure.column_begin) .unwrap_or_else(|| scopes_on_line_being_tested.last().unwrap()) .scope ); } assertion_failures += failure.column_end - failure.column_begin; } line_only_has_assertion = assertion.is_pure_assertion_line; line_has_assertion = true; } if !line_only_has_assertion || parse_test_lines { if !line_has_assertion { // ST seems to ignore lines that have assertions when calculating which line the assertion tests against scopes_on_line_being_tested.clear(); test_against_line_number = current_line_number; previous_non_assertion_line = line.to_string(); } if out_opts.debug && !line_only_has_assertion { println!( "-- debugging line {} -- scope stack: {:?}", current_line_number, stack ); } let ops = state.parse_line(&line, ss).unwrap(); if out_opts.debug && !line_only_has_assertion { if ops.is_empty() && !line.is_empty() { println!("no operations for this line..."); } else { debug_print_ops(&line, &ops); } } let mut col: usize = 0; for (s, op) in ScopeRegionIterator::new(&ops, &line) { stack.apply(op).unwrap(); if s.is_empty() { // in this case we don't care about blank tokens continue; } if !line_has_assertion { // if the line has no assertions on it, remember the scopes on the line so we can test against them later let len = s.chars().count(); scopes_on_line_being_tested.push(ScopedText { char_start: col, text_len: len, scope: stack.as_slice().to_vec(), }); // TODO: warn when there are duplicate adjacent (non-meta?) scopes, as it is almost always undesired col += len; } } } line.clear(); current_line_number += 1; if reader.read_line(&mut line).unwrap() == 0 { break; } line = line.replace('\r', ""); } let res = if assertion_failures > 0 { Ok(SyntaxTestFileResult::FailedAssertions( assertion_failures, total_assertions, )) } else { Ok(SyntaxTestFileResult::Success(total_assertions)) }; if out_opts.summary { if let Ok(SyntaxTestFileResult::FailedAssertions(failures, _)) = res { // Don't print total assertion count so that diffs don't pick up new succeeding tests println!("FAILED {}: {}", path.display(), failures); } } else { println!("{:?}", res); } res } fn main() { let args: Vec = std::env::args().collect(); let mut opts = Options::new(); opts.optflag("d", "debug", "Show parsing results for each test line"); opts.optflag( "t", "time", "Time execution as a more broad-ranging benchmark", ); opts.optflag("s", "summary", "Print only summary of test failures"); let matches = match opts.parse(&args[1..]) { Ok(m) => m, Err(f) => { panic!("{}", f.to_string()) } }; let tests_path = if matches.free.is_empty() { "." } else { &args[1] }; let syntaxes_path = if matches.free.len() < 2 { "" } else { &args[2] }; // load the syntaxes from disk if told to // (as opposed to from the binary dumps) // this helps to ensure that a recompile isn't needed // when using this for syntax development let mut ss = if syntaxes_path.is_empty() { SyntaxSet::load_defaults_newlines() // note we load the version with newlines } else { SyntaxSet::new() }; if !syntaxes_path.is_empty() { println!("loading syntax definitions from {}", syntaxes_path); let mut builder = SyntaxSetBuilder::new(); builder.add_from_folder(syntaxes_path, true).unwrap(); // note that we load the version with newlines ss = builder.build(); } let out_opts = OutputOptions { debug: matches.opt_present("debug"), time: matches.opt_present("time"), summary: matches.opt_present("summary"), }; let exit_code = recursive_walk(&ss, tests_path, out_opts); println!("exiting with code {}", exit_code); std::process::exit(exit_code); } fn recursive_walk(ss: &SyntaxSet, path: &str, out_opts: OutputOptions) -> i32 { let mut exit_code: i32 = 0; // exit with code 0 by default, if all tests pass let walker = WalkDir::new(path).into_iter(); // accumulate and sort for consistency of diffs across machines let mut files = Vec::new(); for entry in walker.filter_entry(|e| e.file_type().is_dir() || is_a_syntax_test_file(e)) { let entry = entry.unwrap(); if entry.file_type().is_file() { files.push(entry.path().to_owned()); } } files.sort(); for path in &files { if !out_opts.summary { println!("Testing file {}", path.display()); } let start = Instant::now(); let result = test_file(ss, path, true, out_opts); let elapsed = start.elapsed(); if out_opts.time { let ms = (elapsed.as_secs() * 1_000) + elapsed.subsec_millis() as u64; println!("{} ms for file {}", ms, path.display()); } if exit_code != 2 { // leave exit code 2 if there was an error if result.is_err() { // set exit code 2 if there was an error exit_code = 2; } else if let Ok(SyntaxTestFileResult::FailedAssertions(_, _)) = result { exit_code = 1; // otherwise, if there were failures, exit with code 1 } } } exit_code } fn is_a_syntax_test_file(entry: &DirEntry) -> bool { entry .file_name() .to_str() .map(|s| s.starts_with("syntax_test_")) .unwrap_or(false) } syntect-no-panic-6.0.0/src/dumps.rs000064400000000000000000000240551046102023000153150ustar 00000000000000//! Methods for dumping serializable structs to a compressed binary format, //! used to allow fast startup times //! //! Currently syntect serializes [`SyntaxSet`] structs with [`dump_to_uncompressed_file`] //! into `.packdump` files and likewise [`ThemeSet`] structs to `.themedump` files with [`dump_to_file`]. //! //! You can use these methods to manage your own caching of compiled syntaxes and //! themes. And even your own `serde::Serialize` structures if you want to //! be consistent with your format. //! //! [`SyntaxSet`]: ../parsing/struct.SyntaxSet.html //! [`dump_to_uncompressed_file`]: fn.dump_to_uncompressed_file.html //! [`ThemeSet`]: ../highlighting/struct.ThemeSet.html //! [`dump_to_file`]: fn.dump_to_file.html #[cfg(feature = "default-themes")] use crate::highlighting::ThemeSet; #[cfg(feature = "default-syntaxes")] use crate::parsing::SyntaxSet; #[cfg(feature = "dump-load")] use bincode::deserialize_from; #[cfg(feature = "dump-create")] use bincode::serialize_into; use bincode::Result; #[cfg(feature = "dump-load")] use flate2::bufread::ZlibDecoder; #[cfg(feature = "dump-create")] use flate2::write::ZlibEncoder; #[cfg(feature = "dump-create")] use flate2::Compression; #[cfg(feature = "dump-load")] use serde::de::DeserializeOwned; #[cfg(feature = "dump-create")] use serde::ser::Serialize; use std::fs::File; #[cfg(feature = "dump-load")] use std::io::BufRead; #[cfg(feature = "dump-create")] use std::io::{BufWriter, Write}; use std::path::Path; /// Dumps an object to the given writer in a compressed binary format /// /// The writer is encoded with the `bincode` crate and compressed with `flate2`. #[cfg(feature = "dump-create")] pub fn dump_to_writer(to_dump: &T, output: W) -> Result<()> { serialize_to_writer_impl(to_dump, output, true) } /// Dumps an object to a binary array in the same format as [`dump_to_writer`] /// /// [`dump_to_writer`]: fn.dump_to_writer.html #[cfg(feature = "dump-create")] pub fn dump_binary(o: &T) -> Vec { let mut v = Vec::new(); dump_to_writer(o, &mut v).unwrap(); v } /// Dumps an encodable object to a file at a given path, in the same format as [`dump_to_writer`] /// /// If a file already exists at that path it will be overwritten. The files created are encoded with /// the `bincode` crate and then compressed with the `flate2` crate. /// /// [`dump_to_writer`]: fn.dump_to_writer.html #[cfg(feature = "dump-create")] pub fn dump_to_file>(o: &T, path: P) -> Result<()> { let out = BufWriter::new(File::create(path)?); dump_to_writer(o, out) } /// A helper function for decoding and decompressing data from a reader #[cfg(feature = "dump-load")] pub fn from_reader(input: R) -> Result { deserialize_from_reader_impl(input, true) } /// Returns a fully loaded object from a binary dump. /// /// This function panics if the dump is invalid. #[cfg(feature = "dump-load")] pub fn from_binary(v: &[u8]) -> T { from_reader(v).unwrap() } /// Returns a fully loaded object from a binary dump file. #[cfg(feature = "dump-load")] pub fn from_dump_file>(path: P) -> Result { let contents = std::fs::read(path)?; from_reader(&contents[..]) } /// To be used when serializing a [`SyntaxSet`] to a file. A [`SyntaxSet`] /// itself shall not be compressed, because the data for its lazy-loaded /// syntaxes are already compressed. Compressing another time just results in /// bad performance. #[cfg(feature = "dump-create")] pub fn dump_to_uncompressed_file>(o: &T, path: P) -> Result<()> { let out = BufWriter::new(File::create(path)?); serialize_to_writer_impl(o, out, false) } /// To be used when deserializing a [`SyntaxSet`] that was previously written to /// file using [dump_to_uncompressed_file]. #[cfg(feature = "dump-load")] pub fn from_uncompressed_dump_file>(path: P) -> Result { let contents = std::fs::read(path)?; deserialize_from_reader_impl(&contents[..], false) } /// To be used when deserializing a [`SyntaxSet`] from raw data, for example /// data that has been embedded in your own binary with the [`include_bytes!`] /// macro. #[cfg(feature = "dump-load")] pub fn from_uncompressed_data(v: &[u8]) -> Result { deserialize_from_reader_impl(v, false) } /// Private low level helper function used to implement the public API. #[cfg(feature = "dump-create")] fn serialize_to_writer_impl( to_dump: &T, output: W, use_compression: bool, ) -> Result<()> { if use_compression { let mut encoder = std::io::BufWriter::new(ZlibEncoder::new(output, Compression::best())); serialize_into(&mut encoder, to_dump) } else { serialize_into(output, to_dump) } } /// Private low level helper function used to implement the public API. #[cfg(feature = "dump-load")] fn deserialize_from_reader_impl( input: R, use_compression: bool, ) -> Result { if use_compression { let mut decoder = ZlibDecoder::new(input); deserialize_from(&mut decoder) } else { deserialize_from(input) } } #[cfg(feature = "default-syntaxes")] impl SyntaxSet { /// Instantiates a new syntax set from a binary dump of Sublime Text's default open source /// syntax definitions. /// /// These dumps are included in this library's binary for convenience. /// /// This method loads the version for parsing line strings with no `\n` characters at the end. /// If you're able to efficiently include newlines at the end of strings, use /// [`load_defaults_newlines`] since it works better. See [`SyntaxSetBuilder::add_from_folder`] /// for more info on this issue. /// /// This is the recommended way of creating a syntax set for non-advanced use cases. It is also /// significantly faster than loading the YAML files. /// /// Note that you can load additional syntaxes after doing this. If you want you can even use /// the fact that SyntaxDefinitions are serializable with the bincode crate to cache dumps of /// additional syntaxes yourself. /// /// [`load_defaults_newlines`]: #method.load_defaults_nonewlines /// [`SyntaxSetBuilder::add_from_folder`]: struct.SyntaxSetBuilder.html#method.add_from_folder pub fn load_defaults_nonewlines() -> SyntaxSet { #[cfg(feature = "metadata")] { let mut ps: SyntaxSet = from_uncompressed_data(include_bytes!("../assets/default_nonewlines.packdump")) .unwrap(); let metadata = from_binary(include_bytes!("../assets/default_metadata.packdump")); ps.metadata = metadata; ps } #[cfg(not(feature = "metadata"))] { from_uncompressed_data(include_bytes!("../assets/default_nonewlines.packdump")).unwrap() } } /// Same as [`load_defaults_nonewlines`] but for parsing line strings with newlines at the end. /// /// These are separate methods because thanks to linker garbage collection, only the serialized /// dumps for the method(s) you call will be included in the binary (each is ~200kb for now). /// /// [`load_defaults_nonewlines`]: #method.load_defaults_nonewlines pub fn load_defaults_newlines() -> SyntaxSet { #[cfg(feature = "metadata")] { let mut ps: SyntaxSet = from_uncompressed_data(include_bytes!("../assets/default_newlines.packdump")) .unwrap(); let metadata = from_binary(include_bytes!("../assets/default_metadata.packdump")); ps.metadata = metadata; ps } #[cfg(not(feature = "metadata"))] { from_uncompressed_data(include_bytes!("../assets/default_newlines.packdump")).unwrap() } } } #[cfg(feature = "default-themes")] impl ThemeSet { /// Loads the set of default themes /// Currently includes (these are the keys for the map): /// /// - `base16-ocean.dark`,`base16-eighties.dark`,`base16-mocha.dark`,`base16-ocean.light` /// - `InspiredGitHub` from [here](https://github.com/sethlopezme/InspiredGitHub.tmtheme) /// - `Solarized (dark)` and `Solarized (light)` pub fn load_defaults() -> ThemeSet { from_binary(include_bytes!("../assets/default.themedump")) } } #[cfg(test)] mod tests { #[cfg(all( feature = "yaml-load", feature = "dump-create", feature = "dump-load", feature = "parsing" ))] #[test] fn can_dump_and_load() { use super::*; use crate::parsing::SyntaxSetBuilder; let mut builder = SyntaxSetBuilder::new(); builder.add_from_folder("testdata/Packages", false).unwrap(); let ss = builder.build(); let bin = dump_binary(&ss); println!("{:?}", bin.len()); let ss2: SyntaxSet = from_binary(&bin[..]); assert_eq!(ss.syntaxes().len(), ss2.syntaxes().len()); } #[cfg(all(feature = "yaml-load", feature = "dump-create", feature = "dump-load"))] #[test] fn dump_is_deterministic() { use super::*; use crate::parsing::SyntaxSetBuilder; let mut builder1 = SyntaxSetBuilder::new(); builder1 .add_from_folder("testdata/Packages", false) .unwrap(); let ss1 = builder1.build(); let bin1 = dump_binary(&ss1); let mut builder2 = SyntaxSetBuilder::new(); builder2 .add_from_folder("testdata/Packages", false) .unwrap(); let ss2 = builder2.build(); let bin2 = dump_binary(&ss2); // This is redundant, but assert_eq! can be really slow on a large // vector, so check the length first to fail faster. assert_eq!(bin1.len(), bin2.len()); assert_eq!(bin1, bin2); } #[cfg(feature = "default-themes")] #[test] fn has_default_themes() { use crate::highlighting::ThemeSet; let themes = ThemeSet::load_defaults(); assert!(themes.themes.len() > 4); } } syntect-no-panic-6.0.0/src/easy.rs000064400000000000000000000325231046102023000151250ustar 00000000000000//! API wrappers for common use cases like highlighting strings and //! files without caring about intermediate semantic representation //! and caching. use crate::highlighting::{HighlightIterator, HighlightState, Highlighter, Style, Theme}; use crate::parsing::{ParseState, ScopeStack, ScopeStackOp, SyntaxReference, SyntaxSet}; use crate::{Error, LoadingError}; use std::fs::File; use std::io::BufReader; use std::path::Path; // use util::debug_print_ops; /// Simple way to go directly from lines of text to colored tokens. /// /// Depending on how you load the syntaxes (see the [`SyntaxSet`] docs), this can either take /// strings with trailing `\n`s or without. /// /// [`SyntaxSet`]: ../parsing/struct.SyntaxSet.html /// /// # Examples /// /// Prints colored lines of a string to the terminal /// /// ``` /// use syntect::easy::HighlightLines; /// use syntect::parsing::SyntaxSet; /// use syntect::highlighting::{ThemeSet, Style}; /// use syntect::util::{as_24_bit_terminal_escaped, LinesWithEndings}; /// /// // Load these once at the start of your program /// let ps = SyntaxSet::load_defaults_newlines(); /// let ts = ThemeSet::load_defaults(); /// /// let syntax = ps.find_syntax_by_extension("rs").unwrap(); /// let mut h = HighlightLines::new(syntax, &ts.themes["base16-ocean.dark"]); /// let s = "pub struct Wow { hi: u64 }\nfn blah() -> u64 {}"; /// for line in LinesWithEndings::from(s) { // LinesWithEndings enables use of newlines mode /// let ranges: Vec<(Style, &str)> = h.highlight_line(line, &ps).unwrap(); /// let escaped = as_24_bit_terminal_escaped(&ranges[..], true); /// print!("{}", escaped); /// } /// ``` pub struct HighlightLines<'a> { highlighter: Highlighter<'a>, parse_state: ParseState, highlight_state: HighlightState, } /// Options for highlighting operations #[derive(Debug, Clone, Copy, Default)] pub struct HighlightOptions { /// If true, errors in parsing the syntax will have the minimal possible impact, /// highlighting will proceed as if the error did not occur. /// If false, errors will be propagated as errors. pub ignore_errors: bool, } impl<'a> HighlightLines<'a> { pub fn new( syntax: &SyntaxReference, theme: &'a Theme, options: HighlightOptions, ) -> HighlightLines<'a> { let highlighter = Highlighter::new(theme); let highlight_state = HighlightState::new(&highlighter, ScopeStack::new()); HighlightLines { highlighter, parse_state: ParseState::new(syntax, options.ignore_errors), highlight_state, } } #[deprecated( since = "5.0.0", note = "Renamed to `highlight_line` to make it clear it should be passed a single line at a time" )] pub fn highlight<'b>( &mut self, line: &'b str, syntax_set: &SyntaxSet, ) -> Vec<(Style, &'b str)> { self.highlight_line(line, syntax_set) .expect("`highlight` is deprecated, use `highlight_line` instead") } /// Highlights a line of a file pub fn highlight_line<'b>( &mut self, line: &'b str, syntax_set: &SyntaxSet, ) -> Result, Error> { // println!("{}", self.highlight_state.path); let ops = self.parse_state.parse_line(line, syntax_set)?; // use util::debug_print_ops; // debug_print_ops(line, &ops); let iter = HighlightIterator::new(&mut self.highlight_state, &ops[..], line, &self.highlighter); Ok(iter.collect()) } } /// Convenience struct containing everything you need to highlight a file /// /// Use the `reader` to get the lines of the file and the `highlight_lines` to highlight them. See /// the [`new`] method docs for more information. /// /// [`new`]: #method.new pub struct HighlightFile<'a> { pub reader: BufReader, pub highlight_lines: HighlightLines<'a>, } impl<'a> HighlightFile<'a> { /// Constructs a file reader and a line highlighter to get you reading files as fast as possible. /// /// This auto-detects the syntax from the extension and constructs a [`HighlightLines`] with the /// correct syntax and theme. /// /// [`HighlightLines`]: struct.HighlightLines.html /// /// # Examples /// /// Using the `newlines` mode is a bit involved but yields more robust and glitch-free highlighting, /// as well as being slightly faster since it can re-use a line buffer. /// /// ``` /// use syntect::parsing::SyntaxSet; /// use syntect::highlighting::{ThemeSet, Style}; /// use syntect::util::as_24_bit_terminal_escaped; /// use syntect::easy::HighlightFile; /// use std::io::BufRead; /// /// # use std::io; /// # fn foo() -> io::Result<()> { /// let ss = SyntaxSet::load_defaults_newlines(); /// let ts = ThemeSet::load_defaults(); /// /// let mut highlighter = HighlightFile::new("testdata/highlight_test.erb", &ss, &ts.themes["base16-ocean.dark"]).unwrap(); /// let mut line = String::new(); /// while highlighter.reader.read_line(&mut line)? > 0 { /// { /// let regions: Vec<(Style, &str)> = highlighter.highlight_lines.highlight_line(&line, &ss).unwrap(); /// print!("{}", as_24_bit_terminal_escaped(®ions[..], true)); /// } // until NLL this scope is needed so we can clear the buffer after /// line.clear(); // read_line appends so we need to clear between lines /// } /// # Ok(()) /// # } /// ``` /// /// This example uses `reader.lines()` to get lines without a newline character, it's simpler but may break on rare tricky cases. /// /// ``` /// use syntect::parsing::SyntaxSet; /// use syntect::highlighting::{ThemeSet, Style}; /// use syntect::util::as_24_bit_terminal_escaped; /// use syntect::easy::HighlightFile; /// use std::io::BufRead; /// /// let ss = SyntaxSet::load_defaults_nonewlines(); /// let ts = ThemeSet::load_defaults(); /// /// let mut highlighter = HighlightFile::new("testdata/highlight_test.erb", &ss, &ts.themes["base16-ocean.dark"]).unwrap(); /// for maybe_line in highlighter.reader.lines() { /// let line = maybe_line.unwrap(); /// let regions: Vec<(Style, &str)> = highlighter.highlight_lines.highlight_line(&line, &ss).unwrap(); /// println!("{}", as_24_bit_terminal_escaped(®ions[..], true)); /// } /// ``` pub fn new>( path_obj: P, ss: &SyntaxSet, theme: &'a Theme, options: HighlightOptions, ) -> Result, LoadingError> { let path: &Path = path_obj.as_ref(); let f = File::open(path)?; let syntax = ss .find_syntax_for_file(path)? .unwrap_or_else(|| ss.find_syntax_plain_text()); Ok(HighlightFile { reader: BufReader::new(f), highlight_lines: HighlightLines::new(syntax, theme, options), }) } } /// Iterator over the ranges of a line which a given the operation from the parser applies. /// /// Use [`ScopeRegionIterator`] to obtain directly regions (`&str`s) from the line. /// /// To use, just keep your own [`ScopeStack`] and then `ScopeStack.apply(op)` the operation that is /// yielded at the top of your `for` loop over this iterator. Now you have a substring of the line /// and the scope stack for that token. /// /// See the `synstats.rs` example for an example of using this iterator. /// /// **Note:** This will often return empty ranges, just `continue` after applying the op if you /// don't want them. /// /// [`ScopeStack`]: ../parsing/struct.ScopeStack.html /// [`ScopeRegionIterator`]: ./struct.ScopeRegionIterator.html #[derive(Debug)] pub struct ScopeRangeIterator<'a> { ops: &'a [(usize, ScopeStackOp)], line: &'a str, index: usize, last_str_index: usize, } impl<'a> ScopeRangeIterator<'a> { pub fn new(ops: &'a [(usize, ScopeStackOp)], line: &'a str) -> ScopeRangeIterator<'a> { ScopeRangeIterator { ops, line, index: 0, last_str_index: 0, } } } static NOOP_OP: ScopeStackOp = ScopeStackOp::Noop; impl<'a> Iterator for ScopeRangeIterator<'a> { type Item = (std::ops::Range, &'a ScopeStackOp); fn next(&mut self) -> Option { if self.index > self.ops.len() { return None; } // region extends up to next operation (ops[index]) or string end if there is none // note the next operation may be at, last_str_index, in which case the region is empty let next_str_i = if self.index == self.ops.len() { self.line.len() } else { self.ops[self.index].0 }; let range = self.last_str_index..next_str_i; self.last_str_index = next_str_i; // the first region covers everything before the first op, which may be empty let op = if self.index == 0 { &NOOP_OP } else { &self.ops[self.index - 1].1 }; self.index += 1; Some((range, op)) } } /// A convenience wrapper over [`ScopeRangeIterator`] to return `&str`s directly. /// /// To use, just keep your own [`ScopeStack`] and then `ScopeStack.apply(op)` the operation that is /// yielded at the top of your `for` loop over this iterator. Now you have a substring of the line /// and the scope stack for that token. /// /// See the `synstats.rs` example for an example of using this iterator. /// /// **Note:** This will often return empty regions, just `continue` after applying the op if you /// don't want them. /// /// [`ScopeStack`]: ../parsing/struct.ScopeStack.html /// [`ScopeRangeIterator`]: ./struct.ScopeRangeIterator.html #[derive(Debug)] pub struct ScopeRegionIterator<'a> { range_iter: ScopeRangeIterator<'a>, } impl<'a> ScopeRegionIterator<'a> { pub fn new(ops: &'a [(usize, ScopeStackOp)], line: &'a str) -> ScopeRegionIterator<'a> { ScopeRegionIterator { range_iter: ScopeRangeIterator::new(ops, line), } } } impl<'a> Iterator for ScopeRegionIterator<'a> { type Item = (&'a str, &'a ScopeStackOp); fn next(&mut self) -> Option { let (range, op) = self.range_iter.next()?; Some((&self.range_iter.line[range], op)) } } #[cfg(test)] mod tests { use super::*; #[cfg(feature = "default-themes")] use crate::highlighting::ThemeSet; use crate::parsing::{ParseState, ScopeStack, SyntaxSet}; use std::str::FromStr; #[cfg(all(feature = "default-syntaxes", feature = "default-themes"))] #[test] fn can_highlight_lines() { let ss = SyntaxSet::load_defaults_nonewlines(); let ts = ThemeSet::load_defaults(); let syntax = ss.find_syntax_by_extension("rs").unwrap(); let mut h = HighlightLines::new( syntax, &ts.themes["base16-ocean.dark"], HighlightOptions::default(), ); let ranges = h .highlight_line("pub struct Wow { hi: u64 }", &ss) .expect("#[cfg(test)]"); assert!(ranges.len() > 4); } #[cfg(all(feature = "default-syntaxes", feature = "default-themes"))] #[test] fn can_highlight_file() { let ss = SyntaxSet::load_defaults_nonewlines(); let ts = ThemeSet::load_defaults(); HighlightFile::new( "testdata/highlight_test.erb", &ss, &ts.themes["base16-ocean.dark"], HighlightOptions::default(), ) .unwrap(); } #[cfg(feature = "default-syntaxes")] #[test] fn can_find_regions() { let ss = SyntaxSet::load_defaults_nonewlines(); let mut state = ParseState::new(ss.find_syntax_by_extension("rb").unwrap(), false); let line = "lol =5+2"; let ops = state.parse_line(line, &ss).expect("#[cfg(test)]"); let mut stack = ScopeStack::new(); let mut token_count = 0; for (s, op) in ScopeRegionIterator::new(&ops, line) { stack.apply(op).expect("#[cfg(test)]"); if s.is_empty() { // in this case we don't care about blank tokens continue; } if token_count == 1 { assert_eq!( stack, ScopeStack::from_str("source.ruby keyword.operator.assignment.ruby").unwrap() ); assert_eq!(s, "="); } token_count += 1; println!("{:?} {}", s, stack); } assert_eq!(token_count, 5); } #[cfg(feature = "default-syntaxes")] #[test] fn can_find_regions_with_trailing_newline() { let ss = SyntaxSet::load_defaults_newlines(); let mut state = ParseState::new(ss.find_syntax_by_extension("rb").unwrap(), false); let lines = ["# hello world\n", "lol=5+2\n"]; let mut stack = ScopeStack::new(); for line in lines.iter() { let ops = state.parse_line(line, &ss).expect("#[cfg(test)]"); println!("{:?}", ops); let mut iterated_ops: Vec<&ScopeStackOp> = Vec::new(); for (_, op) in ScopeRegionIterator::new(&ops, line) { stack.apply(op).expect("#[cfg(test)]"); iterated_ops.push(op); println!("{:?}", op); } let all_ops = ops.iter().map(|t| &t.1); assert_eq!(all_ops.count(), iterated_ops.len() - 1); // -1 because we want to ignore the NOOP } } } syntect-no-panic-6.0.0/src/escape.rs000064400000000000000000000035371046102023000154270ustar 00000000000000// Copyright 2013 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. //! HTML Escaping //! //! This module contains one unit-struct which can be used to HTML-escape a //! string of text (for use in a format string). use std::fmt; /// Wrapper struct which will emit the HTML-escaped version of the contained /// string when passed to a format string. pub struct Escape<'a>(pub &'a str); impl<'a> fmt::Display for Escape<'a> { fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { // Because the internet is always right, turns out there's not that many // characters to escape: http://stackoverflow.com/questions/7381974 let Escape(s) = *self; let pile_o_bits = s; let mut last = 0; for (i, ch) in s.bytes().enumerate() { match ch as char { '<' | '>' | '&' | '\'' | '"' => { fmt.write_str(&pile_o_bits[last..i])?; let s = match ch as char { '>' => ">", '<' => "<", '&' => "&", '\'' => "'", '"' => """, _ => unreachable!(), }; fmt.write_str(s)?; last = i + 1; } _ => {} } } if last < s.len() { fmt.write_str(&pile_o_bits[last..])?; } Ok(()) } } syntect-no-panic-6.0.0/src/highlighting/Readme.md000064400000000000000000000007601046102023000200000ustar 00000000000000# Attribution Much of the code in this module/folder is heavily based on and largely copy-pasted from the the [sublimate](https://github.com/defuz/sublimate) project by [Ivan Ivashchenko a.k.a @defuz](https://github.com/defuz). The project was released under the MIT license. I needed to copy-paste the code here because it required some adaptations to work with the other parts of syntect. One example modification is using my bit-packed `Scope` type instead of the original string-based one. syntect-no-panic-6.0.0/src/highlighting/highlighter.rs000064400000000000000000000560711046102023000211330ustar 00000000000000//! Iterators and data structures for transforming parsing information into styled text. // Code based on https://github.com/defuz/sublimate/blob/master/src/core/syntax/highlighter.rs // released under the MIT license by @defuz use std::iter::Iterator; use std::ops::Range; use super::selector::ScopeSelector; use super::style::{Color, FontStyle, Style, StyleModifier}; use super::theme::{Theme, ThemeItem}; use crate::parsing::{ BasicScopeStackOp, MatchPower, Scope, ScopeStack, ScopeStackOp, ATOM_LEN_BITS, }; /// Basically a wrapper around a [`Theme`] preparing it to be used for highlighting. /// /// This is part of the API to preserve the possibility of caching matches of the /// selectors of the theme on various scope paths or setting up some kind of /// accelerator structure. /// /// So for now this does very little but eventually if you keep it around between /// highlighting runs it will preserve its cache. /// /// [`Theme`]: struct.Theme.html #[derive(Debug)] pub struct Highlighter<'a> { theme: &'a Theme, /// Cache of the selectors in the theme that are only one scope /// In most themes this is the majority, hence the usefullness single_selectors: Vec<(Scope, StyleModifier)>, multi_selectors: Vec<(ScopeSelector, StyleModifier)>, // TODO single_cache: HashMap>, } /// Keeps a stack of scopes and styles as state between highlighting different lines. /// /// If you are highlighting an entire file you create one of these at the start and use it /// all the way to the end. /// /// # Caching /// /// One reason this is exposed is that since it implements `Clone` you can actually cache these /// (probably along with a [`ParseState`]) and only re-start highlighting from the point of a /// change. You could also do something fancy like only highlight a bit past the end of a user's /// screen and resume highlighting when they scroll down on large files. /// /// Alternatively you can save space by caching only the `path` field of this struct then re-create /// the `HighlightState` when needed by passing that stack as the `initial_stack` parameter to the /// [`new`] method. This takes less space but a small amount of time to re-create the style stack. /// /// **Note:** Caching is for advanced users who have tons of time to maximize performance or want to /// do so eventually. It is not recommended that you try caching the first time you implement /// highlighting. /// /// [`ParseState`]: ../parsing/struct.ParseState.html /// [`new`]: #method.new #[derive(Debug, Clone, PartialEq, Eq)] pub struct HighlightState { styles: Vecfoobar"; let expect2 = [ ", ", ", ", "", ]; expect_scope_stacks_with_syntax(line2, &expect2, syntax); } #[test] fn can_parse_non_consuming_pop_that_would_loop() { // See https://github.com/trishume/syntect/issues/127 let syntax = r#" name: test scope: source.test contexts: main: # This makes us go into "test" without consuming any characters - match: (?=hello) push: test test: # If we used this match, we'd go back to "main" without consuming anything, # and then back into "test", infinitely looping. ST detects this at this # point and ignores this match until at least one character matched. - match: (?!world) pop: true - match: \w+ scope: test.matched "#; let line = "hello"; let expect = [", "]; expect_scope_stacks(line, &expect, syntax); } #[test] fn can_parse_non_consuming_set_and_pop_that_would_loop() { let syntax = r#" name: test scope: source.test contexts: main: # This makes us go into "a" without advancing - match: (?=test) push: a a: # This makes us go into "b" without advancing - match: (?=t) set: b b: # If we used this match, we'd go back to "main" without having advanced, # which means we'd have an infinite loop like with the previous test. # So even for a "set", we have to check if we're advancing or not. - match: (?=t) pop: true - match: \w+ scope: test.matched "#; let line = "test"; let expect = [", "]; expect_scope_stacks(line, &expect, syntax); } #[test] fn can_parse_non_consuming_set_after_consuming_push_that_does_not_loop() { let syntax = r#" name: test scope: source.test contexts: main: # This makes us go into "a", but we consumed a character - match: t push: a - match: \w+ scope: test.matched a: # This makes us go into "b" without consuming - match: (?=e) set: b b: # This match does not result in an infinite loop because we already consumed # a character to get into "a", so it's ok to pop back into "main". - match: (?=e) pop: true "#; let line = "test"; let expect = [", "]; expect_scope_stacks(line, &expect, syntax); } #[test] fn can_parse_non_consuming_set_after_consuming_set_that_does_not_loop() { let syntax = r#" name: test scope: source.test contexts: main: - match: (?=hello) push: a - match: \w+ scope: test.matched a: - match: h set: b b: - match: (?=e) set: c c: # This is not an infinite loop because "a" consumed a character, so we can # actually pop back into main and then match the rest of the input. - match: (?=e) pop: true "#; let line = "hello"; let expect = [", "]; expect_scope_stacks(line, &expect, syntax); } #[test] fn can_parse_non_consuming_pop_that_would_loop_at_end_of_line() { let syntax = r#" name: test scope: source.test contexts: main: # This makes us go into "test" without consuming, even at the end of line - match: "" push: test test: - match: "" pop: true - match: \w+ scope: test.matched "#; let line = "hello"; let expect = [", "]; expect_scope_stacks(line, &expect, syntax); } #[test] fn can_parse_empty_but_consuming_set_that_does_not_loop() { let syntax = r#" name: test scope: source.test contexts: main: - match: (?=hello) push: a - match: ello scope: test.good a: # This is an empty match, but it consumed a character (the "h") - match: (?=e) set: b b: # .. so it's ok to pop back to main from here - match: "" pop: true - match: ello scope: test.bad "#; let line = "hello"; let expect = [", "]; expect_scope_stacks(line, &expect, syntax); } #[test] fn can_parse_non_consuming_pop_that_does_not_loop() { let syntax = r#" name: test scope: source.test contexts: main: # This is a non-consuming push, so "b" will need to check for a # non-consuming pop - match: (?=hello) push: [b, a] - match: ello scope: test.good a: # This pop is ok, it consumed "h" - match: (?=e) pop: true b: # This is non-consuming, and we set to "c" - match: (?=e) set: c c: # It's ok to pop back to "main" here because we consumed a character in the # meantime. - match: "" pop: true - match: ello scope: test.bad "#; let line = "hello"; let expect = [", "]; expect_scope_stacks(line, &expect, syntax); } #[test] fn can_parse_non_consuming_pop_with_multi_push_that_does_not_loop() { let syntax = r#" name: test scope: source.test contexts: main: - match: (?=hello) push: [b, a] - match: ello scope: test.good a: # This pop is ok, as we're not popping back to "main" yet (which would loop), # we're popping to "b" - match: "" pop: true - match: \w+ scope: test.bad b: - match: \w+ scope: test.good "#; let line = "hello"; let expect = [", "]; expect_scope_stacks(line, &expect, syntax); } #[test] fn can_parse_non_consuming_pop_of_recursive_context_that_does_not_loop() { let syntax = r#" name: test scope: source.test contexts: main: - match: xxx scope: test.good - include: basic-identifiers basic-identifiers: - match: '\w+::' scope: test.matched push: no-type-names no-type-names: - include: basic-identifiers - match: \w+ scope: test.matched.inside # This is a tricky one because when this is the best match, # we have two instances of "no-type-names" on the stack, so we're popping # back from "no-type-names" to another "no-type-names". - match: '' pop: true "#; let line = "foo::bar::* xxx"; let expect = [", "]; expect_scope_stacks(line, &expect, syntax); } #[test] fn can_parse_non_consuming_pop_order() { let syntax = r#" name: test scope: source.test contexts: main: - match: (?=hello) push: test test: # This matches first - match: (?=e) push: good # But this (looping) match replaces it, because it's an earlier match - match: (?=h) pop: true # And this should not replace it, as it's a later match (only matches at # the same position can replace looping pops). - match: (?=o) push: bad good: - match: \w+ scope: test.good bad: - match: \w+ scope: test.bad "#; let line = "hello"; let expect = [", "]; expect_scope_stacks(line, &expect, syntax); } #[test] fn can_parse_prototype_with_embed() { let syntax = r#" name: Javadoc scope: text.html.javadoc contexts: prototype: - match: \* scope: punctuation.definition.comment.javadoc main: - meta_include_prototype: false - match: /\*\* scope: comment.block.documentation.javadoc punctuation.definition.comment.begin.javadoc embed: contents embed_scope: comment.block.documentation.javadoc text.html.javadoc escape: \*/ escape_captures: 0: comment.block.documentation.javadoc punctuation.definition.comment.end.javadoc contents: - match: '' "#; let syntax = SyntaxDefinition::load_from_str(syntax, true, None).unwrap(); expect_scope_stacks_with_syntax("/** * */", &[", ", ", , ", ", "], syntax); } #[test] fn can_parse_context_included_in_prototype_via_named_reference() { let syntax = r#" scope: source.test contexts: prototype: - match: a push: a - match: b scope: test.bad main: - match: unused # This context is included in the prototype (see `push: a`). # Because of that, ST doesn't apply the prototype to this context, so if # we're in here the "b" shouldn't match. a: - match: a scope: test.good "#; let stack_states = stack_states(parse("aa b", syntax)); assert_eq!( stack_states, vec![ "", ", ", "", ], "Expected test.bad to not match" ); } #[test] fn can_parse_with_prototype_set() { let syntax = r#"%YAML 1.2 --- scope: source.test-set-with-proto contexts: main: - match: a scope: a set: next1 with_prototype: - match: '1' scope: '1' - match: '2' scope: '2' - match: '3' scope: '3' - match: '4' scope: '4' - match: '5' scope: '5' set: [next3, next2] with_prototype: - match: c scope: cwith next1: - match: b scope: b set: next2 next2: - match: c scope: c push: next3 - match: e scope: e pop: true - match: f scope: f set: [next1, next2] next3: - match: d scope: d - match: (?=e) pop: true - match: c scope: cwithout "#; expect_scope_stacks_with_syntax( "a1b2c3d4e5", &[ "
", "<1>", "", "<2>", "", "<3>", "", "<4>", "", "<5>", ], SyntaxDefinition::load_from_str(syntax, true, None).unwrap(), ); expect_scope_stacks_with_syntax( "5cfcecbedcdea", &[ "<5>", "", "", "", "", "", "", "", ], SyntaxDefinition::load_from_str(syntax, true, None).unwrap(), ); } #[test] fn can_parse_issue176() { let syntax = r#" scope: source.dummy contexts: main: - match: (test)(?=(foo))(f) captures: 1: test 2: ignored 3: f push: - match: (oo) captures: 1: keyword "#; let syntax = SyntaxDefinition::load_from_str(syntax, true, None).unwrap(); expect_scope_stacks_with_syntax( "testfoo", &["", /*"",*/ "", ""], syntax, ); } #[test] fn can_parse_two_with_prototypes_at_same_stack_level() { let syntax_yamlstr = r#" %YAML 1.2 --- # See http://www.sublimetext.com/docs/3/syntax.html scope: source.example-wp contexts: main: - match: a scope: a push: - match: b scope: b set: - match: c scope: c with_prototype: - match: '2' scope: '2' with_prototype: - match: '1' scope: '1' "#; let syntax = SyntaxDefinition::load_from_str(syntax_yamlstr, true, None).unwrap(); expect_scope_stacks_with_syntax("abc12", &["<1>", "<2>"], syntax); } #[test] fn can_parse_two_with_prototypes_at_same_stack_level_set_multiple() { let syntax_yamlstr = r#" %YAML 1.2 --- # See http://www.sublimetext.com/docs/3/syntax.html scope: source.example-wp contexts: main: - match: a scope: a push: - match: b scope: b set: [context1, context2, context3] with_prototype: - match: '2' scope: '2' with_prototype: - match: '1' scope: '1' - match: '1' scope: digit1 - match: '2' scope: digit2 context1: - match: e scope: e pop: true - match: '2' scope: digit2 context2: - match: d scope: d pop: true - match: '2' scope: digit2 context3: - match: c scope: c pop: true "#; let syntax = SyntaxDefinition::load_from_str(syntax_yamlstr, true, None).unwrap(); expect_scope_stacks_with_syntax("ab12", &["<1>", "<2>"], syntax.clone()); expect_scope_stacks_with_syntax("abc12", &["<1>", ""], syntax.clone()); expect_scope_stacks_with_syntax("abcd12", &["<1>", ""], syntax.clone()); expect_scope_stacks_with_syntax("abcde12", &["", ""], syntax); } #[test] fn can_parse_two_with_prototypes_at_same_stack_level_updated_captures() { let syntax_yamlstr = r#" %YAML 1.2 --- # See http://www.sublimetext.com/docs/3/syntax.html scope: source.example-wp contexts: main: - match: (a) scope: a push: - match: (b) scope: b set: - match: c scope: c with_prototype: - match: d scope: d with_prototype: - match: \1 scope: '1' pop: true "#; let syntax = SyntaxDefinition::load_from_str(syntax_yamlstr, true, None).unwrap(); expect_scope_stacks_with_syntax("aa", &["", "<1>"], syntax.clone()); expect_scope_stacks_with_syntax("abcdb", &["", "", "", "", "<1>"], syntax); } #[test] fn can_parse_two_with_prototypes_at_same_stack_level_updated_captures_ignore_unexisting() { let syntax_yamlstr = r#" %YAML 1.2 --- # See http://www.sublimetext.com/docs/3/syntax.html scope: source.example-wp contexts: main: - match: (a)(-) scope: a push: - match: (b) scope: b set: - match: c scope: c with_prototype: - match: d scope: d with_prototype: - match: \2 scope: '2' pop: true - match: \1 scope: '1' pop: true "#; let syntax = SyntaxDefinition::load_from_str(syntax_yamlstr, true, None).unwrap(); expect_scope_stacks_with_syntax("a--", &["", "<2>"], syntax.clone()); // it seems that when ST encounters a non existing pop backreference, it just pops back to the with_prototype's original parent context - i.e. cdb is unscoped // TODO: it would be useful to have syntest functionality available here for easier testing and clarity expect_scope_stacks_with_syntax("a-bcdba-", &["", ""], syntax); } #[test] fn can_parse_syntax_with_eol_and_newline() { let syntax = r#" name: test scope: source.test contexts: main: - match: foo$\n scope: foo.newline "#; let line = "foo"; let expect = [", "]; expect_scope_stacks(line, &expect, syntax); } #[test] fn can_parse_syntax_with_eol_only() { let syntax = r#" name: test scope: source.test contexts: main: - match: foo$ scope: foo.newline "#; let line = "foo"; let expect = [", "]; expect_scope_stacks(line, &expect, syntax); } #[test] fn can_parse_syntax_with_beginning_of_line() { let syntax = r#" name: test scope: source.test contexts: main: - match: \w+ scope: word push: # this should not match at the end of the line - match: ^\s*$ pop: true - match: =+ scope: heading pop: true - match: .* scope: other "#; let syntax_newlines = SyntaxDefinition::load_from_str(syntax, true, None).unwrap(); let syntax_set = link(syntax_newlines); let mut state = ParseState::new(&syntax_set.syntaxes()[0], false); assert_eq!( ops(&mut state, "foo\n", &syntax_set), vec![ (0, Push(Scope::new("source.test").unwrap())), (0, Push(Scope::new("word").unwrap())), (3, Pop(1)) ] ); assert_eq!( ops(&mut state, "===\n", &syntax_set), vec![(0, Push(Scope::new("heading").unwrap())), (3, Pop(1))] ); assert_eq!( ops(&mut state, "bar\n", &syntax_set), vec![(0, Push(Scope::new("word").unwrap())), (3, Pop(1))] ); // This should result in popping out of the context assert_eq!(ops(&mut state, "\n", &syntax_set), vec![]); // So now this matches other assert_eq!( ops(&mut state, "====\n", &syntax_set), vec![(0, Push(Scope::new("other").unwrap())), (4, Pop(1))] ); } #[test] fn can_parse_syntax_with_comment_and_eol() { let syntax = r#" name: test scope: source.test contexts: main: - match: (//).*$ scope: comment.line.double-slash "#; let syntax_newlines = SyntaxDefinition::load_from_str(syntax, true, None).unwrap(); let syntax_set = link(syntax_newlines); let mut state = ParseState::new(&syntax_set.syntaxes()[0], false); assert_eq!( ops(&mut state, "// foo\n", &syntax_set), vec![ (0, Push(Scope::new("source.test").unwrap())), (0, Push(Scope::new("comment.line.double-slash").unwrap())), // 6 is important here, should not be 7. The pattern should *not* consume the newline, // but instead match before it. This is important for whitespace-sensitive syntaxes // where newlines terminate statements such as Scala. (6, Pop(1)) ] ); } #[test] fn can_parse_text_with_unicode_to_skip() { let syntax = r#" name: test scope: source.test contexts: main: - match: (?=.) push: test test: - match: (?=.) pop: true - match: x scope: test.good "#; // U+03C0 GREEK SMALL LETTER PI, 2 bytes in UTF-8 expect_scope_stacks("\u{03C0}x", &[", "], syntax); // U+0800 SAMARITAN LETTER ALAF, 3 bytes in UTF-8 expect_scope_stacks("\u{0800}x", &[", "], syntax); // U+1F600 GRINNING FACE, 4 bytes in UTF-8 expect_scope_stacks("\u{1F600}x", &[", "], syntax); } #[test] fn can_include_backrefs() { let syntax = SyntaxDefinition::load_from_str( r#" name: Backref Include Test scope: source.backrefinc contexts: main: - match: (a) scope: a push: context1 context1: - include: context2 context2: - match: \1 scope: b pop: true "#, true, None, ) .unwrap(); expect_scope_stacks_with_syntax("aa", &["", ""], syntax); } #[test] fn can_include_nested_backrefs() { let syntax = SyntaxDefinition::load_from_str( r#" name: Backref Include Test scope: source.backrefinc contexts: main: - match: (a) scope: a push: context1 context1: - include: context3 context3: - include: context2 context2: - match: \1 scope: b pop: true "#, true, None, ) .unwrap(); expect_scope_stacks_with_syntax("aa", &["", ""], syntax); } fn expect_scope_stacks(line_without_newline: &str, expect: &[&str], syntax: &str) { println!("Parsing with newlines"); let line_with_newline = format!("{}\n", line_without_newline); let syntax_newlines = SyntaxDefinition::load_from_str(syntax, true, None).unwrap(); expect_scope_stacks_with_syntax(&line_with_newline, expect, syntax_newlines); println!("Parsing without newlines"); let syntax_nonewlines = SyntaxDefinition::load_from_str(syntax, false, None).unwrap(); expect_scope_stacks_with_syntax(line_without_newline, expect, syntax_nonewlines); } fn expect_scope_stacks_with_syntax(line: &str, expect: &[&str], syntax: SyntaxDefinition) { // check that each expected scope stack appears at least once while parsing the given test line let syntax_set = link(syntax); let mut state = ParseState::new(&syntax_set.syntaxes()[0], false); let ops = ops(&mut state, line, &syntax_set); expect_scope_stacks_for_ops(ops, expect); } fn expect_scope_stacks_for_ops(ops: Vec<(usize, ScopeStackOp)>, expect: &[&str]) { let mut criteria_met = Vec::new(); for stack_str in stack_states(ops) { println!("{}", stack_str); for expectation in expect.iter() { if stack_str.contains(expectation) { criteria_met.push(expectation); } } } if let Some(missing) = expect.iter().find(|e| !criteria_met.contains(e)) { panic!("expected scope stack '{}' missing", missing); } } fn parse(line: &str, syntax: &str) -> Vec<(usize, ScopeStackOp)> { let syntax = SyntaxDefinition::load_from_str(syntax, true, None).unwrap(); let syntax_set = link(syntax); let mut state = ParseState::new(&syntax_set.syntaxes()[0], false); ops(&mut state, line, &syntax_set) } fn link(syntax: SyntaxDefinition) -> SyntaxSet { let mut builder = SyntaxSetBuilder::new(); builder.add(syntax); builder.build() } fn ops( state: &mut ParseState, line: &str, syntax_set: &SyntaxSet, ) -> Vec<(usize, ScopeStackOp)> { let ops = state.parse_line(line, syntax_set).expect("#[cfg(test)]"); debug_print_ops(line, &ops); ops } fn stack_states(ops: Vec<(usize, ScopeStackOp)>) -> Vec { let mut states = Vec::new(); let mut stack = ScopeStack::new(); for (_, op) in ops.iter() { stack.apply(op).expect("#[cfg(test)]"); let scopes: Vec = stack .as_slice() .iter() .map(|s| format!("{:?}", s)) .collect(); let stack_str = scopes.join(", "); states.push(stack_str); } states } } syntect-no-panic-6.0.0/src/parsing/regex.rs000064400000000000000000000235621046102023000167440ustar 00000000000000use crate::parsing::ParseSyntaxError; use once_cell::sync::OnceCell; use serde::de::{Deserialize, Deserializer}; use serde::ser::{Serialize, Serializer}; use std::error::Error; /// An abstraction for regex patterns. /// /// * Allows swapping out the regex implementation because it's only in this module. /// * Makes regexes serializable and deserializable using just the pattern string. /// * Lazily compiles regexes on first use to improve initialization time. #[derive(Debug)] pub struct Regex { regex_str: String, regex: OnceCell>, } /// A region contains text positions for capture groups in a match result. #[derive(Clone, Debug, Eq, PartialEq)] pub struct Region { region: regex_impl::Region, } impl Regex { /// Create a new regex from the pattern string. /// /// Note that the regex compilation happens on first use, which is why this method does not /// return a result. pub fn new(regex_str: String) -> Self { Self { regex_str, regex: OnceCell::new(), } } /// Check whether the pattern compiles as a valid regex or not. pub fn try_compile(regex_str: &str) -> Option> { regex_impl::Regex::new(regex_str).err() } /// Return the regex pattern. pub fn regex_str(&self) -> &str { &self.regex_str } /// Check if the regex matches the given text. pub fn is_match<'t>( &self, text: &'t str, ignore_errors: bool, ) -> Result { match self.is_match_failible(text) { Ok(result) => Ok(result), Err(e) => { if ignore_errors { Ok(false) } else { Err(ParseSyntaxError::RegexCompileError( self.regex_str.to_string(), e.to_string().into(), )) } } } } /// Search for the pattern in the given text from begin/end positions. /// /// If a region is passed, it is used for storing match group positions. The argument allows /// the [`Region`] to be reused between searches, which makes a significant performance /// difference. /// /// [`Region`]: struct.Region.html pub fn search( &self, text: &str, begin: usize, end: usize, region: Option<&mut Region>, ignore_errors: bool, ) -> Result { match self.search_failible(text, begin, end, region) { Ok(result) => Ok(result), Err(e) => { if ignore_errors { Ok(false) } else { Err(ParseSyntaxError::RegexCompileError( self.regex_str.to_string(), e.to_string().into(), )) } } } } /// Check if the regex matches the given text. /// /// In order to be called repetitively when in error, the error message is returned as a &str /// without allocation pub fn is_match_failible<'t>(&self, text: &'t str) -> Result { match self.regex() { Ok(r) => Ok(r.is_match(text)), Err(e) => Err(e.as_str()), } } /// Search for the pattern in the given text from begin/end positions. /// /// If a region is passed, it is used for storing match group positions. The argument allows /// the [`Region`] to be reused between searches, which makes a significant performance /// difference. /// /// [`Region`]: struct.Region.html pub fn search_failible( &self, text: &str, begin: usize, end: usize, region: Option<&mut Region>, ) -> Result { match self.regex() { Ok(r) => Ok(r.search(text, begin, end, region.map(|r| &mut r.region))), Err(e) => Err(e.as_str()), } } fn regex(&self) -> &Result { self.regex .get_or_init(|| regex_impl::Regex::new(&self.regex_str).map_err(|e| e.to_string())) } } impl Clone for Regex { fn clone(&self) -> Self { Regex { regex_str: self.regex_str.clone(), regex: OnceCell::new(), } } } impl PartialEq for Regex { fn eq(&self, other: &Regex) -> bool { self.regex_str == other.regex_str } } impl Eq for Regex {} impl Serialize for Regex { fn serialize(&self, serializer: S) -> Result where S: Serializer, { serializer.serialize_str(&self.regex_str) } } impl<'de> Deserialize<'de> for Regex { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { let regex_str = String::deserialize(deserializer)?; Ok(Regex::new(regex_str)) } } impl Region { pub fn new() -> Self { Self { region: regex_impl::new_region(), } } /// Get the start/end positions of the capture group with given index. /// /// If there is no match for that group or the index does not correspond to a group, `None` is /// returned. The index 0 returns the whole match. pub fn pos(&self, index: usize) -> Option<(usize, usize)> { self.region.pos(index) } } impl Default for Region { fn default() -> Self { Self::new() } } #[cfg(feature = "regex-onig")] mod regex_impl { pub use onig::Region; use onig::{MatchParam, RegexOptions, SearchOptions, Syntax}; use std::error::Error; #[derive(Debug)] pub struct Regex { regex: onig::Regex, } pub fn new_region() -> Region { Region::with_capacity(8) } impl Regex { pub fn new(regex_str: &str) -> Result> { let result = onig::Regex::with_options( regex_str, RegexOptions::REGEX_OPTION_CAPTURE_GROUP, Syntax::default(), ); match result { Ok(regex) => Ok(Regex { regex }), Err(error) => Err(Box::new(error)), } } pub fn is_match(&self, text: &str) -> bool { self.regex .match_with_options(text, 0, SearchOptions::SEARCH_OPTION_NONE, None) .is_some() } pub fn search( &self, text: &str, begin: usize, end: usize, region: Option<&mut Region>, ) -> bool { let matched = self.regex.search_with_param( text, begin, end, SearchOptions::SEARCH_OPTION_NONE, region, MatchParam::default(), ); // If there's an error during search, treat it as non-matching. // For example, in case of catastrophic backtracking, onig should // fail with a "retry-limit-in-match over" error eventually. matches!(matched, Ok(Some(_))) } } } // If both regex-fancy and regex-onig are requested, this condition makes regex-onig win. #[cfg(all(feature = "regex-fancy", not(feature = "regex-onig")))] mod regex_impl { use std::error::Error; #[derive(Debug)] pub struct Regex { regex: fancy_regex::Regex, } #[derive(Clone, Debug, Eq, PartialEq)] pub struct Region { positions: Vec>, } pub fn new_region() -> Region { Region { positions: Vec::with_capacity(8), } } impl Regex { pub fn new(regex_str: &str) -> Result> { let result = fancy_regex::Regex::new(regex_str); match result { Ok(regex) => Ok(Regex { regex }), Err(error) => Err(Box::new(error)), } } pub fn is_match(&self, text: &str) -> bool { // Errors are treated as non-matches self.regex.is_match(text).unwrap_or(false) } pub fn search( &self, text: &str, begin: usize, end: usize, region: Option<&mut Region>, ) -> bool { // If there's an error during search, treat it as non-matching. // For example, in case of catastrophic backtracking, fancy-regex should // fail with an error eventually. if let Ok(Some(captures)) = self.regex.captures_from_pos(&text[..end], begin) { if let Some(region) = region { region.init_from_captures(&captures); } true } else { false } } } impl Region { fn init_from_captures(&mut self, captures: &fancy_regex::Captures) { self.positions.clear(); for i in 0..captures.len() { let pos = captures.get(i).map(|m| (m.start(), m.end())); self.positions.push(pos); } } pub fn pos(&self, i: usize) -> Option<(usize, usize)> { if i < self.positions.len() { self.positions[i] } else { None } } } } #[cfg(test)] mod tests { use super::*; #[test] fn caches_compiled_regex() { let regex = Regex::new(String::from(r"\w+")); assert!(regex.regex.get().is_none()); assert!(regex.is_match("test", false).unwrap()); assert!(regex.regex.get().is_some()); } #[test] fn serde_as_string() { let pattern: Regex = serde_json::from_str("\"just a string\"").unwrap(); assert_eq!(pattern.regex_str(), "just a string"); let back_to_str = serde_json::to_string(&pattern).unwrap(); assert_eq!(back_to_str, "\"just a string\""); } } syntect-no-panic-6.0.0/src/parsing/scope.rs000064400000000000000000000556561046102023000167540ustar 00000000000000// see DESIGN.md use std::cmp::{min, Ordering}; use std::collections::HashMap; use std::fmt; use std::mem; use std::str::FromStr; use std::sync::Mutex; use std::u16; use std::u64; use once_cell::sync::Lazy; use serde::de::{Deserialize, Deserializer, Error, Visitor}; use serde::ser::{Serialize, Serializer}; use serde_derive::{Deserialize, Serialize}; /// Scope related errors #[derive(Debug, thiserror::Error)] #[non_exhaustive] pub enum ScopeError { #[error("Tried to restore cleared scopes, but none were cleared")] NoClearedScopesToRestore, } /// Multiplier on the power of 2 for MatchPower. This is only useful if you compute your own /// [`MatchPower`] scores /// /// [`MatchPower`]: struct.MatchPower.html pub const ATOM_LEN_BITS: u16 = 3; /// The global scope repo, exposed in case you want to minimize locking and unlocking. /// /// Ths shouldn't be necessary for you to use. See the [`ScopeRepository`] docs. /// /// [`ScopeRepository`]: struct.ScopeRepository.html pub static SCOPE_REPO: Lazy> = Lazy::new(|| Mutex::new(ScopeRepository::new())); /// A hierarchy of atoms with semi-standardized names used to accord semantic information to a /// specific piece of text. /// /// These are generally written with the atoms separated by dots, and - by convention - atoms are /// all lowercase alphanumeric. /// /// Example scopes: `text.plain`, `punctuation.definition.string.begin.ruby`, /// `meta.function.parameters.rust` /// /// `syntect` uses an optimized format for storing these that allows super fast comparison and /// determining if one scope is a prefix of another. It also always takes 16 bytes of space. It /// accomplishes this by using a global repository to store string values and using bit-packed 16 /// bit numbers to represent and compare atoms. Like "atoms" or "symbols" in other languages. This /// means that while comparing and prefix are fast, extracting a string is relatively slower but /// ideally should be very rare. #[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Copy, Default, Hash)] pub struct Scope { a: u64, b: u64, } /// Not all strings are valid scopes #[derive(Debug, thiserror::Error)] #[non_exhaustive] pub enum ParseScopeError { /// Due to a limitation of the current optimized internal representation /// scopes can be at most 8 atoms long #[error("Too long scope. Scopes can be at most 8 atoms long.")] TooLong, /// The internal representation uses 16 bits per atom, so if all scopes ever /// used by the program have more than 2^16-2 atoms, things break #[error("Too many atoms. Max 2^16-2 atoms allowed.")] TooManyAtoms, } /// The structure used to keep track of the mapping between scope atom numbers and their string /// names /// /// It is only exposed in case you want to lock [`SCOPE_REPO`] and then allocate a bunch of scopes /// at once without thrashing the lock. In general, you should just use [`Scope::new()`]. /// /// Only [`Scope`]s created by the same repository have valid comparison results. /// /// [`SCOPE_REPO`]: struct.SCOPE_REPO.html /// [`Scope::new()`]: struct.Scope.html#method.new /// [`Scope`]: struct.Scope.html #[derive(Debug)] pub struct ScopeRepository { atoms: Vec, atom_index_map: HashMap, } /// A stack/sequence of scopes for representing hierarchies for a given token of text /// /// This is also used within [`ScopeSelectors`]. /// /// In Sublime Text, the scope stack at a given point can be seen by pressing `ctrl+shift+p`. Also /// see [the TextMate docs](https://manual.macromates.com/en/scope_selectors). /// /// Example for a JS string inside a script tag in a Rails `ERB` file: /// `text.html.ruby text.html.basic source.js.embedded.html string.quoted.double.js` /// /// [`ScopeSelectors`]: ../highlighting/struct.ScopeSelectors.html #[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)] pub struct ScopeStack { clear_stack: Vec>, pub scopes: Vec, } #[derive(Debug, Clone, Copy, Eq, PartialEq, Serialize, Deserialize)] pub enum ClearAmount { TopN(usize), All, } /// A change to a scope stack /// /// Generally, `Noop` is only used internally and you won't need to worry about getting one back /// from calling a public function. /// /// The change from a `ScopeStackOp` can be applied via [`ScopeStack::apply`]. /// /// [`ScopeStack::apply`]: struct.ScopeStack.html#method.apply #[derive(Debug, Clone, PartialEq, Eq)] pub enum ScopeStackOp { Push(Scope), Pop(usize), /// Used for the `clear_scopes` feature Clear(ClearAmount), /// Restores cleared scopes Restore, Noop, } /// Used for [`ScopeStack::apply_with_hook`] /// /// [`ScopeStack::apply_with_hook`]: struct.ScopeStack.html#method.apply_with_hook #[derive(Debug, Clone, PartialEq, Eq)] pub enum BasicScopeStackOp { Push(Scope), Pop, } fn pack_as_u16s(atoms: &[usize]) -> Result { let mut res = Scope { a: 0, b: 0 }; for (i, &n) in atoms.iter().enumerate() { if n >= (u16::MAX as usize) - 2 { return Err(ParseScopeError::TooManyAtoms); } let small = (n + 1) as u64; // +1 since we reserve 0 for unused if i < 4 { let shift = (3 - i) * 16; res.a |= small << shift; } else { let shift = (7 - i) * 16; res.b |= small << shift; } } Ok(res) } impl ScopeRepository { fn new() -> ScopeRepository { ScopeRepository { atoms: Vec::new(), atom_index_map: HashMap::new(), } } pub fn build(&mut self, s: &str) -> Result { if s.is_empty() { return Ok(Scope { a: 0, b: 0 }); } let parts: Vec = s .trim_end_matches('.') .split('.') .map(|a| self.atom_to_index(a)) .collect(); if parts.len() > 8 { return Err(ParseScopeError::TooManyAtoms); } pack_as_u16s(&parts[..]) } pub fn to_string(&self, scope: Scope) -> String { let mut s = String::new(); for i in 0..8 { let atom_number = scope.atom_at(i); // println!("atom {} of {:x}-{:x} = {:x}", // i, scope.a, scope.b, atom_number); if atom_number == 0 { break; } if i != 0 { s.push('.'); } s.push_str(self.atom_str(atom_number)); } s } fn atom_to_index(&mut self, atom: &str) -> usize { if let Some(index) = self.atom_index_map.get(atom) { return *index; } self.atoms.push(atom.to_owned()); let index = self.atoms.len() - 1; self.atom_index_map.insert(atom.to_owned(), index); index } /// Return the string for an atom number returned by [`Scope::atom_at`] /// /// [`Scope::atom_at`]: struct.Scope.html#method.atom_at pub fn atom_str(&self, atom_number: u16) -> &str { &self.atoms[(atom_number - 1) as usize] } } impl Scope { /// Parses a `Scope` from a series of atoms separated by dot (`.`) characters /// /// Example: `Scope::new("meta.rails.controller")` pub fn new(s: &str) -> Result { let mut repo = SCOPE_REPO.lock().unwrap(); repo.build(s.trim()) } /// Gets the atom number at a given index. /// /// I can't think of any reason you'd find this useful. It is used internally for turning a /// scope back into a string. pub fn atom_at(self, index: usize) -> u16 { #[allow(clippy::panic)] // The below panic is too much of an edge-case for it to be worth propagating let shifted = if index < 4 { self.a >> ((3 - index) * 16) } else if index < 8 { self.b >> ((7 - index) * 16) } else { panic!("atom index out of bounds {:?}", index); }; (shifted & 0xFFFF) as u16 } #[inline] fn missing_atoms(self) -> u32 { let trail = if self.b == 0 { self.a.trailing_zeros() + 64 } else { self.b.trailing_zeros() }; trail / 16 } /// Returns the number of atoms in the scope #[inline(always)] pub fn len(self) -> u32 { 8 - self.missing_atoms() } pub fn is_empty(self) -> bool { self.len() == 0 } /// Returns a string representation of this scope /// /// This requires locking a global repo and shouldn't be done frequently. pub fn build_string(self) -> String { let repo = SCOPE_REPO.lock().unwrap(); repo.to_string(self) } /// Tests if this scope is a prefix of another scope. Note that the empty scope is always a /// prefix. /// /// This operation uses bitwise operations and is very fast /// # Examples /// /// ``` /// use syntect::parsing::Scope; /// assert!( Scope::new("string").unwrap() /// .is_prefix_of(Scope::new("string.quoted").unwrap())); /// assert!( Scope::new("string.quoted").unwrap() /// .is_prefix_of(Scope::new("string.quoted").unwrap())); /// assert!( Scope::new("").unwrap() /// .is_prefix_of(Scope::new("meta.rails.controller").unwrap())); /// assert!(!Scope::new("source.php").unwrap() /// .is_prefix_of(Scope::new("source").unwrap())); /// assert!(!Scope::new("source.php").unwrap() /// .is_prefix_of(Scope::new("source.ruby").unwrap())); /// assert!(!Scope::new("meta.php").unwrap() /// .is_prefix_of(Scope::new("source.php").unwrap())); /// assert!(!Scope::new("meta.php").unwrap() /// .is_prefix_of(Scope::new("source.php.wow").unwrap())); /// ``` pub fn is_prefix_of(self, s: Scope) -> bool { let pref_missing = self.missing_atoms(); // TODO: test optimization - use checked shl and then mult carry flag as int by -1 let mask: (u64, u64) = if pref_missing == 8 { (0, 0) } else if pref_missing == 4 { (u64::MAX, 0) } else if pref_missing > 4 { (u64::MAX << ((pref_missing - 4) * 16), 0) } else { (u64::MAX, u64::MAX << (pref_missing * 16)) }; // xor to find the difference let ax = (self.a ^ s.a) & mask.0; let bx = (self.b ^ s.b) & mask.1; // println!("{:x}-{:x} is_pref {:x}-{:x}: missing {} mask {:x}-{:x} xor {:x}-{:x}", // self.a, self.b, s.a, s.b, pref_missing, mask.0, mask.1, ax, bx); ax == 0 && bx == 0 } } impl FromStr for Scope { type Err = ParseScopeError; fn from_str(s: &str) -> Result { Scope::new(s) } } impl fmt::Display for Scope { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { let s = self.build_string(); write!(f, "{}", s) } } impl fmt::Debug for Scope { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { let s = self.build_string(); write!(f, "<{}>", s) } } impl Serialize for Scope { fn serialize(&self, serializer: S) -> Result where S: Serializer, { let s = self.build_string(); serializer.serialize_str(&s) } } impl<'de> Deserialize<'de> for Scope { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { struct ScopeVisitor; impl<'de> Visitor<'de> for ScopeVisitor { type Value = Scope; fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result { formatter.write_str("a string") } fn visit_str(self, v: &str) -> Result where E: Error, { Scope::new(v).map_err(|e| Error::custom(format!("Invalid scope: {:?}", e))) } } deserializer.deserialize_str(ScopeVisitor) } } /// Wrapper to get around the fact Rust `f64` doesn't implement `Ord` and there is no non-NaN /// float type #[derive(Debug, Copy, Clone, PartialOrd, PartialEq)] pub struct MatchPower(pub f64); impl Eq for MatchPower {} #[allow(clippy::derive_ord_xor_partial_ord)] // The code works, so let's keep using it impl Ord for MatchPower { fn cmp(&self, other: &Self) -> Ordering { self.partial_cmp(other).unwrap() } } impl ScopeStack { pub fn new() -> ScopeStack { ScopeStack { clear_stack: Vec::new(), scopes: Vec::new(), } } /// Note: creating a ScopeStack with this doesn't contain information /// on what to do when `clear_scopes` contexts end. pub fn from_vec(v: Vec) -> ScopeStack { ScopeStack { clear_stack: Vec::new(), scopes: v, } } #[inline] pub fn push(&mut self, s: Scope) { self.scopes.push(s); } #[inline] pub fn pop(&mut self) { self.scopes.pop(); } /// Modifies this stack according to the operation given /// /// Use this to create a stack from a `Vec` of changes given by the parser. pub fn apply(&mut self, op: &ScopeStackOp) -> Result<(), ScopeError> { self.apply_with_hook(op, |_, _| {}) } /// Modifies this stack according to the operation given and calls the hook for each basic operation. /// /// Like [`apply`] but calls `hook` for every basic modification (as defined by /// [`BasicScopeStackOp`]). Use this to do things only when the scope stack changes. /// /// [`apply`]: #method.apply /// [`BasicScopeStackOp`]: enum.BasicScopeStackOp.html #[inline] pub fn apply_with_hook(&mut self, op: &ScopeStackOp, mut hook: F) -> Result<(), ScopeError> where F: FnMut(BasicScopeStackOp, &[Scope]), { match *op { ScopeStackOp::Push(scope) => { self.scopes.push(scope); hook(BasicScopeStackOp::Push(scope), self.as_slice()); } ScopeStackOp::Pop(count) => { for _ in 0..count { self.scopes.pop(); hook(BasicScopeStackOp::Pop, self.as_slice()); } } ScopeStackOp::Clear(amount) => { let cleared = match amount { ClearAmount::TopN(n) => { // don't try to clear more scopes than are on the stack let to_leave = self.scopes.len() - min(n, self.scopes.len()); self.scopes.split_off(to_leave) } ClearAmount::All => { let mut cleared = Vec::new(); mem::swap(&mut cleared, &mut self.scopes); cleared } }; let clear_amount = cleared.len(); self.clear_stack.push(cleared); for _ in 0..clear_amount { hook(BasicScopeStackOp::Pop, self.as_slice()); } } ScopeStackOp::Restore => match self.clear_stack.pop() { Some(ref mut to_push) => { for s in to_push { self.scopes.push(*s); hook(BasicScopeStackOp::Push(*s), self.as_slice()); } } None => return Err(ScopeError::NoClearedScopesToRestore), }, ScopeStackOp::Noop => (), } Ok(()) } /// Prints out each scope in the stack separated by spaces /// and then a newline. Top of the stack at the end. pub fn debug_print(&self, repo: &ScopeRepository) { for s in &self.scopes { print!("{} ", repo.to_string(*s)); } println!(); } /// Returns the bottom `n` elements of the stack. /// /// Equivalent to `&scopes[0..n]` on a `Vec` pub fn bottom_n(&self, n: usize) -> &[Scope] { &self.scopes[0..n] } /// Return a slice of the scopes in this stack #[inline] pub fn as_slice(&self) -> &[Scope] { &self.scopes[..] } /// Return the height/length of this stack #[inline] pub fn len(&self) -> usize { self.scopes.len() } #[inline] pub fn is_empty(&self) -> bool { self.len() == 0 } /// Checks if this stack as a selector matches the given stack, returning the match score if so /// /// Higher match scores indicate stronger matches. Scores are ordered according to the rules /// found at [https://manual.macromates.com/en/scope_selectors](https://manual.macromates.com/en/scope_selectors) /// /// It accomplishes this ordering through some floating point math ensuring deeper and longer /// matches matter. Unfortunately it is only guaranteed to return perfectly accurate results up /// to stack depths of 17, but it should be reasonably good even afterwards. TextMate has the /// exact same limitation, dunno about Sublime Text. /// /// # Examples /// ``` /// use syntect::parsing::{ScopeStack, MatchPower}; /// use std::str::FromStr; /// assert_eq!(ScopeStack::from_str("a.b c e.f").unwrap() /// .does_match(ScopeStack::from_str("a.b c.d e.f.g").unwrap().as_slice()), /// Some(MatchPower(0o212u64 as f64))); /// assert_eq!(ScopeStack::from_str("a c.d.e").unwrap() /// .does_match(ScopeStack::from_str("a.b c.d e.f.g").unwrap().as_slice()), /// None); /// ``` pub fn does_match(&self, stack: &[Scope]) -> Option { let mut sel_index: usize = 0; let mut score: f64 = 0.0; for (i, scope) in stack.iter().enumerate() { let sel_scope = self.scopes[sel_index]; if sel_scope.is_prefix_of(*scope) { let len = sel_scope.len(); // equivalent to score |= len << (ATOM_LEN_BITS*i) on a large unsigned score += f64::from(len) * f64::from(ATOM_LEN_BITS * (i as u16)).exp2(); sel_index += 1; if sel_index >= self.scopes.len() { return Some(MatchPower(score)); } } } None } } impl FromStr for ScopeStack { type Err = ParseScopeError; /// Parses a scope stack from a whitespace separated list of scopes. fn from_str(s: &str) -> Result { let mut scopes = Vec::new(); for name in s.split_whitespace() { scopes.push(Scope::from_str(name)?) } Ok(ScopeStack::from_vec(scopes)) } } impl fmt::Display for ScopeStack { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { for s in &self.scopes { write!(f, "{} ", s)?; } Ok(()) } } #[cfg(test)] mod tests { use super::*; #[test] fn misc() { // use std::mem; // use std::rc::{Rc}; // use scope::*; // assert_eq!(8, mem::size_of::>()); // assert_eq!(Scope::new("source.php"), Scope::new("source.php")); } #[test] fn repo_works() { let mut repo = ScopeRepository::new(); assert_eq!( repo.build("source.php").unwrap(), repo.build("source.php").unwrap() ); assert_eq!( repo.build("source.php.wow.hi.bob.troll.clock.5").unwrap(), repo.build("source.php.wow.hi.bob.troll.clock.5").unwrap() ); assert_eq!(repo.build("").unwrap(), repo.build("").unwrap()); let s1 = repo.build("").unwrap(); assert_eq!(repo.to_string(s1), ""); let s2 = repo.build("source.php.wow").unwrap(); assert_eq!(repo.to_string(s2), "source.php.wow"); assert!(repo.build("source.php").unwrap() != repo.build("source.perl").unwrap()); assert!(repo.build("source.php").unwrap() != repo.build("source.php.wagon").unwrap()); assert_eq!( repo.build("comment.line.").unwrap(), repo.build("comment.line").unwrap() ); } #[test] fn global_repo_works() { use std::str::FromStr; assert_eq!( Scope::new("source.php").unwrap(), Scope::new("source.php").unwrap() ); assert!(Scope::from_str("1.2.3.4.5.6.7.8").is_ok()); assert!(Scope::from_str("1.2.3.4.5.6.7.8.9").is_err()); } #[test] fn prefixes_work() { assert!(Scope::new("1.2.3.4.5.6.7.8") .unwrap() .is_prefix_of(Scope::new("1.2.3.4.5.6.7.8").unwrap())); assert!(Scope::new("1.2.3.4.5.6") .unwrap() .is_prefix_of(Scope::new("1.2.3.4.5.6.7.8").unwrap())); assert!(Scope::new("1.2.3.4") .unwrap() .is_prefix_of(Scope::new("1.2.3.4.5.6.7.8").unwrap())); assert!(!Scope::new("1.2.3.4.5.6.a") .unwrap() .is_prefix_of(Scope::new("1.2.3.4.5.6.7.8").unwrap())); assert!(!Scope::new("1.2.a.4.5.6.7") .unwrap() .is_prefix_of(Scope::new("1.2.3.4.5.6.7.8").unwrap())); assert!(!Scope::new("1.2.a.4.5.6.7") .unwrap() .is_prefix_of(Scope::new("1.2.3.4.5").unwrap())); assert!(!Scope::new("1.2.a") .unwrap() .is_prefix_of(Scope::new("1.2.3.4.5.6.7.8").unwrap())); } #[test] fn matching_works() { use std::str::FromStr; assert_eq!( ScopeStack::from_str("string") .unwrap() .does_match(ScopeStack::from_str("string.quoted").unwrap().as_slice()), Some(MatchPower(0o1u64 as f64)) ); assert_eq!( ScopeStack::from_str("source") .unwrap() .does_match(ScopeStack::from_str("string.quoted").unwrap().as_slice()), None ); assert_eq!( ScopeStack::from_str("a.b e.f") .unwrap() .does_match(ScopeStack::from_str("a.b c.d e.f.g").unwrap().as_slice()), Some(MatchPower(0o202u64 as f64)) ); assert_eq!( ScopeStack::from_str("c e.f") .unwrap() .does_match(ScopeStack::from_str("a.b c.d e.f.g").unwrap().as_slice()), Some(MatchPower(0o210u64 as f64)) ); assert_eq!( ScopeStack::from_str("c.d e.f") .unwrap() .does_match(ScopeStack::from_str("a.b c.d e.f.g").unwrap().as_slice()), Some(MatchPower(0o220u64 as f64)) ); assert_eq!( ScopeStack::from_str("a.b c e.f") .unwrap() .does_match(ScopeStack::from_str("a.b c.d e.f.g").unwrap().as_slice()), Some(MatchPower(0o212u64 as f64)) ); assert_eq!( ScopeStack::from_str("a c.d") .unwrap() .does_match(ScopeStack::from_str("a.b c.d e.f.g").unwrap().as_slice()), Some(MatchPower(0o021u64 as f64)) ); assert_eq!( ScopeStack::from_str("a c.d.e") .unwrap() .does_match(ScopeStack::from_str("a.b c.d e.f.g").unwrap().as_slice()), None ); } } syntect-no-panic-6.0.0/src/parsing/syntax_definition.rs000064400000000000000000000241561046102023000213700ustar 00000000000000//! Data structures for representing syntax definitions //! //! Everything here is public becaues I want this library to be useful in super integrated cases //! like text editors and I have no idea what kind of monkeying you might want to do with the data. //! Perhaps parsing your own syntax format into this data structure? use super::regex::{Regex, Region}; use super::{scope::*, ParsingError}; use crate::parsing::syntax_set::SyntaxSet; use regex_syntax::escape; use serde::ser::{Serialize, Serializer}; use serde_derive::{Deserialize, Serialize}; use std::collections::{BTreeMap, HashMap}; use std::hash::Hash; pub type CaptureMapping = Vec<(usize, Vec)>; /// An opaque ID for a [`Context`]. #[derive(Clone, Copy, Debug, Eq, PartialEq, Hash, Serialize, Deserialize)] pub struct ContextId { /// Index into [`SyntaxSet::syntaxes`] pub(crate) syntax_index: usize, /// Index into [`crate::parsing::LazyContexts::contexts`] for the [`Self::syntax_index`] syntax pub(crate) context_index: usize, } /// The main data structure representing a syntax definition loaded from a /// `.sublime-syntax` file /// /// You'll probably only need these as references to be passed around to parsing code. /// /// Some useful public fields are the `name` field which is a human readable name to display in /// syntax lists, and the `hidden` field which means hide this syntax from any lists because it is /// for internal use. #[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)] pub struct SyntaxDefinition { pub name: String, pub file_extensions: Vec, pub scope: Scope, pub first_line_match: Option, pub hidden: bool, #[serde(serialize_with = "ordered_map")] pub variables: HashMap, #[serde(serialize_with = "ordered_map")] pub contexts: HashMap, } #[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)] pub struct Context { pub meta_scope: Vec, pub meta_content_scope: Vec, /// This being set false in the syntax file implies this field being set false, /// but it can also be set falso for contexts that don't include the prototype for other reasons pub meta_include_prototype: bool, pub clear_scopes: Option, /// This is filled in by the linker at link time /// for contexts that have `meta_include_prototype==true` /// and are not included from the prototype. pub prototype: Option, pub uses_backrefs: bool, pub patterns: Vec, } impl Context { pub fn new(meta_include_prototype: bool) -> Context { Context { meta_scope: Vec::new(), meta_content_scope: Vec::new(), meta_include_prototype, clear_scopes: None, uses_backrefs: false, patterns: Vec::new(), prototype: None, } } } #[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)] pub enum Pattern { Match(MatchPattern), Include(ContextReference), } /// Used to iterate over all the match patterns in a context /// /// Basically walks the tree of patterns and include directives in the correct order. #[derive(Debug)] pub struct MatchIter<'a> { syntax_set: &'a SyntaxSet, ctx_stack: Vec<&'a Context>, index_stack: Vec, } #[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)] pub struct MatchPattern { pub has_captures: bool, pub regex: Regex, pub scope: Vec, pub captures: Option, pub operation: MatchOperation, pub with_prototype: Option, } #[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)] #[non_exhaustive] pub enum ContextReference { #[non_exhaustive] Named(String), #[non_exhaustive] ByScope { scope: Scope, sub_context: Option, /// `true` if this reference by scope is part of an `embed` for which /// there is an `escape`. In other words a reference for a context for /// which there "always is a way out". Enables falling back to `Plain /// Text` syntax in case the referenced scope is missing. with_escape: bool, }, #[non_exhaustive] File { name: String, sub_context: Option, /// Same semantics as for [`Self::ByScope::with_escape`]. with_escape: bool, }, #[non_exhaustive] Inline(String), #[non_exhaustive] Direct(ContextId), } #[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)] pub enum MatchOperation { Push(Vec), Set(Vec), Pop, None, } impl<'a> Iterator for MatchIter<'a> { type Item = (&'a Context, usize); fn next(&mut self) -> Option<(&'a Context, usize)> { loop { if self.ctx_stack.is_empty() { return None; } // uncomment for debugging infinite recursion // println!("{:?}", self.index_stack); // use std::thread::sleep_ms; // sleep_ms(500); let last_index = self.ctx_stack.len() - 1; let context = self.ctx_stack[last_index]; let index = self.index_stack[last_index]; self.index_stack[last_index] = index + 1; if index < context.patterns.len() { match context.patterns[index] { Pattern::Match(_) => { return Some((context, index)); } Pattern::Include(ref ctx_ref) => { let ctx_ptr = match *ctx_ref { ContextReference::Direct(ref context_id) => { self.syntax_set.get_context(context_id).unwrap() } _ => return self.next(), // skip this and move onto the next one }; self.ctx_stack.push(ctx_ptr); self.index_stack.push(0); } } } else { self.ctx_stack.pop(); self.index_stack.pop(); } } } } /// Returns an iterator over all the match patterns in this context. /// /// It recursively follows include directives. Can only be run on contexts that have already been /// linked up. pub fn context_iter<'a>(syntax_set: &'a SyntaxSet, context: &'a Context) -> MatchIter<'a> { MatchIter { syntax_set, ctx_stack: vec![context], index_stack: vec![0], } } impl Context { /// Returns the match pattern at an index pub fn match_at(&self, index: usize) -> Result<&MatchPattern, ParsingError> { match self.patterns[index] { Pattern::Match(ref match_pat) => Ok(match_pat), _ => Err(ParsingError::BadMatchIndex(index)), } } } impl ContextReference { /// find the pointed to context pub fn resolve<'a>(&self, syntax_set: &'a SyntaxSet) -> Result<&'a Context, ParsingError> { match *self { ContextReference::Direct(ref context_id) => syntax_set.get_context(context_id), _ => Err(ParsingError::UnresolvedContextReference(self.clone())), } } /// get the context ID this reference points to pub fn id(&self) -> Result { match *self { ContextReference::Direct(ref context_id) => Ok(*context_id), _ => Err(ParsingError::UnresolvedContextReference(self.clone())), } } } pub(crate) fn substitute_backrefs_in_regex(regex_str: &str, substituter: F) -> String where F: Fn(usize) -> Option, { let mut reg_str = String::with_capacity(regex_str.len()); let mut last_was_escape = false; for c in regex_str.chars() { if last_was_escape && c.is_ascii_digit() { let val = c.to_digit(10).unwrap() as usize; if let Some(sub) = substituter(val) { reg_str.push_str(&sub); } } else if last_was_escape { reg_str.push('\\'); reg_str.push(c); } else if c != '\\' { reg_str.push(c); } last_was_escape = c == '\\' && !last_was_escape; } reg_str } impl MatchPattern { pub fn new( has_captures: bool, regex_str: String, scope: Vec, captures: Option, operation: MatchOperation, with_prototype: Option, ) -> MatchPattern { MatchPattern { has_captures, regex: Regex::new(regex_str), scope, captures, operation, with_prototype, } } /// Used by the parser to compile a regex which needs to reference /// regions from another matched pattern. pub fn regex_with_refs(&self, region: &Region, text: &str) -> Regex { let new_regex = substitute_backrefs_in_regex(self.regex.regex_str(), |i| { region.pos(i).map(|(start, end)| escape(&text[start..end])) }); Regex::new(new_regex) } pub fn regex(&self) -> &Regex { &self.regex } } /// Serialize the provided map in natural key order, so that it's deterministic when dumping. pub(crate) fn ordered_map(map: &HashMap, serializer: S) -> Result where S: Serializer, K: Eq + Hash + Ord + Serialize, V: Serialize, { let ordered: BTreeMap<_, _> = map.iter().collect(); ordered.serialize(serializer) } #[cfg(test)] mod tests { use super::*; #[test] fn can_compile_refs() { let pat = MatchPattern { has_captures: true, regex: Regex::new(r"lol \\ \2 \1 '\9' \wz".into()), scope: vec![], captures: None, operation: MatchOperation::None, with_prototype: None, }; let r = Regex::new(r"(\\\[\]\(\))(b)(c)(d)(e)".into()); let s = r"\[]()bcde"; let mut region = Region::new(); let matched = r.search(s, 0, s.len(), Some(&mut region), false).unwrap(); assert!(matched); let regex_with_refs = pat.regex_with_refs(®ion, s); assert_eq!(regex_with_refs.regex_str(), r"lol \\ b \\\[\]\(\) '' \wz"); } } syntect-no-panic-6.0.0/src/parsing/syntax_set.rs000064400000000000000000001515061046102023000200330ustar 00000000000000use super::scope::*; use super::syntax_definition::*; use super::ParsingError; #[cfg(feature = "metadata")] use super::metadata::{LoadMetadata, Metadata, RawMetadataEntry}; #[cfg(feature = "yaml-load")] use super::super::LoadingError; use std::collections::{BTreeSet, HashMap, HashSet}; use std::fs::File; use std::io::{BufRead, BufReader}; use std::mem; use std::path::Path; use super::regex::Regex; use crate::parsing::syntax_definition::ContextId; use once_cell::sync::OnceCell; use serde_derive::{Deserialize, Serialize}; /// A syntax set holds multiple syntaxes that have been linked together. /// /// Use a [`SyntaxSetBuilder`] to load syntax definitions and build a syntax set. /// /// After building, the syntax set is immutable and can no longer be modified, but you can convert /// it back into a builder by using the [`into_builder`] method. /// /// [`SyntaxSetBuilder`]: struct.SyntaxSetBuilder.html /// [`into_builder`]: #method.into_builder #[derive(Debug, Serialize, Deserialize)] pub struct SyntaxSet { syntaxes: Vec, /// Stores the syntax index for every path that was loaded path_syntaxes: Vec<(String, usize)>, #[serde(skip_serializing, skip_deserializing, default = "OnceCell::new")] first_line_cache: OnceCell, /// Metadata, e.g. indent and commenting information. /// /// NOTE: if serializing, you should handle metadata manually; that is, you should serialize and /// deserialize it separately. See `examples/gendata.rs` for an example. #[cfg(feature = "metadata")] #[serde(skip, default)] pub(crate) metadata: Metadata, } /// A linked version of a [`SyntaxDefinition`] that is only useful as part of the /// [`SyntaxSet`] that contains it. See docs for [`SyntaxSetBuilder::build`] for /// more info. #[derive(Clone, Debug, Serialize, Deserialize)] pub struct SyntaxReference { pub name: String, pub file_extensions: Vec, pub scope: Scope, pub first_line_match: Option, pub hidden: bool, #[serde(serialize_with = "ordered_map")] pub variables: HashMap, #[serde(skip)] pub(crate) lazy_contexts: OnceCell, pub(crate) serialized_lazy_contexts: Vec, } /// The lazy-loaded parts of a [`SyntaxReference`]. #[derive(Clone, Debug, Serialize, Deserialize)] pub(crate) struct LazyContexts { #[serde(serialize_with = "ordered_map")] pub(crate) context_ids: HashMap, pub(crate) contexts: Vec, } /// A syntax set builder is used for loading syntax definitions from the file /// system or by adding [`SyntaxDefinition`] objects. /// /// Once all the syntaxes have been added, call [`build`] to turn the builder into /// a [`SyntaxSet`] that can be used for parsing or highlighting. /// /// [`SyntaxDefinition`]: syntax_definition/struct.SyntaxDefinition.html /// [`build`]: #method.build /// [`SyntaxSet`]: struct.SyntaxSet.html #[derive(Clone, Default)] pub struct SyntaxSetBuilder { syntaxes: Vec, path_syntaxes: Vec<(String, usize)>, #[cfg(feature = "metadata")] raw_metadata: LoadMetadata, /// If this `SyntaxSetBuilder` is created with `SyntaxSet::into_builder` /// from a `SyntaxSet` that already had metadata, we keep that metadata, /// merging it with newly loaded metadata. #[cfg(feature = "metadata")] existing_metadata: Option, } #[cfg(feature = "yaml-load")] fn load_syntax_file( p: &Path, lines_include_newline: bool, ) -> Result { let s = std::fs::read_to_string(p)?; SyntaxDefinition::load_from_str( &s, lines_include_newline, p.file_stem().and_then(|x| x.to_str()), ) .map_err(|e| LoadingError::ParseSyntax(e, format!("{}", p.display()))) } impl Clone for SyntaxSet { fn clone(&self) -> SyntaxSet { SyntaxSet { syntaxes: self.syntaxes.clone(), path_syntaxes: self.path_syntaxes.clone(), // Will need to be re-initialized first_line_cache: OnceCell::new(), #[cfg(feature = "metadata")] metadata: self.metadata.clone(), } } } impl Default for SyntaxSet { fn default() -> Self { SyntaxSet { syntaxes: Vec::new(), path_syntaxes: Vec::new(), first_line_cache: OnceCell::new(), #[cfg(feature = "metadata")] metadata: Metadata::default(), } } } impl SyntaxSet { pub fn new() -> SyntaxSet { SyntaxSet::default() } /// Convenience constructor for creating a builder, then loading syntax /// definitions from a folder and then building the syntax set. /// /// Note that this uses `lines_include_newline` set to `false`, see the /// [`add_from_folder`] method docs on [`SyntaxSetBuilder`] for an explanation /// as to why this might not be the best. /// /// [`add_from_folder`]: struct.SyntaxSetBuilder.html#method.add_from_folder /// [`SyntaxSetBuilder`]: struct.SyntaxSetBuilder.html #[cfg(feature = "yaml-load")] pub fn load_from_folder>(folder: P) -> Result { let mut builder = SyntaxSetBuilder::new(); builder.add_from_folder(folder, false)?; Ok(builder.build()) } /// The list of syntaxes in the set pub fn syntaxes(&self) -> &[SyntaxReference] { &self.syntaxes[..] } #[cfg(feature = "metadata")] pub fn set_metadata(&mut self, metadata: Metadata) { self.metadata = metadata; } /// The loaded metadata for this set. #[cfg(feature = "metadata")] pub fn metadata(&self) -> &Metadata { &self.metadata } /// Finds a syntax by its default scope, for example `source.regexp` finds the regex syntax. /// /// This and all similar methods below do a linear search of syntaxes, this should be fast /// because there aren't many syntaxes, but don't think you can call it a bajillion times per /// second. pub fn find_syntax_by_scope(&self, scope: Scope) -> Option<&SyntaxReference> { self.syntaxes.iter().rev().find(|&s| s.scope == scope) } pub fn find_syntax_by_name<'a>(&'a self, name: &str) -> Option<&'a SyntaxReference> { self.syntaxes.iter().rev().find(|&s| name == s.name) } pub fn find_syntax_by_extension<'a>(&'a self, extension: &str) -> Option<&'a SyntaxReference> { self.syntaxes.iter().rev().find(|&s| { s.file_extensions .iter() .any(|e| e.eq_ignore_ascii_case(extension)) }) } /// Searches for a syntax first by extension and then by case-insensitive name /// /// This is useful for things like Github-flavoured-markdown code block highlighting where all /// you have to go on is a short token given by the user pub fn find_syntax_by_token<'a>(&'a self, s: &str) -> Option<&'a SyntaxReference> { { let ext_res = self.find_syntax_by_extension(s); if ext_res.is_some() { return ext_res; } } self.syntaxes .iter() .rev() .find(|&syntax| syntax.name.eq_ignore_ascii_case(s)) } /// Try to find the syntax for a file based on its first line /// /// This uses regexes that come with some sublime syntax grammars for matching things like /// shebangs and mode lines like `-*- Mode: C -*-` pub fn find_syntax_by_first_line<'a>( &'a self, s: &str, ) -> Result, LoadingError> { let s = s.strip_prefix("\u{feff}").unwrap_or(s); // Strip UTF-8 BOM let cache = self.first_line_cache(); for &(ref reg, i) in cache.regexes.iter().rev() { let found = reg .search(s, 0, s.len(), None, false /*ignore errors*/) .map_err(|e| LoadingError::ParseSyntax(e, "regex parsing".to_string()))?; if found { return Ok(Some(&self.syntaxes[i])); } } Ok(None) } /// Searches for a syntax by it's original file path when it was first loaded from disk /// /// This is primarily useful for syntax tests. Some may specify a /// `Packages/PackageName/SyntaxName.sublime-syntax` path, and others may just have /// `SyntaxName.sublime-syntax`. This caters for these by matching the end of the path of the /// loaded syntax definition files // however, if a syntax name is provided without a folder, make sure we don't accidentally match the end of a different syntax definition's name - by checking a / comes before it or it is the full path pub fn find_syntax_by_path<'a>(&'a self, path: &str) -> Option<&'a SyntaxReference> { let mut slash_path = "/".to_string(); slash_path.push_str(path); self.path_syntaxes .iter() .rev() .find(|t| t.0.ends_with(&slash_path) || t.0 == path) .map(|&(_, i)| &self.syntaxes[i]) } /// Convenience method that tries to find the syntax for a file path, first by extension/name /// and then by first line of the file if that doesn't work. /// /// May IO Error because it sometimes tries to read the first line of the file. /// /// # Examples /// /// When determining how to highlight a file, use this in combination with a fallback to plain /// text: /// /// ``` /// use syntect::parsing::SyntaxSet; /// let ss = SyntaxSet::load_defaults_newlines(); /// let syntax = ss.find_syntax_for_file("testdata/highlight_test.erb") /// .unwrap() // for IO errors, you may want to use try!() or another plain text fallback /// .unwrap_or_else(|| ss.find_syntax_plain_text()); /// assert_eq!(syntax.name, "HTML (Rails)"); /// ``` pub fn find_syntax_for_file>( &self, path_obj: P, ) -> Result, LoadingError> { let path: &Path = path_obj.as_ref(); let file_name = path.file_name().and_then(|n| n.to_str()).unwrap_or(""); let extension = path.extension().and_then(|x| x.to_str()).unwrap_or(""); let ext_syntax = self .find_syntax_by_extension(file_name) .or_else(|| self.find_syntax_by_extension(extension)); let line_syntax = if ext_syntax.is_none() { let mut line = String::new(); let f = File::open(path)?; let mut line_reader = BufReader::new(&f); line_reader.read_line(&mut line)?; self.find_syntax_by_first_line(&line)? } else { None }; let syntax = ext_syntax.or(line_syntax); Ok(syntax) } /// Finds a syntax for plain text, which usually has no highlighting rules. /// /// This is good as a fallback when you can't find another syntax but you still want to use the /// same highlighting pipeline code. /// /// This syntax should always be present, if not this method will panic. If the way you load /// syntaxes doesn't create one, use [`add_plain_text_syntax`]. /// /// # Examples /// ``` /// use syntect::parsing::SyntaxSetBuilder; /// let mut builder = SyntaxSetBuilder::new(); /// builder.add_plain_text_syntax(); /// let ss = builder.build(); /// let syntax = ss.find_syntax_by_token("rs").unwrap_or_else(|| ss.find_syntax_plain_text()); /// assert_eq!(syntax.name, "Plain Text"); /// ``` /// /// [`add_plain_text_syntax`]: struct.SyntaxSetBuilder.html#method.add_plain_text_syntax pub fn find_syntax_plain_text(&self) -> &SyntaxReference { self.find_syntax_by_name("Plain Text") .expect("All syntax sets ought to have a plain text syntax") } /// Converts this syntax set into a builder so that more syntaxes can be /// added to it. /// /// Note that newly added syntaxes can have references to existing syntaxes /// in the set, but not the other way around. pub fn into_builder(self) -> SyntaxSetBuilder { #[cfg(feature = "metadata")] let SyntaxSet { syntaxes, path_syntaxes, metadata, .. } = self; #[cfg(not(feature = "metadata"))] let SyntaxSet { syntaxes, path_syntaxes, .. } = self; let mut context_map = HashMap::new(); for (syntax_index, syntax) in syntaxes.iter().enumerate() { for (context_index, context) in syntax.contexts().iter().enumerate() { context_map.insert( ContextId { syntax_index, context_index, }, context.clone(), ); } } let mut builder_syntaxes = Vec::with_capacity(syntaxes.len()); for syntax in syntaxes { let SyntaxReference { name, file_extensions, scope, first_line_match, hidden, variables, serialized_lazy_contexts, .. } = syntax; let lazy_contexts = LazyContexts::deserialize(&serialized_lazy_contexts[..]); let mut builder_contexts = HashMap::with_capacity(lazy_contexts.context_ids.len()); for (name, context_id) in lazy_contexts.context_ids { if let Some(context) = context_map.remove(&context_id) { builder_contexts.insert(name, context); } } let syntax_definition = SyntaxDefinition { name, file_extensions, scope, first_line_match, hidden, variables, contexts: builder_contexts, }; builder_syntaxes.push(syntax_definition); } SyntaxSetBuilder { syntaxes: builder_syntaxes, path_syntaxes, #[cfg(feature = "metadata")] existing_metadata: Some(metadata), #[cfg(feature = "metadata")] raw_metadata: LoadMetadata::default(), } } #[inline(always)] pub(crate) fn get_context(&self, context_id: &ContextId) -> Result<&Context, ParsingError> { let syntax = &self .syntaxes .get(context_id.syntax_index) .ok_or(ParsingError::MissingContext(*context_id))?; syntax .contexts() .get(context_id.context_index) .ok_or(ParsingError::MissingContext(*context_id)) } fn first_line_cache(&self) -> &FirstLineCache { self.first_line_cache .get_or_init(|| FirstLineCache::new(self.syntaxes())) } pub fn find_unlinked_contexts(&self) -> BTreeSet { let SyntaxSet { syntaxes, .. } = self; let mut unlinked_contexts = BTreeSet::new(); for syntax in syntaxes { let SyntaxReference { name, scope, .. } = syntax; for context in syntax.contexts() { Self::find_unlinked_contexts_in_context( name, scope, context, &mut unlinked_contexts, ); } } unlinked_contexts } fn find_unlinked_contexts_in_context( name: &str, scope: &Scope, context: &Context, unlinked_contexts: &mut BTreeSet, ) { for pattern in context.patterns.iter() { let maybe_refs_to_check = match pattern { Pattern::Match(match_pat) => match &match_pat.operation { MatchOperation::Push(context_refs) => Some(context_refs), MatchOperation::Set(context_refs) => Some(context_refs), _ => None, }, _ => None, }; for context_ref in maybe_refs_to_check.into_iter().flatten() { match context_ref { ContextReference::Direct(_) => {} _ => { unlinked_contexts.insert(format!( "Syntax '{}' with scope '{}' has unresolved context reference {:?}", name, scope, &context_ref )); } } } } } } impl SyntaxReference { pub(crate) fn context_ids(&self) -> &HashMap { &self.lazy_contexts().context_ids } fn contexts(&self) -> &[Context] { &self.lazy_contexts().contexts } fn lazy_contexts(&self) -> &LazyContexts { self.lazy_contexts .get_or_init(|| LazyContexts::deserialize(&self.serialized_lazy_contexts[..])) } } impl LazyContexts { fn deserialize(data: &[u8]) -> LazyContexts { crate::dumps::from_reader(data).expect("data is not corrupt or out of sync with the code") } } impl SyntaxSetBuilder { pub fn new() -> SyntaxSetBuilder { SyntaxSetBuilder::default() } /// Add a syntax to the set. pub fn add(&mut self, syntax: SyntaxDefinition) { self.syntaxes.push(syntax); } /// The list of syntaxes added so far. pub fn syntaxes(&self) -> &[SyntaxDefinition] { &self.syntaxes[..] } /// A rarely useful method that loads in a syntax with no highlighting rules for plain text /// /// Exists mainly for adding the plain text syntax to syntax set dumps, because for some reason /// the default Sublime plain text syntax is still in `.tmLanguage` format. #[cfg(feature = "yaml-load")] pub fn add_plain_text_syntax(&mut self) { let s = "---\nname: Plain Text\nfile_extensions: [txt]\nscope: text.plain\ncontexts: \ {main: []}"; let syn = SyntaxDefinition::load_from_str(s, false, None).unwrap(); self.syntaxes.push(syn); } /// Loads all the `.sublime-syntax` files in a folder into this builder. /// /// The `lines_include_newline` parameter is used to work around the fact that Sublime Text /// normally passes line strings including newline characters (`\n`) to its regex engine. This /// results in many syntaxes having regexes matching `\n`, which doesn't work if you don't pass /// in newlines. It is recommended that if you can you pass in lines with newlines if you can /// and pass `true` for this parameter. If that is inconvenient pass `false` and the loader /// will do some hacky find and replaces on the match regexes that seem to work for the default /// syntax set, but may not work for any other syntaxes. /// /// In the future I might include a "slow mode" that copies the lines passed in and appends a /// newline if there isn't one, but in the interest of performance currently this hacky fix will /// have to do. #[cfg(feature = "yaml-load")] pub fn add_from_folder>( &mut self, folder: P, lines_include_newline: bool, ) -> Result<(), LoadingError> { for entry in crate::utils::walk_dir(folder).sort_by(|a, b| a.file_name().cmp(b.file_name())) { let entry = entry.map_err(LoadingError::WalkDir)?; if entry .path() .extension() .map_or(false, |e| e == "sublime-syntax") { let syntax = load_syntax_file(entry.path(), lines_include_newline)?; if let Some(path_str) = entry.path().to_str() { // Split the path up and rejoin with slashes so that syntaxes loaded on Windows // can still be loaded the same way. let path = Path::new(path_str); let path_parts: Vec<_> = path.iter().map(|c| c.to_str().unwrap()).collect(); self.path_syntaxes .push((path_parts.join("/").to_string(), self.syntaxes.len())); } self.syntaxes.push(syntax); } #[cfg(feature = "metadata")] { if entry.path().extension() == Some("tmPreferences".as_ref()) { match RawMetadataEntry::load(entry.path()) { Ok(meta) => self.raw_metadata.add_raw(meta), Err(_err) => (), } } } } Ok(()) } /// Build a [`SyntaxSet`] from the syntaxes that have been added to this /// builder. /// /// ### Linking /// /// The contexts in syntaxes can reference other contexts in the same syntax /// or even other syntaxes. For example, a HTML syntax can reference a CSS /// syntax so that CSS blocks in HTML work as expected. /// /// Those references work in various ways and involve one or two lookups. /// To avoid having to do these lookups during parsing/highlighting, the /// references are changed to directly reference contexts via index. That's /// called linking. /// /// Linking is done in this build step. So in order to get the best /// performance, you should try to avoid calling this too much. Ideally, /// create a [`SyntaxSet`] once and then use it many times. If you can, /// serialize a [`SyntaxSet`] for your program and when you run the program, /// directly load the [`SyntaxSet`]. /// /// [`SyntaxSet`]: struct.SyntaxSet.html pub fn build(self) -> SyntaxSet { #[cfg(not(feature = "metadata"))] let SyntaxSetBuilder { syntaxes: syntax_definitions, path_syntaxes, } = self; #[cfg(feature = "metadata")] let SyntaxSetBuilder { syntaxes: syntax_definitions, path_syntaxes, raw_metadata, existing_metadata, } = self; let mut syntaxes = Vec::with_capacity(syntax_definitions.len()); let mut all_context_ids = Vec::new(); let mut all_contexts = vec![Vec::new(); syntax_definitions.len()]; for (syntax_index, syntax_definition) in syntax_definitions.into_iter().enumerate() { let SyntaxDefinition { name, file_extensions, scope, first_line_match, hidden, variables, contexts, } = syntax_definition; let mut context_ids = HashMap::new(); let mut contexts: Vec<(String, Context)> = contexts.into_iter().collect(); // Sort the values of the HashMap so that the contexts in the // resulting SyntaxSet have a deterministic order for serializing. // Because we're sorting by the keys which are unique, we can use // an unstable sort. contexts.sort_unstable_by(|(name_a, _), (name_b, _)| name_a.cmp(name_b)); for (name, context) in contexts { let context_index = all_contexts[syntax_index].len(); context_ids.insert( name, ContextId { syntax_index, context_index, }, ); all_contexts[syntax_index].push(context); } let syntax = SyntaxReference { name, file_extensions, scope, first_line_match, hidden, variables, lazy_contexts: OnceCell::new(), serialized_lazy_contexts: Vec::new(), // initialized in the last step }; syntaxes.push(syntax); all_context_ids.push(context_ids); } let mut found_more_backref_includes = true; for (syntax_index, _syntax) in syntaxes.iter().enumerate() { let mut no_prototype = HashSet::new(); let prototype = all_context_ids[syntax_index].get("prototype"); if let Some(prototype_id) = prototype { // TODO: We could do this after parsing YAML, instead of here? Self::recursively_mark_no_prototype( prototype_id, &all_context_ids[syntax_index], &all_contexts, &mut no_prototype, ); } for context_id in all_context_ids[syntax_index].values() { let context = &mut all_contexts[context_id.syntax_index][context_id.context_index]; if let Some(prototype_id) = prototype { if context.meta_include_prototype && !no_prototype.contains(context_id) { context.prototype = Some(*prototype_id); } } Self::link_context(context, syntax_index, &all_context_ids, &syntaxes); if context.uses_backrefs { found_more_backref_includes = true; } } } // We need to recursively mark contexts that include contexts which // use backreferences as using backreferences. In theory we could use // a more efficient method here like doing a toposort or constructing // a representation with reversed edges and then tracing in the // opposite direction, but I benchmarked this and it adds <2% to link // time on the default syntax set, and linking doesn't even happen // when loading from a binary dump. while found_more_backref_includes { found_more_backref_includes = false; // find any contexts which include a context which uses backrefs // and mark those as using backrefs - to support nested includes for syntax_index in 0..syntaxes.len() { for context_index in 0..all_contexts[syntax_index].len() { let context = &all_contexts[syntax_index][context_index]; if !context.uses_backrefs && context.patterns.iter().any(|pattern| { matches!(pattern, Pattern::Include(ContextReference::Direct(id)) if all_contexts[id.syntax_index][id.context_index].uses_backrefs) }) { let context = &mut all_contexts[syntax_index][context_index]; context.uses_backrefs = true; // look for contexts including this context found_more_backref_includes = true; } } } } #[cfg(feature = "metadata")] let metadata = match existing_metadata { Some(existing) => existing.merged_with_raw(raw_metadata), None => raw_metadata.into(), }; // The combination of // * the algorithms above // * the borrow checker // makes it necessary to set these up as the last step. for syntax in &mut syntaxes { let lazy_contexts = LazyContexts { context_ids: all_context_ids.remove(0), contexts: all_contexts.remove(0), }; syntax.serialized_lazy_contexts = crate::dumps::dump_binary(&lazy_contexts); } SyntaxSet { syntaxes, path_syntaxes, first_line_cache: OnceCell::new(), #[cfg(feature = "metadata")] metadata, } } /// Anything recursively included by the prototype shouldn't include the prototype. /// This marks them as such. fn recursively_mark_no_prototype( context_id: &ContextId, syntax_context_ids: &HashMap, all_contexts: &[Vec], no_prototype: &mut HashSet, ) { let first_time = no_prototype.insert(*context_id); if !first_time { return; } for pattern in &all_contexts[context_id.syntax_index][context_id.context_index].patterns { match *pattern { // Apparently inline blocks also don't include the prototype when within the prototype. // This is really weird, but necessary to run the YAML syntax. Pattern::Match(ref match_pat) => { let maybe_context_refs = match match_pat.operation { MatchOperation::Push(ref context_refs) | MatchOperation::Set(ref context_refs) => Some(context_refs), MatchOperation::Pop | MatchOperation::None => None, }; if let Some(context_refs) = maybe_context_refs { for context_ref in context_refs.iter() { match context_ref { ContextReference::Inline(ref s) | ContextReference::Named(ref s) => { if let Some(i) = syntax_context_ids.get(s) { Self::recursively_mark_no_prototype( i, syntax_context_ids, all_contexts, no_prototype, ); } } ContextReference::Direct(ref id) => { Self::recursively_mark_no_prototype( id, syntax_context_ids, all_contexts, no_prototype, ); } _ => (), } } } } Pattern::Include(ref reference) => match reference { ContextReference::Named(ref s) => { if let Some(id) = syntax_context_ids.get(s) { Self::recursively_mark_no_prototype( id, syntax_context_ids, all_contexts, no_prototype, ); } } ContextReference::Direct(ref id) => { Self::recursively_mark_no_prototype( id, syntax_context_ids, all_contexts, no_prototype, ); } _ => (), }, } } } fn link_context( context: &mut Context, syntax_index: usize, all_context_ids: &[HashMap], syntaxes: &[SyntaxReference], ) { for pattern in &mut context.patterns { match *pattern { Pattern::Match(ref mut match_pat) => { Self::link_match_pat(match_pat, syntax_index, all_context_ids, syntaxes) } Pattern::Include(ref mut context_ref) => { Self::link_ref(context_ref, syntax_index, all_context_ids, syntaxes) } } } } fn link_ref( context_ref: &mut ContextReference, syntax_index: usize, all_context_ids: &[HashMap], syntaxes: &[SyntaxReference], ) { // println!("{:?}", context_ref); use super::syntax_definition::ContextReference::*; let linked_context_id = match *context_ref { Named(ref s) | Inline(ref s) => { // This isn't actually correct, but it is better than nothing/crashing. // This is being phased out anyhow, see https://github.com/sublimehq/Packages/issues/73 // Fixes issue #30 if s == "$top_level_main" { all_context_ids[syntax_index].get("main") } else { all_context_ids[syntax_index].get(s) } } ByScope { scope, ref sub_context, with_escape, } => Self::with_plain_text_fallback( all_context_ids, syntaxes, with_escape, Self::find_id(sub_context, all_context_ids, syntaxes, |index_and_syntax| { index_and_syntax.1.scope == scope }), ), File { ref name, ref sub_context, with_escape, } => Self::with_plain_text_fallback( all_context_ids, syntaxes, with_escape, Self::find_id(sub_context, all_context_ids, syntaxes, |index_and_syntax| { &index_and_syntax.1.name == name }), ), Direct(_) => None, }; if let Some(context_id) = linked_context_id { let mut new_ref = Direct(*context_id); mem::swap(context_ref, &mut new_ref); } } fn with_plain_text_fallback<'a>( all_context_ids: &'a [HashMap], syntaxes: &'a [SyntaxReference], with_escape: bool, context_id: Option<&'a ContextId>, ) -> Option<&'a ContextId> { context_id.or_else(|| { if with_escape { // If we keep this reference unresolved, syntect will crash // when it encounters the reference. Rather than crashing, // we instead fall back to "Plain Text". This seems to be // how Sublime Text behaves. It should be a safe thing to do // since `embed`s always includes an `escape` to get out of // the `embed`. Self::find_id(&None, all_context_ids, syntaxes, |index_and_syntax| { index_and_syntax.1.name == "Plain Text" }) } else { None } }) } fn find_id<'a>( sub_context: &Option, all_context_ids: &'a [HashMap], syntaxes: &'a [SyntaxReference], predicate: impl FnMut(&(usize, &SyntaxReference)) -> bool, ) -> Option<&'a ContextId> { let context_name = sub_context.as_ref().map_or("main", |x| &**x); syntaxes .iter() .enumerate() .rev() .find(predicate) .and_then(|index_and_syntax| all_context_ids[index_and_syntax.0].get(context_name)) } fn link_match_pat( match_pat: &mut MatchPattern, syntax_index: usize, all_context_ids: &[HashMap], syntaxes: &[SyntaxReference], ) { let maybe_context_refs = match match_pat.operation { MatchOperation::Push(ref mut context_refs) | MatchOperation::Set(ref mut context_refs) => Some(context_refs), MatchOperation::Pop | MatchOperation::None => None, }; if let Some(context_refs) = maybe_context_refs { for context_ref in context_refs.iter_mut() { Self::link_ref(context_ref, syntax_index, all_context_ids, syntaxes); } } if let Some(ref mut context_ref) = match_pat.with_prototype { Self::link_ref(context_ref, syntax_index, all_context_ids, syntaxes); } } } #[derive(Debug)] struct FirstLineCache { /// (first line regex, syntax index) pairs for all syntaxes with a first line regex regexes: Vec<(Regex, usize)>, } impl FirstLineCache { fn new(syntaxes: &[SyntaxReference]) -> FirstLineCache { let mut regexes = Vec::new(); for (i, syntax) in syntaxes.iter().enumerate() { if let Some(ref reg_str) = syntax.first_line_match { let reg = Regex::new(reg_str.into()); regexes.push((reg, i)); } } FirstLineCache { regexes } } } #[cfg(feature = "yaml-load")] #[cfg(test)] mod tests { use super::*; use crate::parsing::{syntax_definition, ParseState, Scope}; use std::collections::HashMap; #[test] fn can_load() { let mut builder = SyntaxSetBuilder::new(); builder.add_from_folder("testdata/Packages", false).unwrap(); let cmake_dummy_syntax = SyntaxDefinition { name: "CMake".to_string(), file_extensions: vec!["CMakeLists.txt".to_string(), "cmake".to_string()], scope: Scope::new("source.cmake").unwrap(), first_line_match: None, hidden: false, variables: HashMap::new(), contexts: HashMap::new(), }; builder.add(cmake_dummy_syntax); builder.add_plain_text_syntax(); let ps = builder.build(); assert_eq!( &ps.find_syntax_by_first_line("#!/usr/bin/env node") .unwrap() .unwrap() .name, "JavaScript" ); let rails_scope = Scope::new("source.ruby.rails").unwrap(); let syntax = ps.find_syntax_by_name("Ruby on Rails").unwrap(); ps.find_syntax_plain_text(); assert_eq!(&ps.find_syntax_by_extension("rake").unwrap().name, "Ruby"); assert_eq!(&ps.find_syntax_by_extension("RAKE").unwrap().name, "Ruby"); assert_eq!(&ps.find_syntax_by_token("ruby").unwrap().name, "Ruby"); assert_eq!( &ps.find_syntax_by_first_line("lol -*- Mode: C -*- such line") .unwrap() .unwrap() .name, "C" ); assert_eq!( &ps.find_syntax_for_file("testdata/parser.rs") .unwrap() .unwrap() .name, "Rust" ); assert_eq!( &ps.find_syntax_for_file("testdata/test_first_line.test") .expect("Error finding syntax for file") .expect("No syntax found for file") .name, "Ruby" ); assert_eq!( &ps.find_syntax_for_file(".bashrc").unwrap().unwrap().name, "Bourne Again Shell (bash)" ); assert_eq!( &ps.find_syntax_for_file("CMakeLists.txt") .unwrap() .unwrap() .name, "CMake" ); assert_eq!( &ps.find_syntax_for_file("test.cmake").unwrap().unwrap().name, "CMake" ); assert_eq!( &ps.find_syntax_for_file("Rakefile").unwrap().unwrap().name, "Ruby" ); assert!(&ps .find_syntax_by_first_line("derp derp hi lol") .unwrap() .is_none()); assert_eq!( &ps.find_syntax_by_path("Packages/Rust/Rust.sublime-syntax") .unwrap() .name, "Rust" ); // println!("{:#?}", syntax); assert_eq!(syntax.scope, rails_scope); // unreachable!(); let main_context = ps .get_context(&syntax.context_ids()["main"]) .expect("#[cfg(test)]"); let count = syntax_definition::context_iter(&ps, main_context).count(); assert_eq!(count, 109); } #[test] fn can_clone() { let cloned_syntax_set = { let mut builder = SyntaxSetBuilder::new(); builder.add(syntax_a()); builder.add(syntax_b()); let syntax_set_original = builder.build(); #[allow(clippy::redundant_clone)] // We want to test .clone() syntax_set_original.clone() // Note: The original syntax set is dropped }; let syntax = cloned_syntax_set.find_syntax_by_extension("a").unwrap(); let mut parse_state = ParseState::new(syntax, false); let ops = parse_state .parse_line("a go_b b", &cloned_syntax_set) .expect("#[cfg(test)]"); let expected = (7, ScopeStackOp::Push(Scope::new("b").unwrap())); assert_ops_contain(&ops, &expected); } #[test] fn can_list_added_syntaxes() { let mut builder = SyntaxSetBuilder::new(); builder.add(syntax_a()); builder.add(syntax_b()); let syntaxes = builder.syntaxes(); assert_eq!(syntaxes.len(), 2); assert_eq!(syntaxes[0].name, "A"); assert_eq!(syntaxes[1].name, "B"); } #[test] fn can_add_more_syntaxes_with_builder() { let syntax_set_original = { let mut builder = SyntaxSetBuilder::new(); builder.add(syntax_a()); builder.add(syntax_b()); builder.build() }; let mut builder = syntax_set_original.into_builder(); let syntax_c = SyntaxDefinition::load_from_str( r#" name: C scope: source.c file_extensions: [c] contexts: main: - match: 'c' scope: c - match: 'go_a' push: scope:source.a#main "#, true, None, ) .unwrap(); builder.add(syntax_c); let syntax_set = builder.build(); let syntax = syntax_set.find_syntax_by_extension("c").unwrap(); let mut parse_state = ParseState::new(syntax, false); let ops = parse_state .parse_line("c go_a a go_b b", &syntax_set) .expect("#[cfg(test)]"); let expected = (14, ScopeStackOp::Push(Scope::new("b").unwrap())); assert_ops_contain(&ops, &expected); } #[test] fn falls_back_to_plain_text_when_embedded_scope_is_missing() { test_plain_text_fallback( r#" name: Z scope: source.z file_extensions: [z] contexts: main: - match: 'z' scope: z - match: 'go_x' embed: scope:does.not.exist escape: 'leave_x' "#, ); } #[test] fn falls_back_to_plain_text_when_embedded_file_is_missing() { test_plain_text_fallback( r#" name: Z scope: source.z file_extensions: [z] contexts: main: - match: 'z' scope: z - match: 'go_x' embed: DoesNotExist.sublime-syntax escape: 'leave_x' "#, ); } fn test_plain_text_fallback(syntax_definition: &str) { let syntax = SyntaxDefinition::load_from_str(syntax_definition, true, None).unwrap(); let mut builder = SyntaxSetBuilder::new(); builder.add_plain_text_syntax(); builder.add(syntax); let syntax_set = builder.build(); let syntax = syntax_set.find_syntax_by_extension("z").unwrap(); let mut parse_state = ParseState::new(syntax, false); let ops = parse_state .parse_line("z go_x x leave_x z", &syntax_set) .unwrap(); let expected_ops = vec![ (0, ScopeStackOp::Push(Scope::new("source.z").unwrap())), (0, ScopeStackOp::Push(Scope::new("z").unwrap())), (1, ScopeStackOp::Pop(1)), (6, ScopeStackOp::Push(Scope::new("text.plain").unwrap())), (9, ScopeStackOp::Pop(1)), (17, ScopeStackOp::Push(Scope::new("z").unwrap())), (18, ScopeStackOp::Pop(1)), ]; assert_eq!(ops, expected_ops); } #[test] fn can_find_unlinked_contexts() { let syntax_set = { let mut builder = SyntaxSetBuilder::new(); builder.add(syntax_a()); builder.add(syntax_b()); builder.build() }; let unlinked_contexts = syntax_set.find_unlinked_contexts(); assert_eq!(unlinked_contexts.len(), 0); let syntax_set = { let mut builder = SyntaxSetBuilder::new(); builder.add(syntax_a()); builder.build() }; let unlinked_contexts: Vec = syntax_set.find_unlinked_contexts().into_iter().collect(); assert_eq!(unlinked_contexts.len(), 1); assert_eq!(unlinked_contexts[0], "Syntax 'A' with scope 'source.a' has unresolved context reference ByScope { scope: , sub_context: Some(\"main\"), with_escape: false }"); } #[test] fn can_use_in_multiple_threads() { use rayon::prelude::*; let syntax_set = { let mut builder = SyntaxSetBuilder::new(); builder.add(syntax_a()); builder.add(syntax_b()); builder.build() }; let lines = vec!["a a a", "a go_b b", "go_b b", "go_b b b"]; let results: Vec> = lines .par_iter() .map(|line| { let syntax = syntax_set.find_syntax_by_extension("a").unwrap(); let mut parse_state = ParseState::new(syntax, false); parse_state .parse_line(line, &syntax_set) .expect("#[cfg(test)]") }) .collect(); assert_ops_contain( &results[0], &(4, ScopeStackOp::Push(Scope::new("a").unwrap())), ); assert_ops_contain( &results[1], &(7, ScopeStackOp::Push(Scope::new("b").unwrap())), ); assert_ops_contain( &results[2], &(5, ScopeStackOp::Push(Scope::new("b").unwrap())), ); assert_ops_contain( &results[3], &(8, ScopeStackOp::Push(Scope::new("b").unwrap())), ); } #[test] fn is_sync() { check_sync::(); } #[test] fn is_send() { check_send::(); } #[test] fn can_override_syntaxes() { let syntax_set = { let mut builder = SyntaxSetBuilder::new(); builder.add(syntax_a()); builder.add(syntax_b()); let syntax_a2 = SyntaxDefinition::load_from_str( r#" name: A improved scope: source.a file_extensions: [a] first_line_match: syntax\s+a contexts: main: - match: a scope: a2 - match: go_b push: scope:source.b#main "#, true, None, ) .unwrap(); builder.add(syntax_a2); let syntax_c = SyntaxDefinition::load_from_str( r#" name: C scope: source.c file_extensions: [c] first_line_match: syntax\s+.* contexts: main: - match: c scope: c - match: go_a push: scope:source.a#main "#, true, None, ) .unwrap(); builder.add(syntax_c); builder.build() }; let mut syntax = syntax_set.find_syntax_by_extension("a").unwrap(); assert_eq!(syntax.name, "A improved"); syntax = syntax_set .find_syntax_by_scope(Scope::new("source.a").unwrap()) .unwrap(); assert_eq!(syntax.name, "A improved"); syntax = syntax_set .find_syntax_by_first_line("syntax a") .unwrap() .unwrap(); assert_eq!(syntax.name, "C"); let mut parse_state = ParseState::new(syntax, false); let ops = parse_state .parse_line("c go_a a", &syntax_set) .expect("msg"); let expected = (7, ScopeStackOp::Push(Scope::new("a2").unwrap())); assert_ops_contain(&ops, &expected); } #[test] fn can_parse_issue219() { // Go to builder and back after loading so that build() gets Direct references instead of // Named ones. The bug was that Direct references were not handled when marking as // "no prototype", so prototype contexts accidentally had the prototype set, which made // the parser loop forever. let syntax_set = SyntaxSet::load_defaults_newlines().into_builder().build(); let syntax = syntax_set.find_syntax_by_extension("yaml").unwrap(); let mut parse_state = ParseState::new(syntax, false); let ops = parse_state .parse_line("# test\n", &syntax_set) .expect("#[cfg(test)]"); let expected = ( 0, ScopeStackOp::Push(Scope::new("comment.line.number-sign.yaml").unwrap()), ); assert_ops_contain(&ops, &expected); } #[test] fn no_prototype_for_contexts_included_from_prototype() { let mut builder = SyntaxSetBuilder::new(); let syntax = SyntaxDefinition::load_from_str( r#" name: Test Prototype scope: source.test file_extensions: [test] contexts: prototype: - include: included_from_prototype main: - match: main - match: other push: other other: - match: o included_from_prototype: - match: p scope: p "#, true, None, ) .unwrap(); builder.add(syntax); let ss = builder.build(); // "main" and "other" should have context set, "prototype" and "included_from_prototype" // must not have a prototype set. assert_prototype_only_on(&["main", "other"], &ss, &ss.syntaxes()[0]); // Building again should have the same result. The difference is that after the first // build(), the references have been replaced with Direct references, so the code needs to // handle that correctly. let rebuilt = ss.into_builder().build(); assert_prototype_only_on(&["main", "other"], &rebuilt, &rebuilt.syntaxes()[0]); } #[test] fn no_prototype_for_contexts_inline_in_prototype() { let mut builder = SyntaxSetBuilder::new(); let syntax = SyntaxDefinition::load_from_str( r#" name: Test Prototype scope: source.test file_extensions: [test] contexts: prototype: - match: p push: - match: p2 main: - match: main "#, true, None, ) .unwrap(); builder.add(syntax); let ss = builder.build(); assert_prototype_only_on(&["main"], &ss, &ss.syntaxes()[0]); let rebuilt = ss.into_builder().build(); assert_prototype_only_on(&["main"], &rebuilt, &rebuilt.syntaxes()[0]); } #[test] fn find_syntax_set_from_line_with_bom() { // Regression test for #529 let syntax_set = SyntaxSet::load_defaults_newlines(); let syntax_ref = syntax_set .find_syntax_by_first_line("\u{feff}") .unwrap() .unwrap(); assert_eq!(syntax_ref.name, "XML"); } fn assert_ops_contain(ops: &[(usize, ScopeStackOp)], expected: &(usize, ScopeStackOp)) { assert!( ops.contains(expected), "expected operations to contain {:?}: {:?}", expected, ops ); } fn assert_prototype_only_on( expected: &[&str], syntax_set: &SyntaxSet, syntax: &SyntaxReference, ) { for (name, id) in syntax.context_ids() { if name == "__main" || name == "__start" { // Skip special contexts continue; } let context = syntax_set.get_context(id).expect("#[cfg(test)]"); if expected.contains(&name.as_str()) { assert!( context.prototype.is_some(), "Expected context {} to have prototype", name ); } else { assert!( context.prototype.is_none(), "Expected context {} to not have prototype", name ); } } } fn check_send() {} fn check_sync() {} fn syntax_a() -> SyntaxDefinition { SyntaxDefinition::load_from_str( r#" name: A scope: source.a file_extensions: [a] contexts: main: - match: 'a' scope: a - match: 'go_b' push: scope:source.b#main "#, true, None, ) .unwrap() } fn syntax_b() -> SyntaxDefinition { SyntaxDefinition::load_from_str( r#" name: B scope: source.b file_extensions: [b] contexts: main: - match: 'b' scope: b "#, true, None, ) .unwrap() } } syntect-no-panic-6.0.0/src/parsing/yaml_load.rs000064400000000000000000001355041046102023000175730ustar 00000000000000use super::regex::{Regex, Region}; use super::scope::*; use super::syntax_definition::*; use std::collections::HashMap; use std::error::Error; use std::ops::DerefMut; use std::path::Path; use yaml_rust::yaml::Hash; use yaml_rust::{ScanError, Yaml, YamlLoader}; #[derive(Debug, thiserror::Error)] #[non_exhaustive] pub enum ParseSyntaxError { /// Invalid YAML file syntax, or at least something yaml_rust can't handle #[error("Invalid YAML file syntax: {0}")] InvalidYaml(#[from] ScanError), /// The file must contain at least one YAML document #[error("The file must contain at least one YAML document")] EmptyFile, /// Some keys are required for something to be a valid `.sublime-syntax` #[error("Missing mandatory key in YAML file: {0}")] MissingMandatoryKey(&'static str), /// Invalid regex #[error("Error while compiling regex '{0}': {1}")] RegexCompileError(String, #[source] Box), /// A scope that syntect's scope implementation can't handle #[error("Invalid scope: {0}")] InvalidScope(ParseScopeError), /// A reference to another file that is invalid #[error("Invalid file reference")] BadFileRef, /// Syntaxes must have a context named "main" #[error("Context 'main' is missing")] MainMissing, /// Some part of the YAML file is the wrong type (e.g a string but should be a list) /// Sorry this doesn't give you any way to narrow down where this is. /// Maybe use Sublime Text to figure it out. #[error("Type mismatch")] TypeMismatch, } fn get_key<'a, R, F: FnOnce(&'a Yaml) -> Option>( map: &'a Hash, key: &'static str, f: F, ) -> Result { map.get(&Yaml::String(key.to_owned())) .ok_or(ParseSyntaxError::MissingMandatoryKey(key)) .and_then(|x| f(x).ok_or(ParseSyntaxError::TypeMismatch)) } fn str_to_scopes(s: &str, repo: &mut ScopeRepository) -> Result, ParseSyntaxError> { s.split_whitespace() .map(|scope| repo.build(scope).map_err(ParseSyntaxError::InvalidScope)) .collect() } struct ParserState<'a> { scope_repo: &'a mut ScopeRepository, variables: HashMap, variable_regex: Regex, backref_regex: Regex, lines_include_newline: bool, } // `__start` must not include prototypes from the actual syntax definition, // otherwise it's possible that a prototype makes us pop out of `__start`. static START_CONTEXT: &str = " __start: - meta_include_prototype: false - match: '' push: __main __main: - include: main "; impl SyntaxDefinition { /// In case you want to create your own SyntaxDefinition's in memory from strings. /// /// Generally you should use a [`SyntaxSet`]. /// /// `fallback_name` is an optional name to use when the YAML doesn't provide a `name` key. /// /// [`SyntaxSet`]: ../struct.SyntaxSet.html pub fn load_from_str( s: &str, lines_include_newline: bool, fallback_name: Option<&str>, ) -> Result { let docs = match YamlLoader::load_from_str(s) { Ok(x) => x, Err(e) => return Err(ParseSyntaxError::InvalidYaml(e)), }; if docs.is_empty() { return Err(ParseSyntaxError::EmptyFile); } let doc = &docs[0]; let mut scope_repo = SCOPE_REPO.lock().unwrap(); SyntaxDefinition::parse_top_level( doc, scope_repo.deref_mut(), lines_include_newline, fallback_name, ) } fn parse_top_level( doc: &Yaml, scope_repo: &mut ScopeRepository, lines_include_newline: bool, fallback_name: Option<&str>, ) -> Result { let h = doc.as_hash().ok_or(ParseSyntaxError::TypeMismatch)?; let mut variables = HashMap::new(); if let Ok(map) = get_key(h, "variables", |x| x.as_hash()) { for (key, value) in map.iter() { if let (Some(key_str), Some(val_str)) = (key.as_str(), value.as_str()) { variables.insert(key_str.to_owned(), val_str.to_owned()); } } } let contexts_hash = get_key(h, "contexts", |x| x.as_hash())?; let top_level_scope = scope_repo .build(get_key(h, "scope", |x| x.as_str())?) .map_err(ParseSyntaxError::InvalidScope)?; let mut state = ParserState { scope_repo, variables, variable_regex: Regex::new(r"\{\{([A-Za-z0-9_]+)\}\}".into()), backref_regex: Regex::new(r"\\\d".into()), lines_include_newline, }; let mut contexts = SyntaxDefinition::parse_contexts(contexts_hash, &mut state)?; if !contexts.contains_key("main") { return Err(ParseSyntaxError::MainMissing); } SyntaxDefinition::add_initial_contexts(&mut contexts, &mut state, top_level_scope); let mut file_extensions = Vec::new(); for extension_key in &["file_extensions", "hidden_file_extensions"] { if let Ok(v) = get_key(h, extension_key, |x| x.as_vec()) { file_extensions.extend(v.iter().filter_map(|y| y.as_str().map(|s| s.to_owned()))) } } let defn = SyntaxDefinition { name: get_key(h, "name", |x| x.as_str()) .unwrap_or_else(|_| fallback_name.unwrap_or("Unnamed")) .to_owned(), scope: top_level_scope, file_extensions, // TODO maybe cache a compiled version of this Regex first_line_match: get_key(h, "first_line_match", |x| x.as_str()) .ok() .map(|s| s.to_owned()), hidden: get_key(h, "hidden", |x| x.as_bool()).unwrap_or(false), variables: state.variables, contexts, }; Ok(defn) } fn parse_contexts( map: &Hash, state: &mut ParserState<'_>, ) -> Result, ParseSyntaxError> { let mut contexts = HashMap::new(); for (key, value) in map.iter() { if let (Some(name), Some(val_vec)) = (key.as_str(), value.as_vec()) { let is_prototype = name == "prototype"; let mut namer = ContextNamer::new(name); SyntaxDefinition::parse_context( val_vec, state, &mut contexts, is_prototype, &mut namer, )?; } } Ok(contexts) } fn parse_context( vec: &[Yaml], // TODO: Maybe just pass the scope repo if that's all that's needed? state: &mut ParserState<'_>, contexts: &mut HashMap, is_prototype: bool, namer: &mut ContextNamer, ) -> Result { let mut context = Context::new(!is_prototype); let name = namer.next(); for y in vec.iter() { let map = y.as_hash().ok_or(ParseSyntaxError::TypeMismatch)?; let mut is_special = false; if let Ok(x) = get_key(map, "meta_scope", |x| x.as_str()) { context.meta_scope = str_to_scopes(x, state.scope_repo)?; is_special = true; } if let Ok(x) = get_key(map, "meta_content_scope", |x| x.as_str()) { context.meta_content_scope = str_to_scopes(x, state.scope_repo)?; is_special = true; } if let Ok(x) = get_key(map, "meta_include_prototype", |x| x.as_bool()) { context.meta_include_prototype = x; is_special = true; } if let Ok(true) = get_key(map, "clear_scopes", |x| x.as_bool()) { context.clear_scopes = Some(ClearAmount::All); is_special = true; } if let Ok(x) = get_key(map, "clear_scopes", |x| x.as_i64()) { context.clear_scopes = Some(ClearAmount::TopN(x as usize)); is_special = true; } if !is_special { if let Ok(x) = get_key(map, "include", Some) { let reference = SyntaxDefinition::parse_reference(x, state, contexts, namer, false)?; context.patterns.push(Pattern::Include(reference)); } else { let pattern = SyntaxDefinition::parse_match_pattern(map, state, contexts, namer)?; if pattern.has_captures { context.uses_backrefs = true; } context.patterns.push(Pattern::Match(pattern)); } } } contexts.insert(name.clone(), context); Ok(name) } fn parse_reference( y: &Yaml, state: &mut ParserState<'_>, contexts: &mut HashMap, namer: &mut ContextNamer, with_escape: bool, ) -> Result { if let Some(s) = y.as_str() { let parts: Vec<&str> = s.split('#').collect(); let sub_context = if parts.len() > 1 { Some(parts[1].to_owned()) } else { None }; if parts[0].starts_with("scope:") { Ok(ContextReference::ByScope { scope: state .scope_repo .build(&parts[0][6..]) .map_err(ParseSyntaxError::InvalidScope)?, sub_context, with_escape, }) } else if parts[0].ends_with(".sublime-syntax") { let stem = Path::new(parts[0]) .file_stem() .and_then(|x| x.to_str()) .ok_or(ParseSyntaxError::BadFileRef)?; Ok(ContextReference::File { name: stem.to_owned(), sub_context, with_escape, }) } else { Ok(ContextReference::Named(parts[0].to_owned())) } } else if let Some(v) = y.as_vec() { let subname = SyntaxDefinition::parse_context(v, state, contexts, false, namer)?; Ok(ContextReference::Inline(subname)) } else { Err(ParseSyntaxError::TypeMismatch) } } fn parse_match_pattern( map: &Hash, state: &mut ParserState<'_>, contexts: &mut HashMap, namer: &mut ContextNamer, ) -> Result { let raw_regex = get_key(map, "match", |x| x.as_str())?; let regex_str = Self::parse_regex(raw_regex, state)?; // println!("{:?}", regex_str); let scope = get_key(map, "scope", |x| x.as_str()) .ok() .map(|s| str_to_scopes(s, state.scope_repo)) .unwrap_or_else(|| Ok(vec![]))?; let captures = if let Ok(map) = get_key(map, "captures", |x| x.as_hash()) { Some(Self::parse_captures(map, ®ex_str, state)?) } else { None }; let mut has_captures = false; let operation = if get_key(map, "pop", Some).is_ok() { // Thanks @wbond for letting me know this is the correct way to check for captures has_captures = state .backref_regex .search(®ex_str, 0, regex_str.len(), None, false)?; MatchOperation::Pop } else if let Ok(y) = get_key(map, "push", Some) { MatchOperation::Push(SyntaxDefinition::parse_pushargs(y, state, contexts, namer)?) } else if let Ok(y) = get_key(map, "set", Some) { MatchOperation::Set(SyntaxDefinition::parse_pushargs(y, state, contexts, namer)?) } else if let Ok(y) = get_key(map, "embed", Some) { // Same as push so we translate it to what it would be let mut embed_escape_context_yaml = vec![]; let mut commands = Hash::new(); commands.insert( Yaml::String("meta_include_prototype".to_string()), Yaml::Boolean(false), ); embed_escape_context_yaml.push(Yaml::Hash(commands)); if let Ok(s) = get_key(map, "embed_scope", Some) { commands = Hash::new(); commands.insert(Yaml::String("meta_content_scope".to_string()), s.clone()); embed_escape_context_yaml.push(Yaml::Hash(commands)); } if let Ok(v) = get_key(map, "escape", Some) { let mut match_map = Hash::new(); match_map.insert(Yaml::String("match".to_string()), v.clone()); match_map.insert(Yaml::String("pop".to_string()), Yaml::Boolean(true)); if let Ok(y) = get_key(map, "escape_captures", Some) { match_map.insert(Yaml::String("captures".to_string()), y.clone()); } embed_escape_context_yaml.push(Yaml::Hash(match_map)); let escape_context = SyntaxDefinition::parse_context( &embed_escape_context_yaml, state, contexts, false, namer, )?; MatchOperation::Push(vec![ ContextReference::Inline(escape_context), SyntaxDefinition::parse_reference(y, state, contexts, namer, true)?, ]) } else { return Err(ParseSyntaxError::MissingMandatoryKey("escape")); } } else { MatchOperation::None }; let with_prototype = if let Ok(v) = get_key(map, "with_prototype", |x| x.as_vec()) { // should a with_prototype include the prototype? I don't think so. let subname = Self::parse_context(v, state, contexts, true, namer)?; Some(ContextReference::Inline(subname)) } else if let Ok(v) = get_key(map, "escape", Some) { let subname = namer.next(); let mut context = Context::new(false); let mut match_map = Hash::new(); match_map.insert( Yaml::String("match".to_string()), Yaml::String(format!("(?={})", v.as_str().unwrap())), ); match_map.insert(Yaml::String("pop".to_string()), Yaml::Boolean(true)); let pattern = SyntaxDefinition::parse_match_pattern(&match_map, state, contexts, namer)?; if pattern.has_captures { context.uses_backrefs = true; } context.patterns.push(Pattern::Match(pattern)); contexts.insert(subname.clone(), context); Some(ContextReference::Inline(subname)) } else { None }; let pattern = MatchPattern::new( has_captures, regex_str, scope, captures, operation, with_prototype, ); Ok(pattern) } fn parse_pushargs( y: &Yaml, state: &mut ParserState<'_>, contexts: &mut HashMap, namer: &mut ContextNamer, ) -> Result, ParseSyntaxError> { // check for a push of multiple items if y.as_vec().map_or(false, |v| { !v.is_empty() && (v[0].as_str().is_some() || (v[0].as_vec().is_some() && v[0].as_vec().unwrap()[0].as_hash().is_some())) }) { // this works because Result implements FromIterator to handle the errors y.as_vec() .unwrap() .iter() .map(|x| SyntaxDefinition::parse_reference(x, state, contexts, namer, false)) .collect() } else { let reference = SyntaxDefinition::parse_reference(y, state, contexts, namer, false)?; Ok(vec![reference]) } } fn parse_regex(raw_regex: &str, state: &ParserState<'_>) -> Result { let regex = Self::resolve_variables(raw_regex, state)?; let regex = replace_posix_char_classes(regex); let regex = if state.lines_include_newline { regex_for_newlines(regex) } else { // If the passed in strings don't include newlines (unlike Sublime) we can't match on // them using the original regex. So this tries to rewrite the regex in a way that // allows matching against lines without newlines (essentially replacing `\n` with `$`). regex_for_no_newlines(regex) }; Self::try_compile_regex(®ex)?; Ok(regex) } fn resolve_variables( raw_regex: &str, state: &ParserState<'_>, ) -> Result { let mut result = String::new(); let mut index = 0; let mut region = Region::new(); while state.variable_regex.search( raw_regex, index, raw_regex.len(), Some(&mut region), false, )? { let (begin, end) = region.pos(0).unwrap(); result.push_str(&raw_regex[index..begin]); let var_pos = region.pos(1).unwrap(); let var_name = &raw_regex[var_pos.0..var_pos.1]; let var_raw = state .variables .get(var_name) .map(String::as_ref) .unwrap_or(""); let var_resolved = Self::resolve_variables(var_raw, state)?; result.push_str(&var_resolved); index = end; } if index < raw_regex.len() { result.push_str(&raw_regex[index..]); } Ok(result) } fn try_compile_regex(regex_str: &str) -> Result<(), ParseSyntaxError> { // Replace backreferences with a placeholder value that will also appear in errors let regex_str = substitute_backrefs_in_regex(regex_str, |i| Some(format!("", i))); if let Some(error) = Regex::try_compile(®ex_str) { Err(ParseSyntaxError::RegexCompileError(regex_str, error)) } else { Ok(()) } } fn parse_captures( map: &Hash, regex_str: &str, state: &mut ParserState<'_>, ) -> Result { let valid_indexes = get_consuming_capture_indexes(regex_str); let mut captures = Vec::new(); for (key, value) in map.iter() { if let (Some(key_int), Some(val_str)) = (key.as_i64(), value.as_str()) { if valid_indexes.contains(&(key_int as usize)) { captures.push((key_int as usize, str_to_scopes(val_str, state.scope_repo)?)); } } } Ok(captures) } /// Sublime treats the top level context slightly differently from /// including the main context from other syntaxes. When main is popped /// it is immediately re-added and when it is `set` over the file level /// scope remains. This behaviour is emulated through some added contexts /// that are the actual top level contexts used in parsing. /// See for more. fn add_initial_contexts( contexts: &mut HashMap, state: &mut ParserState<'_>, top_level_scope: Scope, ) { let yaml_docs = YamlLoader::load_from_str(START_CONTEXT).unwrap(); let yaml = &yaml_docs[0]; let start_yaml: &[Yaml] = yaml["__start"].as_vec().unwrap(); SyntaxDefinition::parse_context( start_yaml, state, contexts, false, &mut ContextNamer::new("__start"), ) .unwrap(); if let Some(start) = contexts.get_mut("__start") { start.meta_content_scope = vec![top_level_scope]; } let main_yaml: &[Yaml] = yaml["__main"].as_vec().unwrap(); SyntaxDefinition::parse_context( main_yaml, state, contexts, false, &mut ContextNamer::new("__main"), ) .unwrap(); let meta_include_prototype = contexts["main"].meta_include_prototype; let meta_scope = contexts["main"].meta_scope.clone(); let meta_content_scope = contexts["main"].meta_content_scope.clone(); if let Some(outer_main) = contexts.get_mut("__main") { outer_main.meta_include_prototype = meta_include_prototype; outer_main.meta_scope = meta_scope; outer_main.meta_content_scope = meta_content_scope; } // add the top_level_scope as a meta_content_scope to main so // pushes from other syntaxes add the file scope // TODO: this order is not quite correct if main also has a meta_scope if let Some(main) = contexts.get_mut("main") { main.meta_content_scope.insert(0, top_level_scope); } } } struct ContextNamer { name: String, anonymous_index: Option, } impl ContextNamer { fn new(name: &str) -> ContextNamer { ContextNamer { name: name.to_string(), anonymous_index: None, } } fn next(&mut self) -> String { let name = if let Some(index) = self.anonymous_index { format!("#anon_{}_{}", self.name, index) } else { self.name.clone() }; self.anonymous_index = Some(self.anonymous_index.map(|i| i + 1).unwrap_or(0)); name } } /// In fancy-regex, POSIX character classes only match ASCII characters. /// /// Sublime's syntaxes expect them to match Unicode characters as well, so transform them to /// corresponding Unicode character classes. fn replace_posix_char_classes(regex: String) -> String { regex .replace("[:alpha:]", r"\p{L}") .replace("[:alnum:]", r"\p{L}\p{N}") .replace("[:lower:]", r"\p{Ll}") .replace("[:upper:]", r"\p{Lu}") .replace("[:digit:]", r"\p{Nd}") } /// Some of the regexes include `$` and expect it to match end of line, /// e.g. *before* the `\n` in `test\n`. /// /// In fancy-regex, `$` means end of text by default, so that would /// match *after* `\n`. Using `(?m:$)` instead means it matches end of line. /// /// Note that we don't want to add a `(?m)` in the beginning to change the /// whole regex because that would also change the meaning of `^`. In /// fancy-regex, that also matches at the end of e.g. `test\n` which is /// different from onig. It would also change `.` to match more. fn regex_for_newlines(regex: String) -> String { if !regex.contains('$') { return regex; } let rewriter = RegexRewriterForNewlines { parser: Parser::new(regex.as_bytes()), }; rewriter.rewrite() } struct RegexRewriterForNewlines<'a> { parser: Parser<'a>, } impl<'a> RegexRewriterForNewlines<'a> { fn rewrite(mut self) -> String { let mut result = Vec::new(); while let Some(c) = self.parser.peek() { match c { b'$' => { self.parser.next(); result.extend_from_slice(br"(?m:$)"); } b'\\' => { self.parser.next(); result.push(c); if let Some(c2) = self.parser.peek() { self.parser.next(); result.push(c2); } } b'[' => { let (mut content, _) = self.parser.parse_character_class(); result.append(&mut content); } _ => { self.parser.next(); result.push(c); } } } String::from_utf8(result).unwrap() } } /// Rewrite a regex that matches `\n` to one that matches `$` (end of line) instead. /// That allows the regex to be used to match lines that don't include a trailing newline character. /// /// The reason we're doing this is because the regexes in the syntax definitions assume that the /// lines that are being matched on include a trailing newline. /// /// Note that the rewrite is just an approximation and there's a couple of cases it can not handle, /// due to `$` being an anchor whereas `\n` matches a character. fn regex_for_no_newlines(regex: String) -> String { if !regex.contains(r"\n") { return regex; } // A special fix to rewrite a pattern from the `Rd` syntax that the RegexRewriter can not // handle properly. let regex = regex.replace("(?:\\n)?", "(?:$|)"); let rewriter = RegexRewriterForNoNewlines { parser: Parser::new(regex.as_bytes()), }; rewriter.rewrite() } struct RegexRewriterForNoNewlines<'a> { parser: Parser<'a>, } impl<'a> RegexRewriterForNoNewlines<'a> { fn rewrite(mut self) -> String { let mut result = Vec::new(); while let Some(c) = self.parser.peek() { match c { b'\\' => { self.parser.next(); if let Some(c2) = self.parser.peek() { self.parser.next(); // Replacing `\n` with `$` in `\n?` or `\n+` would make parsing later fail // with "target of repeat operator is invalid" let c3 = self.parser.peek(); if c2 == b'n' && c3 != Some(b'?') && c3 != Some(b'+') && c3 != Some(b'*') { result.extend_from_slice(b"$"); } else { result.push(c); result.push(c2); } } else { result.push(c); } } b'[' => { let (mut content, matches_newline) = self.parser.parse_character_class(); if matches_newline && self.parser.peek() != Some(b'?') { result.extend_from_slice(b"(?:"); result.append(&mut content); result.extend_from_slice(br"|$)"); } else { result.append(&mut content); } } _ => { self.parser.next(); result.push(c); } } } String::from_utf8(result).unwrap() } } fn get_consuming_capture_indexes(regex: &str) -> Vec { let parser = ConsumingCaptureIndexParser { parser: Parser::new(regex.as_bytes()), }; parser.get_consuming_capture_indexes() } struct ConsumingCaptureIndexParser<'a> { parser: Parser<'a>, } impl<'a> ConsumingCaptureIndexParser<'a> { /// Find capture groups which are not inside lookarounds. /// /// If, in a YAML syntax definition, a scope stack is applied to a capture group inside a /// lookaround, (i.e. "captures:\n x: scope.stack goes.here", where "x" is the number of a /// capture group in a lookahead/behind), those those scopes are not applied, so no need to /// even parse them. fn get_consuming_capture_indexes(mut self) -> Vec { let mut result = Vec::new(); let mut stack = Vec::new(); let mut cap_num = 0; let mut in_lookaround = false; stack.push(in_lookaround); result.push(cap_num); while let Some(c) = self.parser.peek() { match c { b'\\' => { self.parser.next(); self.parser.next(); } b'[' => { self.parser.parse_character_class(); } b'(' => { self.parser.next(); // add the current lookaround state to the stack so we can just pop at a closing paren stack.push(in_lookaround); if let Some(c2) = self.parser.peek() { if c2 != b'?' { // simple numbered capture group cap_num += 1; // if we are not currently in a lookaround, // add this capture group number to the valid ones if !in_lookaround { result.push(cap_num); } } else { self.parser.next(); if let Some(c3) = self.parser.peek() { self.parser.next(); if c3 == b'=' || c3 == b'!' { // lookahead in_lookaround = true; } else if c3 == b'<' { if let Some(c4) = self.parser.peek() { if c4 == b'=' || c4 == b'!' { self.parser.next(); // lookbehind in_lookaround = true; } } } else if c3 == b'P' { if let Some(c4) = self.parser.peek() { if c4 == b'<' { // named capture group cap_num += 1; // if we are not currently in a lookaround, // add this capture group number to the valid ones if !in_lookaround { result.push(cap_num); } } } } } } } } b')' => { if let Some(value) = stack.pop() { in_lookaround = value; } self.parser.next(); } _ => { self.parser.next(); } } } result } } struct Parser<'a> { bytes: &'a [u8], index: usize, } impl<'a> Parser<'a> { fn new(bytes: &[u8]) -> Parser { Parser { bytes, index: 0 } } fn peek(&self) -> Option { self.bytes.get(self.index).copied() } fn next(&mut self) { self.index += 1; } fn parse_character_class(&mut self) -> (Vec, bool) { let mut content = Vec::new(); let mut negated = false; let mut nesting = 0; let mut matches_newline = false; self.next(); content.push(b'['); if let Some(b'^') = self.peek() { self.next(); content.push(b'^'); negated = true; } // An unescaped `]` is allowed after `[` or `[^` and doesn't mean the end of the class. if let Some(b']') = self.peek() { self.next(); content.push(b']'); } while let Some(c) = self.peek() { match c { b'\\' => { self.next(); content.push(c); if let Some(c2) = self.peek() { self.next(); if c2 == b'n' && !negated && nesting == 0 { matches_newline = true; } content.push(c2); } } b'[' => { self.next(); content.push(b'['); nesting += 1; } b']' => { self.next(); content.push(b']'); if nesting == 0 { break; } nesting -= 1; } _ => { self.next(); content.push(c); } } } (content, matches_newline) } } #[cfg(test)] mod tests { use super::*; use crate::parsing::Scope; #[test] fn can_parse() { let defn: SyntaxDefinition = SyntaxDefinition::load_from_str( "name: C\nscope: source.c\ncontexts: {main: []}", false, None, ) .unwrap(); assert_eq!(defn.name, "C"); assert_eq!(defn.scope, Scope::new("source.c").unwrap()); let exts_empty: Vec = Vec::new(); assert_eq!(defn.file_extensions, exts_empty); assert!(!defn.hidden); assert!(defn.variables.is_empty()); let defn2: SyntaxDefinition = SyntaxDefinition::load_from_str( " name: C scope: source.c file_extensions: [c, h] hidden_file_extensions: [k, l] hidden: true variables: ident: '[QY]+' contexts: prototype: - match: lol scope: source.php main: - match: \\b(if|else|for|while|{{ident}})\\b scope: keyword.control.c keyword.looping.c captures: 1: meta.preprocessor.c++ 2: keyword.control.include.c++ push: [string, 'scope:source.c#main', 'CSS.sublime-syntax#rule-list-body'] with_prototype: - match: wow pop: true - match: '\"' push: string string: - meta_scope: string.quoted.double.c - meta_include_prototype: false - match: \\\\. scope: constant.character.escape.c - match: '\"' pop: true ", false, None, ) .unwrap(); assert_eq!(defn2.name, "C"); let top_level_scope = Scope::new("source.c").unwrap(); assert_eq!(defn2.scope, top_level_scope); let exts: Vec = vec!["c", "h", "k", "l"] .into_iter() .map(String::from) .collect(); assert_eq!(defn2.file_extensions, exts); assert!(defn2.hidden); assert_eq!(defn2.variables.get("ident").unwrap(), "[QY]+"); let n: Vec = Vec::new(); println!("{:?}", defn2); // unreachable!(); let main = &defn2.contexts["main"]; assert_eq!(main.meta_content_scope, vec![top_level_scope]); assert_eq!(main.meta_scope, n); assert!(main.meta_include_prototype); assert_eq!(defn2.contexts["__main"].meta_content_scope, n); assert_eq!( defn2.contexts["__start"].meta_content_scope, vec![top_level_scope] ); assert_eq!( defn2.contexts["string"].meta_scope, vec![Scope::new("string.quoted.double.c").unwrap()] ); let first_pattern: &Pattern = &main.patterns[0]; match *first_pattern { Pattern::Match(ref match_pat) => { let m: &CaptureMapping = match_pat.captures.as_ref().expect("test failed"); assert_eq!( &m[0], &(1, vec![Scope::new("meta.preprocessor.c++").unwrap()]) ); use crate::parsing::syntax_definition::ContextReference::*; // this is sadly necessary because Context is not Eq because of the Regex let expected = MatchOperation::Push(vec![ Named("string".to_owned()), ByScope { scope: Scope::new("source.c").unwrap(), sub_context: Some("main".to_owned()), with_escape: false, }, File { name: "CSS".to_owned(), sub_context: Some("rule-list-body".to_owned()), with_escape: false, }, ]); assert_eq!( format!("{:?}", match_pat.operation), format!("{:?}", expected) ); assert_eq!( match_pat.scope, vec![ Scope::new("keyword.control.c").unwrap(), Scope::new("keyword.looping.c").unwrap() ] ); assert!(match_pat.with_prototype.is_some()); } _ => unreachable!(), } } #[test] fn can_parse_embed_as_with_prototypes() { let old_def = SyntaxDefinition::load_from_str(r#" name: C scope: source.c file_extensions: [c, h] variables: ident: '[QY]+' contexts: main: - match: '(>)\s*' captures: 1: meta.tag.style.begin.html punctuation.definition.tag.end.html push: - [{ meta_include_prototype: false }, { meta_content_scope: 'source.css.embedded.html' }, { match: '(?i)(?=)\s*' captures: 1: meta.tag.style.begin.html punctuation.definition.tag.end.html embed: scope:source.css embed_scope: source.css.embedded.html escape: (?i)(?=)\s*' captures: 1: meta.tag.style.begin.html punctuation.definition.tag.end.html embed: scope:source.css embed_scope: source.css.embedded.html "#, false, None, ); assert!(def.is_err()); match def.unwrap_err() { ParseSyntaxError::MissingMandatoryKey(key) => assert_eq!(key, "escape"), _ => unreachable!("Got unexpected ParseSyntaxError"), } } #[test] fn errors_on_regex_compile_error() { let def = SyntaxDefinition::load_from_str( r#" name: C scope: source.c file_extensions: [test] contexts: main: - match: '[a' scope: keyword.name "#, false, None, ); assert!(def.is_err()); match def.unwrap_err() { ParseSyntaxError::RegexCompileError(ref regex, _) => assert_eq!("[a", regex), _ => unreachable!("Got unexpected ParseSyntaxError"), } } #[test] fn can_parse_ugly_yaml() { let defn: SyntaxDefinition = SyntaxDefinition::load_from_str( " name: LaTeX scope: text.tex.latex contexts: main: - match: '((\\\\)(?:framebox|makebox))\\b' captures: 1: support.function.box.latex 2: punctuation.definition.backslash.latex push: - [{meta_scope: meta.function.box.latex}, {match: '', pop: true}] - argument - optional-arguments argument: - match: '\\{' scope: punctuation.definition.group.brace.begin.latex - match: '(?=\\S)' pop: true optional-arguments: - match: '(?=\\S)' pop: true ", false, None, ) .unwrap(); assert_eq!(defn.name, "LaTeX"); let top_level_scope = Scope::new("text.tex.latex").unwrap(); assert_eq!(defn.scope, top_level_scope); let first_pattern: &Pattern = &defn.contexts["main"].patterns[0]; match *first_pattern { Pattern::Match(ref match_pat) => { let m: &CaptureMapping = match_pat.captures.as_ref().expect("test failed"); assert_eq!( &m[0], &(1, vec![Scope::new("support.function.box.latex").unwrap()]) ); //use parsing::syntax_definition::ContextReference::*; // TODO: check the first pushed reference is Inline(...) and has a meta_scope of meta.function.box.latex // TODO: check the second pushed reference is Named("argument".to_owned()) // TODO: check the third pushed reference is Named("optional-arguments".to_owned()) assert!(match_pat.with_prototype.is_none()); } _ => unreachable!(), } } #[test] fn names_anonymous_contexts() { let def = SyntaxDefinition::load_from_str( r#" scope: source.c contexts: main: - match: a push: a a: - meta_scope: a - match: x push: - meta_scope: anonymous_x - match: anything push: - meta_scope: anonymous_x_2 - match: y push: - meta_scope: anonymous_y - match: z escape: 'test' "#, false, None, ) .unwrap(); assert_eq!(def.contexts["a"].meta_scope, vec![Scope::new("a").unwrap()]); assert_eq!( def.contexts["#anon_a_0"].meta_scope, vec![Scope::new("anonymous_x").unwrap()] ); assert_eq!( def.contexts["#anon_a_1"].meta_scope, vec![Scope::new("anonymous_x_2").unwrap()] ); assert_eq!( def.contexts["#anon_a_2"].meta_scope, vec![Scope::new("anonymous_y").unwrap()] ); assert_eq!(def.contexts["#anon_a_3"].patterns.len(), 1); // escape } #[test] fn can_use_fallback_name() { let def = SyntaxDefinition::load_from_str( r#" scope: source.c contexts: main: - match: '' "#, false, Some("C"), ); assert_eq!(def.unwrap().name, "C"); } #[test] fn can_rewrite_regex_for_newlines() { fn rewrite(s: &str) -> String { regex_for_newlines(s.to_string()) } assert_eq!(&rewrite(r"a"), r"a"); assert_eq!(&rewrite(r"\b"), r"\b"); assert_eq!(&rewrite(r"(a)"), r"(a)"); assert_eq!(&rewrite(r"[a]"), r"[a]"); assert_eq!(&rewrite(r"[^a]"), r"[^a]"); assert_eq!(&rewrite(r"[]a]"), r"[]a]"); assert_eq!(&rewrite(r"[[a]]"), r"[[a]]"); assert_eq!(&rewrite(r"^"), r"^"); assert_eq!(&rewrite(r"$"), r"(?m:$)"); assert_eq!(&rewrite(r"^ab$"), r"^ab(?m:$)"); assert_eq!(&rewrite(r"\^ab\$"), r"\^ab\$"); assert_eq!(&rewrite(r"(//).*$"), r"(//).*(?m:$)"); // Do not rewrite this `$` because it's in a char class and doesn't mean end of line assert_eq!(&rewrite(r"[a$]"), r"[a$]"); } #[test] fn can_rewrite_regex_for_no_newlines() { fn rewrite(s: &str) -> String { regex_for_no_newlines(s.to_string()) } assert_eq!(&rewrite(r"a"), r"a"); assert_eq!(&rewrite(r"\b"), r"\b"); assert_eq!(&rewrite(r"(a)"), r"(a)"); assert_eq!(&rewrite(r"[a]"), r"[a]"); assert_eq!(&rewrite(r"[^a]"), r"[^a]"); assert_eq!(&rewrite(r"[]a]"), r"[]a]"); assert_eq!(&rewrite(r"[[a]]"), r"[[a]]"); assert_eq!(&rewrite(r"\n"), r"$"); assert_eq!(&rewrite(r"\[\n"), r"\[$"); assert_eq!(&rewrite(r"a\n?"), r"a\n?"); assert_eq!(&rewrite(r"a\n+"), r"a\n+"); assert_eq!(&rewrite(r"a\n*"), r"a\n*"); assert_eq!(&rewrite(r"[abc\n]"), r"(?:[abc\n]|$)"); assert_eq!(&rewrite(r"[^\n]"), r"[^\n]"); assert_eq!(&rewrite(r"[^]\n]"), r"[^]\n]"); assert_eq!(&rewrite(r"[\n]?"), r"[\n]?"); // Removing the `\n` might result in an empty character class, so we should leave it. assert_eq!(&rewrite(r"[\n]"), r"(?:[\n]|$)"); assert_eq!(&rewrite(r"[]\n]"), r"(?:[]\n]|$)"); // In order to properly understand nesting, we'd have to have a full parser, so ignore it. assert_eq!(&rewrite(r"[[a]&&[\n]]"), r"[[a]&&[\n]]"); assert_eq!(&rewrite(r"ab(?:\n)?"), r"ab(?:$|)"); assert_eq!(&rewrite(r"(?bar))"; println!("{:?}", regex); let valid_indexes = get_consuming_capture_indexes(regex); println!("{:?}", valid_indexes); assert_eq!(valid_indexes, [0, 1, 3, 4]); } #[test] fn can_get_valid_captures_from_regex2() { let regex = "hello(test)[(?=tricked](foo(bar))"; println!("{:?}", regex); let valid_indexes = get_consuming_capture_indexes(regex); println!("{:?}", valid_indexes); assert_eq!(valid_indexes, [0, 1, 2, 3]); } #[test] fn can_get_valid_captures_from_nested_regex() { let regex = "hello(test)(?=(world(?!(te(?<=(st))))))(foo(bar))"; println!("{:?}", regex); let valid_indexes = get_consuming_capture_indexes(regex); println!("{:?}", valid_indexes); assert_eq!(valid_indexes, [0, 1, 5, 6]); } } syntect-no-panic-6.0.0/src/util.rs000064400000000000000000000322501046102023000151360ustar 00000000000000//! Convenient helper functions for common use cases: //! * Printing to terminal //! * Iterating lines with `\n`s //! * Modifying ranges of highlighted output use crate::highlighting::{Color, Style, StyleModifier}; #[cfg(feature = "parsing")] use crate::parsing::ScopeStackOp; use std::fmt::Write; use std::ops::Range; #[inline] fn blend_fg_color(fg: Color, bg: Color) -> Color { if fg.a == 0xff { return fg; } let ratio = fg.a as u32; let r = (fg.r as u32 * ratio + bg.r as u32 * (255 - ratio)) / 255; let g = (fg.g as u32 * ratio + bg.g as u32 * (255 - ratio)) / 255; let b = (fg.b as u32 * ratio + bg.b as u32 * (255 - ratio)) / 255; Color { r: r as u8, g: g as u8, b: b as u8, a: 255, } } /// Formats the styled fragments using 24-bit color terminal escape codes. /// Meant for debugging and testing. /// /// This function is currently fairly inefficient in its use of escape codes. /// /// Note that this does not currently ever un-set the color so that the end of a line will also get /// highlighted with the background. This means if you might want to use `println!("\x1b[0m");` /// after to clear the coloring. /// /// If `bg` is true then the background is also set pub fn as_24_bit_terminal_escaped(v: &[(Style, &str)], bg: bool) -> String { let mut s: String = String::new(); for &(ref style, text) in v.iter() { if bg { write!( s, "\x1b[48;2;{};{};{}m", style.background.r, style.background.g, style.background.b ) .unwrap(); } let fg = blend_fg_color(style.foreground, style.background); write!(s, "\x1b[38;2;{};{};{}m{}", fg.r, fg.g, fg.b, text).unwrap(); } // s.push_str("\x1b[0m"); s } const LATEX_REPLACE: [(&str, &str); 3] = [("\\", "\\\\"), ("{", "\\{"), ("}", "\\}")]; /// Formats the styled fragments using LaTeX textcolor directive. /// /// Usage is similar to the `as_24_bit_terminal_escaped` function: /// /// ``` /// use syntect::easy::HighlightLines; /// use syntect::parsing::SyntaxSet; /// use syntect::highlighting::{ThemeSet,Style}; /// use syntect::util::{as_latex_escaped,LinesWithEndings}; /// /// // Load these once at the start of your program /// let ps = SyntaxSet::load_defaults_newlines(); /// let ts = ThemeSet::load_defaults(); /// /// let syntax = ps.find_syntax_by_extension("rs").unwrap(); /// let s = "pub struct Wow { hi: u64 }\nfn blah() -> u64 {}\n"; /// /// let mut h = HighlightLines::new(syntax, &ts.themes["InspiredGitHub"]); /// for line in LinesWithEndings::from(s) { // LinesWithEndings enables use of newlines mode /// let ranges: Vec<(Style, &str)> = h.highlight_line(line, &ps).unwrap(); /// let escaped = as_latex_escaped(&ranges[..]); /// println!("{}", escaped); /// } /// ``` /// /// Returned content is intended to be placed inside a fancyvrb /// Verbatim environment: /// /// ```latex /// \usepackage{fancyvrb} /// \usepackage{xcolor} /// % ... /// % enable comma-separated arguments inside \textcolor /// \makeatletter /// \def\verbatim@nolig@list{\do\`\do\<\do\>\do\'\do\-} /// \makeatother /// % ... /// \begin{Verbatim}[commandchars=\\\{\}] /// % content goes here /// \end{Verbatim} /// ``` /// /// Background color is ignored. pub fn as_latex_escaped(v: &[(Style, &str)]) -> String { let mut s: String = String::new(); let mut prev_style: Option